Ich möchte einen Linux-Build automatisieren, komme aber irgendwann zu einem Punkt, an dem ich einen scheinbar sehr manuellen Schritt ausführen muss : make menuconfig
. Dies scheint Konfigurationen zwischen dem Betriebssystem und Kernel-Konfigurationen zu synchronisieren?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Wie kann ich den Aufruf make menuconfig
für ein Build-Skript entfernen ?
Abgesehen davon ist dies eine Reaktion auf einen Build-Fehler, der anscheinend auftritt, wenn ich make aufführe, ohne jemals make menuconfig aufzurufen:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Es scheint eine fehlende Regel in einem Makefile zu geben, möglicherweise weil das Makefile selbst NICHT existiert oder das Makefile nicht generiert / verwandelt wurde, um diese Regel zu enthalten, aber das ist eine separate Frage.
Es könnte einen klügeren Weg geben, dies alles zusammen anzugehen. Gibt es andere Konfigurationen, die ich nicht verfolge, aber sollte (z. B. oldconfig)?
quelle
make olddefconfig
?Antworten:
Das Linux-Kernel-Build-System bietet viele Build-Ziele. Der beste Weg, dies zu erfahren, ist wahrscheinlich
make help
:Wie Jimij in den Kommentaren sagt, sind die interessanten Teile in den
oldconfig
verwandten Zielen.Persönlich würde ich Ihnen empfehlen, sich zu entscheiden
silentoldconfig
(wenn sich nichts an der.config
Datei geändert hat oderolddefconfig
wenn Sie Ihre.config
Datei mit einem neuen Kernel aktualisiert haben .quelle
randconfig
überraschte mich. Vermutlich zum Testen von Builds durch Generieren unwahrscheinlicher Kombinationen verwendet?make randconfig
? (auf der 'Ask Ubuntu'-Website).merge_config.sh
KonfigurationsfragmenteProzess Substitution ist nicht funktioniert leider:
wegen: /unix//a/164109/32558
merge_config.sh
ist ein einfaches Frontend für dasmake alldefconfig
Ziel.Beim Cross-Compilieren
ARCH
muss beim Ausführen exportiert werdenmerge_config.sh
, zB:Die zusammengeführte Ausgabedatei kann explizit mit der
KCONFIG_CONFIG
Umgebungsvariablen angegeben werden. sonst überschreibt es nur.config
:Buildroot automatisiert es mit
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
: /programming/1414968/how-do-i-configure-the-linux-kernel-within-buildrootVerwandte: /programming/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file
quelle
Ich hatte das gleiche Problem, da ich meinen CentOS-Kernel aktualisieren wollte und dies auf mehreren Computern tun musste. Angenommen, mein neuer CentOS-Kernelbaum befindet sich in /linux-5.1 (ich bin im Root-Konto angemeldet).
cd /linux-5.1
make menuconfig
Ihre Änderungen aus und speichern Sie sie unter.config
/linux-5.1/.config
Datei auf Ihren Entwicklungsserver.config
Datei von Ihrem Entwicklungsserver/linux-5.1/.config
auf den neuen Computer.Hoffe, das hilft jemandem in der gleichen Situation.
quelle