Skriptkonfiguration eines Linux-Kernels

8

Angesichts einer Liste von Kernel-Funktionen möchte ich eine minimale Linux-Konfiguration erstellen, die alle angegebenen Funktionen (und die entsprechenden Abhängigkeiten) unterstützt, aber sonst nichts.

Gibt es eine Möglichkeit, eine Allnoconfig und ein Tool zu erstellen, um Funktionen einzeln zu aktivieren?

(Ich könnte die .configDatei bearbeiten , aber dies würde die Abhängigkeiten nicht richtig machen. Ich könnte sie verwenden make *config, aber soweit ich weiß, funktionieren diese nur interaktiv oder erstellen eine Standardkonfiguration.)

michas
quelle
Hier ist ein Skript, das die Linux- Kernelkonfiguration
T. Perkins

Antworten:

1

Wenn Sie dies nicht interaktiv tun müssen, können Sie möglicherweise make oldconfig oder make olddefconfig verwenden. make * config behebt die Abhängigkeiten und diese sind nicht so ausführlich wie beispielsweise menuconfig. (Andernfalls ist menuconfig vollkommen in Ordnung, um Funktionen einzeln zu aktivieren, es enthält sogar die Hilfetexte!)

make oldconfig fragt nach 'neuen' Konfigurationsoptionen. Wenn Sie nicht interaktiv arbeiten möchten, müssen Sie Kommentare wie diese für deaktivierte Optionen einfügen:

# CONFIG_KERNEL_GZIP is not set

make olddefconfig hingegen scheint nicht zu fragen, sondern verwendet einen Standardwert. Es gibt auch quietoldconfig, aber es fragt in einigen Fällen auch, also ist es nicht so still.

von make help:

oldconfig       - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig    - Same as silentoldconfig but sets new symbols to their default value

Haftungsausschluss: Ich habe nur den trivialen Test versucht, die Optionen für einige Bibliotheken zu entfernen, von denen ich weiß, dass sie benötigt werden. Sie wurden von olddefconfig und oldconfig wieder hinzugefügt. Ich weiß nicht, wie dies für eine größere Konfiguration gilt.

Ich nehme an, Sie haben bereits darüber nachgedacht, make localmodconfig oder ähnliches zu verwenden, bevor Sie damit beginnen? Ich habe seit Jahren nicht mehr versucht, eine minimale Konfiguration zu erstellen, aber ich erinnere mich an einige nicht offensichtliche Möglichkeiten, völlig unbrauchbare Kernel zu erstellen. :) :)

ilkkachu
quelle
"olddefconfig" würde wahrscheinlich auch gut funktionieren. Gibt es eine Möglichkeit, die Standardkonfigurationsoptionen aus einer defconfig-Datei abzurufen? (In diesem Fall würde die defconfig-Datei eine geeignete Basis geben und eine minimale benutzerdefinierte Option könnte in .config festgelegt werden.)
michas
-1

Seit Kernel 2.6.29 gibt es ein Skript, das Sie finden können
/kernel_extracted_dir/scripts/config

Zum Beispiel

/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME

(Um Kredit zu geben, wo es fällig ist, habe ich das Beispiel aus diesem Blog genommen )

Sie haben die folgenden Optionen (aus der Hilfe kopiert)

--enable|-e option   Enable option
--disable|-d option  Disable option
--module|-m option   Turn option into a module
--set-str option string
                     Set option to "string"
--set-val option value
                     Set option to value
--undefine|-u option Undefine option
--state|-s option    Print state of option (n,y,m,undef)

--enable-after|-E beforeopt option
                         Enable option directly after other option
--disable-after|-D beforeopt option
                         Disable option directly after other option
--module-after|-M beforeopt option
                         Turn option into module directly after other option commands can be repeated multiple times

options:
    --file config-file   .config file to change (default .config)
    --keep-case|-k       Keep next symbols' case (dont' upper-case it)
Hristo Mohamed
quelle
1
Dies scheint auf den ersten Blick großartig. Leider scheint es überhaupt nicht um Abhängigkeiten zu gehen. :(
michas