Répondre automatiquement aux valeurs par défaut lorsque vous effectuez 'make oldconfig' sur une arborescence du noyau

36

Lors de la construction d'un nouveau noyau basé sur une configuration précédente, existe-t-il un moyen d'automatiser le make oldconfigprocessus pour qu'il attribue aux nouvelles options leurs valeurs par défaut?

Edit: Ce que je veux dire, c’est que lorsqu’on utilise un fichier .config (from /boot/config-*ou /proc/config.gz) sur un noyau plus récent, le make oldconfigprocessus vous demande si vous souhaitez ou non activer les options qui n’étaient pas disponibles dans votre ancien noyau. Vous pouvez répondre O / n / m ou appuyer sur Entrée pour accepter les valeurs par défaut. J'aimerais accepter les valeurs par défaut automatiquement, sans interaction de l'utilisateur.

Jean-François Chevrette
la source
@jscott Cela ne ferait que "appuyer sur Entrée" pour la première question, pas toutes. Vous pouvez utiliser la commande "oui" pour imprimer une chaîne de façon indéfinie.
Laurent Parenteau

Réponses:

37

Utilisez la commande:

yes "" | make oldconfig

La commande "yes" génère plusieurs fois une ligne avec toute la chaîne spécifiée, ou "y" par défaut.

Vous pouvez donc l'utiliser simplement pour "appuyer sur Entrée", ce qui entraînera l'utilisation de la valeur par défaut pour la commande "make oldconfig".

Laurent Parenteau
la source
Ahh, je ne savais pas que la commande "oui" pouvait générer n'importe quelle chaîne. Merci!
Jean-François Chevrette le
3
C'est phénoménal.
Ivan X
1
La réponse est une bien meilleure idée serverfault.com/a/538150/18822
Evan Carroll
56
make olddefconfig

c'est ce que tu veux. Depuis l'aide ( make helpdans le répertoire source du noyau)

olddefconfig - Identique à silentoldconfig mais définit les nouveaux symboles à leur valeur par défaut

Couler
la source
Je cherche quelque chose comme ça depuis un moment ... merci beaucoup!
Jafar Kofahi
Quelle version de Linux est-ce arrivé? Juste curieux. Je gère actuellement une ancienne version (3.0) et elle ne l'a pas encore.
Clacke
1
Cela devrait être la bonne réponse.
suprjami
0

Oui. Il est stocké dans ".config" dans le niveau supérieur du répertoire source.

De plus, si vous utilisez un noyau de distribution, certaines distributions telles que RedHat le stockent dans / boot / config - $ (uname -r). (version du noyau) [1]

Enfin, si compilé dans le noyau que vous utilisez, il est disponible dans /proc/config.gz. J'oublie quelle version a introduit cette option.

[1] Ces options:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

modifier

Consultez le fichier /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (ou le chemin approprié). Vous pouvez utiliser certaines de leurs recommandations pour scripter une solution. J'utiliserais une combinaison de scripts et de textutils pour accomplir ce que vous décrivez.

Modifier 2

En guise de note supplémentaire, c'est une mauvaise idée. Que se passe-t-il si la prise en charge matérielle facultative propre à votre environnement change, mais qu’elle n’est pas configurée par défaut? Que se passe-t-il si un changement ayant un impact négatif se produit? C'est vraiment quelque chose qui devrait être interactif. Vous pouvez faire la config et automatiser le reste.

"make silentoldconfig" est un peu moins détaillé, ce qui pourrait être utile. C'est toujours interactif.

Warner
la source
Ce n'est pas ce que je voulais dire. J'ai ajouté plus de détails à ma question pour expliquer ce que je veux réaliser.
Jean-François Chevrette le
0

make silentoldconfig


la source
2
make silentoldconfig est toujours interactif, il est juste moins bavard
Laurent Parenteau