Sicheres programmgesteuertes Ändern der Linux-Kernelkonfiguration

8

Ich schreibe ein Skript, das automatisch eine Reihe von Linux-Kernel-Konfigurationsoptionen basierend auf einer Eingabedatei ändern muss.
Der einfachste Weg , dies zu tun , wäre natürlich die CONFIG - Datei direkt zu bearbeiten, aber dies wird entmutigt und Probleme verursachen kann.
Ich kann jedoch keinen Weg finden, dies "richtig" zu machen.

"make help" zeigt weder eine Möglichkeit, einzelne Optionen zu ändern, noch ./scripts/kconfig/conf --help. Diese Datei auf kernel.org scheint auch keinen Weg zu haben.
Sogar Gentoos Genkernel ändert die .config-Datei manuell .

Im Grunde genommen:
Gibt es eine sichere Möglichkeit, die Kernelkonfigurationsoptionen programmgesteuert zu ändern, einschließlich Abhängigkeitsverfolgung usw.?
Kann Kconfig manuell ausgeführt werden, um dies zu erreichen?

SharkWipf
quelle

Antworten:

3

Was ich mache ist zuerst:

make defconfig

Fügen Sie dann Änderungen an den Einstellungen hinzu, .configgefolgt von:

make olddefconfig

Dies sollte alle in der Konfiguration eingeführten Inkonsistenzen "beheben". YMMV, da es sie möglicherweise nicht wie erwartet repariert.

DepressedDaniel
quelle
Danke für deine Antwort! Ich habe darüber nachgedacht, aber wie Sie sagten, YMMV. Wenn es zwei widersprüchliche Optionen gibt, ist nicht abzusehen, welche behoben werden sollen.
SharkWipf
@SharkWipf Nun, auf jeden Fall würde ich erwarten, dass das Ergebnis deterministisch ist. Wenn das Ergebnis nicht Ihren Wünschen entspricht, fügen Sie einfach eine weitere Anweisung hinzu, mit der das Konfliktobjekt deaktiviert wird, und wiederholen Sie diesen Vorgang, bis er funktioniert.
DepressedDaniel
Stimmt, aber es könnte mit anderen Optionen in einer Weise zu tun haben, die ich nicht überprüfen kann, und da ich dieses Skript schließlich auf Github veröffentlichen möchte, möchte ich, dass es so stabil und zuverlässig wie möglich ist. Im Allgemeinen wird dieses Skript verwendet, um vorhandene, benutzerdefinierte Kernel-Konfigurationen zu ändern, anstatt neue zu generieren. Daher ist es schwierig, es auf diese Weise zuverlässig zum Laufen zu bringen.
SharkWipf
@SharkWipf Nun, es hört sich so an, als ob das, was Sie erreichen wollen, eine Art KI erfordert;) Die herkömmliche Lösung besteht darin, einen Standard bereitzustellen, der funktioniert, und die Leute anpassen zu lassen, wenn sie sich trauen.
DepressedDaniel
Wenn ich es komplett manuell machen will, ja. Aber ich hatte gehofft, dass es eine Möglichkeit geben würde, mit Kconfig das "Ankreuzen eines Kästchens" in menuconfig zu simulieren, weil es so klingt, als ob das eine Sache sein sollte. Grundsätzlich möchte ich Benutzern erlauben, Kernel-Anforderungen aus dem Gentoo-Wiki zu kopieren , diese nach Möglichkeit auf die richtigen Konfigurationswerte aufzulösen (einfach genug) und dann die Konfiguration entsprechend zu aktualisieren (natürlich nach einer Überprüfung durch den Benutzer). In diesem Fall gibt es also keine "Standardeinstellungen".
SharkWipf
0

Ich würde für einen Patch der .config-Datei gehen. Die Schritte, die Sie unternehmen müssen, um es vorzubereiten, sind

cp .config .config.bck
make menuconfig # Here change all that you need to fit your needs
diff -u .config.bck .config > myconfig.$(kern_vers).patch

Fügen Sie dann in Ihrem Skript diese Zeile hinzu

patch .config myconfig.$(kern_vers).patch
Debüt
quelle