Modification sécurisée de la configuration du noyau Linux par programmation

8

J'écris un script qui doit changer automatiquement un certain nombre d'options de configuration du noyau Linux en fonction d'un fichier d'entrée.
La façon la plus simple de le faire serait bien sûr de modifier directement le fichier .config, mais cela est déconseillé et peut entraîner des problèmes.
Je n'arrive pas à trouver un moyen de faire cela "de la bonne façon".

«faire de l'aide» ne montre pas un moyen de modifier des options uniques, ni ./scripts/kconfig/conf --help. Ce fichier sur kernel.org ne semble pas non plus avoir de moyen.
Même le Genkernel de Gentoo modifie manuellement le fichier .config.

Donc, fondamentalement:
existe-t-il un moyen sûr de modifier les options de configuration du noyau par programme, avec suivi des dépendances, etc.?
Kconfig peut-il être exécuté manuellement pour y parvenir?

SharkWipf
la source

Réponses:

3

Ce que je fais, c'est d'abord:

make defconfig

Ensuite, ajoutez les modifications de paramètres à .config:

make olddefconfig

Cela devrait "corriger" toute incohérence introduite dans la configuration. YMMV car il ne peut pas les corriger de la manière que vous attendez.

DépriméDaniel
la source
Merci pour votre réponse! J'ai envisagé de le faire, mais comme vous l'avez dit, YMMV. S'il y a 2 options conflictuelles, on ne sait pas laquelle il résoudra.
SharkWipf
@SharkWipf Eh bien, en tout cas, je m'attendrais à ce que le résultat soit déterministe. Donc, si le résultat n'est pas ce que vous voulez, ajoutez simplement une autre déclaration désactivant la chose en conflit et répétez ce processus jusqu'à ce qu'il fonctionne.
DepressedDaniel
C'est vrai, mais cela pourrait gâcher d'autres options d'une manière que je ne peux pas vérifier, et comme je veux finalement mettre ce script sur github, je voudrais qu'il soit aussi stable et fiable que possible. Généralement, ce script sera utilisé pour modifier les configurations de noyau existantes, faites par l'utilisateur, plutôt que d'en générer de nouvelles, il est donc difficile de le faire fonctionner de manière fiable de cette façon.
SharkWipf
@SharkWipf Eh bien, il semble que ce que vous essayez de réaliser nécessite une sorte d'intelligence artificielle;) La solution conventionnelle est de fournir une valeur par défaut qui fonctionne et de laisser les gens personnaliser s'ils osent.
DepressedDaniel
si je veux le faire complètement manuellement, oui. Mais j'espérais qu'il y aurait un moyen d'utiliser Kconfig pour simuler "cocher une case" dans menuconfig, car il semble que cela devrait être une chose. Fondamentalement, ce que je veux faire est de permettre aux utilisateurs de copier les exigences du noyau à partir du wiki Gentoo, de résoudre cela aux bonnes valeurs de configuration lorsque cela est possible (assez facile), puis de mettre à jour la configuration en conséquence (après un examen utilisateur bien sûr). Il n'y a donc pas de "valeurs par défaut" dans ce cas.
SharkWipf
0

J'irais pour un patch du fichier .config. Les étapes à suivre pour le préparer sont

cp .config .config.bck
make menuconfig # Here change all that you need to fit your needs
diff -u .config.bck .config > myconfig.$(kern_vers).patch

Ensuite, dans votre script, ajoutez cette ligne

patch .config myconfig.$(kern_vers).patch
debuti
la source