Chcę zautomatyzować kompilacji Linuksa, ale w końcu dostać się do punktu, w którym trzeba uruchomić, co wydaje się być bardzo instrukcja krok: make menuconfig
. To wydaje się synchronizować konfiguracje między systemem operacyjnym a konfiguracjami jądra?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Zasadniczo, jak mogę usunąć wezwanie do make menuconfig
skryptu kompilacji?
Nawiasem mówiąc, jest to reakcja na błąd kompilacji, który wydaje się występować, gdy uruchamiam się bez wywoływania make menuconfig:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Wydaje się, że brakuje w pliku makefile pewnej reguły, być może dlatego, że sam plik makefile NIE istnieje lub plik makefile nie został wygenerowany / przekształcony, aby zawierał tę regułę, ale jest to osobne pytanie.
Może istnieć mądrzejszy sposób na zbliżenie się do tego wszystkiego. Czy są inne konfiguracje, których nie śledzę, ale powinienem (np. Oldconfig)?
źródło
make olddefconfig
?Odpowiedzi:
System kompilacji jądra Linux zapewnia wiele celów kompilacji, najlepszym sposobem, aby się o tym dowiedzieć, jest prawdopodobnie
make help
:Jak mówi jimmij w komentarzach, interesujące części znajdują się w
oldconfig
powiązanych celach.Osobiście polecam Ci przejść
silentoldconfig
(jeśli nic nie zmieniło się w.config
pliku lubolddefconfig
jeśli zaktualizowałeś.config
plik za pomocą nowego jądra).źródło
randconfig
zaskoczyło mnie. Prawdopodobnie używany do testowania kompilacji przez generowanie nieprawdopodobnych kombinacji?make randconfig
? (na stronie internetowej „Zapytaj Ubuntu”).merge_config.sh
fragmenty konfiguracjiProces zastępowania nie działa niestety:
z powodu: https://unix.stackexchange.com/a/164109/32558
merge_config.sh
to prosty interfejs dlamake alldefconfig
celu.Podczas kompilacji krzyżowej
ARCH
należy go wyeksportować po uruchomieniumerge_config.sh
, np .:Scalony plik wyjściowy można jawnie określić za pomocą
KCONFIG_CONFIG
zmiennej środowiskowej; w przeciwnym razie po prostu nadpisze.config
:Buildroot automatyzuje to za pomocą
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
: /programming/1414968/how-do-i-configure-the-linux-kernel-within-buildrootPowiązane: /programming/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file
źródło
Miałem ten sam problem, ponieważ chciałem zaktualizować jądro CentOS i musiałem to zrobić na kilku komputerach. Załóżmy, że moje nowe drzewo jądra CentOS znajduje się w /linux-5.1 (jestem zalogowany do konta root)
cd /linux-5.1
make menuconfig
i wprowadź zmiany i zapisz je w.config
/linux-5.1/.config
plik na serwer programistyczny.config
plik z serwera/linux-5.1/.config
programistycznego na nowy komputer.Mam nadzieję, że to pomoże komuś w takiej samej sytuacji.
źródło