Automatycznie odpowiadaj na wartości domyślne podczas wykonywania polecenia „make oldconfig” w drzewie jądra

36

Czy budując nowe jądro w oparciu o poprzednią konfigurację, istnieje sposób na zautomatyzowanie make oldconfigprocesu, aby ustawiał nowe opcje na wartości domyślne?

Edycja: Mam na myśli to, że gdy używasz .config (z /boot/config-*lub /proc/config.gz) na nowszym jądrze, make oldconfigproces zapyta czy chcesz włączyć opcje, które nie były dostępne w twoim starszym jądrze. Możesz odpowiedzieć T / n / m lub naciśnij klawisz Enter, aby zaakceptować wartość domyślną. Chciałbym automatycznie zaakceptować ustawienia domyślne bez interakcji użytkownika.

Jean-Francois Chevrette
źródło
@ jscott To tylko „naciśnij enter” dla pierwszego pytania, nie wszystkie. Możesz użyć polecenia „tak”, aby wydrukować ciąg w nieskończoność.
Laurent Parenteau

Odpowiedzi:

37

Użyj polecenia:

yes "" | make oldconfig

Polecenie „tak” wielokrotnie wyświetla wiersz ze wszystkimi określonymi ciągami lub domyślnie „y”.

Możesz więc użyć go po prostu do „wciśnięcia enter”, co spowoduje użycie domyślnej wartości dla polecenia „make oldconfig”.

Laurent Parenteau
źródło
Ahh, nie wiedziałem, że polecenie „tak” może wygenerować dowolny ciąg. Dziękuję Ci!
Jean-Francois Chevrette
3
To jest fenomenalne.
Ivan X
1
Odpowiedź jest znacznie lepszym pomysłem serverfault.com/a/538150/18822
Evan Carroll
56
make olddefconfig

jest tym, czego chcesz. Z pomocy ( make helpw katalogu źródła jądra)

olddefconfig - Taki sam jak silentoldconfig, ale ustawia nowe symbole na ich wartość domyślną

Pływ
źródło
Szukałem czegoś takiego od dłuższego czasu ... bardzo dziękuję!
Jafar Kofahi
Która wersja Linuksa to przyszła? Po prostu ciekawy. Obecnie obsługuję starą wersję (3.0) i jeszcze jej nie ma.
clacke
1
To powinna być poprawna odpowiedź.
suprjami
0

Tak. Jest przechowywany w „.config” na najwyższym poziomie katalogu źródłowego.

Dodatkowo, jeśli używasz jądra dystrybucji, niektóre dystrybucje, takie jak RedHat, przechowują go w katalogu / boot / config - $ (uname -r). (wersja jądra) [1]

Wreszcie, jeśli skompilowany w uruchomionym jądrze, jest dostępny w /proc/config.gz. Zapominam, która wersja wprowadziła tę opcję.

[1] Te opcje:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

Edytować

Sprawdź /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (lub odpowiednią ścieżkę). Możesz użyć niektórych z ich zaleceń, aby napisać rozwiązanie. Użyłbym kombinacji skryptów i textutils, aby osiągnąć to, co opisujesz.

Edytuj 2

Dodatkowo jest to zły pomysł. Co się stanie, jeśli opcjonalna obsługa sprzętu zmieni się w Twoim środowisku, ale nie będzie domyślna? Co się stanie, jeśli wystąpią negatywnie wpływające zmiany? To naprawdę powinno być interaktywne. Możesz dokonać konfiguracji i zautomatyzować resztę.

„make silentoldconfig” jest nieco mniej gadatliwy, co może być pomocne. Nadal jest interaktywny.

Warner
źródło
Nie o to mi chodzilo. Dodałem więcej szczegółów do mojego pytania, aby wyjaśnić, co chcę osiągnąć.
Jean-Francois Chevrette
0

make silentoldconfig


źródło
2
make silentoldconfig jest nadal interaktywny, jest po prostu mniej gadatliwy
Laurent Parenteau