Je veux automatiser une version Linux , mais finalement arriver à un point où je dois courir ce qui semble être une étape manuelle: make menuconfig
. Cela semble synchroniser les configurations entre le système d'exploitation et les configurations du noyau?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Fondamentalement, comment puis-je supprimer l'appel à make menuconfig
un script de génération?
En passant, ceci est en réaction à une erreur de build qui semble se produire lorsque je lance sans jamais appeler make menuconfig:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Ce qui semble être qu'il y a une règle manquante dans un makefile peut-être parce que le makefile lui-même n'existe PAS ou que le makefile n'a pas été généré / transformé pour contenir cette règle mais c'est une question distincte.
Il pourrait y avoir un moyen plus intelligent d'aborder tout cela ensemble. Y a-t-il d'autres configurations que je ne suis pas en train de suivre mais que je devrais (par exemple oldconfig)?
la source
make olddefconfig
?Réponses:
Le système de construction du noyau Linux fournit de nombreuses cibles de construction, la meilleure façon de le savoir est probablement de faire
make help
:Comme le dit jimmij dans les commentaires, les parties intéressantes se trouvent dans les
oldconfig
cibles associées.Personnellement, je vous recommanderais d'y aller
silentoldconfig
(si rien n'a changé dans le.config
fichier ouolddefconfig
si vous avez mis à jour votre.config
fichier avec un nouveau noyau.la source
randconfig
m'a surpris. Vraisemblablement utilisé pour tester des builds en générant des combinaisons improbables?make randconfig
? (sur le site 'Ask Ubuntu').merge_config.sh
fragments de configurationLa substitution de processus ne pas fonctionne malheureusement:
à cause de: https://unix.stackexchange.com/a/164109/32558
merge_config.sh
est un simple frontal pour lamake alldefconfig
cible.Lors de la compilation croisée,
ARCH
doit être exporté lorsque vous exécutezmerge_config.sh
, par exemple:Le fichier de sortie fusionné peut être spécifié explicitement avec la
KCONFIG_CONFIG
variable d'environnement; sinon, il écrase simplement.config
:Buildroot l'automatise avec
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
: /programming/1414968/how-do-i-configure-the-linux-kernel-within-buildrootEn relation: /programming/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file
la source
J'ai eu ce même problème car je voulais mettre à niveau mon noyau CentOS et je devais le faire sur plusieurs machines. Supposons ici que ma nouvelle arborescence de noyau CentOS se trouve dans /linux-5.1 (je suis connecté au compte root)
cd /linux-5.1
make menuconfig
et apporter vos modifications et les enregistrer dans.config
/linux-5.1/.config
fichier sur votre serveur de développement.config
fichier de votre serveur de développement vers/linux-5.1/.config
sur la nouvelle machine.J'espère que cela aide quelqu'un dans la même situation.
la source