Beantworten Sie die Standardeinstellungen automatisch, wenn Sie 'make oldconfig' in einem Kernelbaum ausführen

36

Gibt es eine Möglichkeit, beim Erstellen eines neuen Kernels auf der Grundlage einer früheren Konfiguration den make oldconfigProzess zu automatisieren , sodass neue Optionen auf ihre Standardwerte gesetzt werden?

Bearbeiten: Ich meine, wenn Sie eine .config (von /boot/config-*oder /proc/config.gz) auf einem neueren Kernel verwenden, make oldconfigwerden Sie gefragt, ob Sie Optionen aktivieren möchten, die in Ihrem älteren Kernel nicht verfügbar waren. Sie können mit J / n / m antworten oder die Eingabetaste drücken, um die Standardeinstellung zu akzeptieren. Ich möchte Standardeinstellungen ohne Benutzerinteraktion automatisch akzeptieren.

Jean-François Chevrette
quelle
@jscott Dies würde nur "Enter drücken" für die erste Frage, nicht für alle. Sie können den Befehl 'yes' verwenden, um eine Zeichenfolge unbegrenzt drucken zu lassen.
Laurent Parenteau

Antworten:

37

Verwenden Sie den Befehl:

yes "" | make oldconfig

Der Befehl 'yes' gibt wiederholt eine Zeile mit allen angegebenen Zeichenfolgen aus oder standardmäßig 'y'.

Sie können es also verwenden, um einfach die Eingabetaste zu drücken, wodurch der Standardwert für den Befehl 'make oldconfig' verwendet wird.

Laurent Parenteau
quelle
Ahh, ich wusste nicht, dass der Befehl 'yes' einen beliebigen String ausgeben kann. Vielen Dank!
Jean-Francois Chevrette
3
Das ist phänomenal.
Ivan X
1
Die Antwort ist eine viel bessere Idee serverfault.com/a/538150/18822
Evan Carroll
56
make olddefconfig

ist was du willst. Aus der Hilfe ( make helpim Kernel-Quellverzeichnis)

olddefconfig - Entspricht silentoldconfig, setzt jedoch neue Symbole auf ihren Standardwert

Fließen
quelle
Ich habe eine Weile nach so etwas gesucht ... vielen Dank!
Jafar Kofahi
Welche Linux-Version ist dazu gekommen? Nur neugierig. Ich arbeite derzeit an einer alten Version (3.0), die es noch nicht gibt.
21.
1
Dies sollte die richtige Antwort sein.
Suprjami
0

Ja. Es ist in ".config" in der obersten Ebene des Quellverzeichnisses gespeichert.

Wenn Sie einen Distributionskernel verwenden, speichern einige Distributionen wie RedHat diesen in / boot / config - $ (uname -r). (Kernelversion) [1]

Wenn es in dem Kernel kompiliert wurde, den Sie ausführen, ist es in /proc/config.gz verfügbar. Ich habe vergessen, welche Version diese Option eingeführt hat.

[1] Diese Optionen:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

Bearbeiten

Lesen Sie die Datei /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (oder den entsprechenden Pfad). Sie können einige ihrer Empfehlungen verwenden, um ein Skript für eine Lösung zu erstellen. Ich würde eine Kombination aus Skripten und Textutils verwenden, um das zu erreichen, was Sie beschreiben.

Bearbeiten 2

Als zusätzliche Anmerkung ist dies eine schlechte Idee. Was ist, wenn sich die optionale Hardwareunterstützung für Ihre Umgebung ändert, aber nicht standardmäßig ist? Was ist, wenn sich Änderungen negativ auswirken? Dies ist wirklich etwas, das interaktiv sein sollte. Sie können die Konfiguration vornehmen und den Rest automatisieren.

"make silentoldconfig" ist etwas weniger ausführlich, was hilfreich sein könnte. Es ist immer noch interaktiv.

Warner
quelle
Das ist nicht das, was ich meinte. Ich habe meiner Frage weitere Details hinzugefügt, um zu erklären, was ich erreichen möchte.
Jean-Francois Chevrette
0

make silentoldconfig


quelle
2
make silentoldconfig ist noch interaktiv, es ist nur weniger ausführlich
Laurent Parenteau