web-dev-qa-db-fra.com

Répondre automatiquement aux valeurs par défaut lors de l'exécution de «make oldconfig» sur une arborescence du noyau

Lors de la construction d'un nouveau noyau basé sur une configuration précédente, existe-t-il un moyen d'automatiser le make oldconfig processus de sorte qu'il définit les nouvelles options à leurs valeurs par défaut?

Edit: Ce que je veux dire, c'est que lorsque vous utilisez un .config (de /boot/config-* ou /proc/config.gz) sur un noyau plus récent, le make oldconfig le processus vous demandera 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 la valeur par défaut. Je souhaite accepter automatiquement les valeurs par défaut sans interaction avec l'utilisateur.

36

Utilisez la commande:

yes "" | make oldconfig

La commande "oui" affiche à plusieurs reprises une ligne avec toute la chaîne spécifiée, ou "y" par défaut.

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

38
Laurent Parenteau
make olddefconfig

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

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

60
Flow

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

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

Enfin, s'il est compilé dans le noyau que vous exécutez, 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 /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (ou le chemin approprié). Vous pouvez utiliser certaines de leurs recommandations pour écrire une solution. J'utiliserais une combinaison de scripts et de textutils pour accomplir ce que vous décrivez.

Édition 2

Comme note supplémentaire, c'est une mauvaise idée. Que se passe-t-il si la prise en charge matérielle en option unique à votre environnement change mais n'est pas par défaut? Que se passe-t-il si des changements ayant un impact négatif se produisent? C'est vraiment quelque chose qui devrait être interactif. Vous pouvez faire la configuration et automatiser le reste.

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

0
Warner

make silentoldconfig

0
Mike Nelson

Bien qu'il s'agisse d'une vieille question, je n'ai jamais trouvé de bonne réponse à la question d'OP.

J'ai trouvé un autre moyen de contourner les questions interactives; plutôt que de patcher .config, je patche le fichier defconfig, c'est-à-dire.

make Arch=arm mrproper
patch -N -p1 < ../../patches/autofs.patch || true
make Arch=arm xilinx_zynq_defconfig
make Arch=arm UIMAGE_LOADADDR=0x8000 uImage
make Arch=arm modules
make Arch=arm INSTALL_MOD_PATH=target modules_install

Le patch dans mon cas:

--- a/Arch/arm/configs/xilinx_zynq_defconfig    2019-12-12 08:31:42.985777534 +0100
+++ b/Arch/arm/configs/xilinx_zynq_defconfig    2019-12-12 08:31:46.695777606 +0100
@@ -221,6 +221,7 @@
 CONFIG_XILINX_PR_DECOUPLER=y
 CONFIG_EXT2_FS=y
 CONFIG_EXT3_FS=y
+CONFIG_AUTOFS4_FS=y
 # CONFIG_DNOTIFY is not set
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y

De cette façon, aucune question n'est posée.

0
Mike