Kernel/Konfiguration
Dieser Artikel beschreibt die manuelle Konfiguration und Einrichtung des Linux Kernels.
Eine Alternative zur manuellen Konfiguration, die "sichere Standardwerte" verwendet, um einen generischen Kernel zu erstellen, sind die distribution kernels oder genkernel.
Symlink setzen
Der Symlink /usr/src/linux sollte immer auf die gerade verwendeten Kernelquellen zeigen. Dies kann auf eine von drei Arten geschehen:
1. Die Kernelquellen mit aktivem symlink
USE-Flag installieren. Dadurch verweist /usr/src/linux stets auf die neu installierten Kernelquellen. Falls erforderlich, kann es später immer noch mit den folgenden beiden Methoden geändert werden:
2. Den Symlink mit eselect setzen:
root #
eselect kernel list
Available kernel symlink targets: [1] linux-3.14.14-gentoo * [2] linux-3.16.3-gentoo
- Eine Liste mit verfügbaren Kernel-Quellen wird ausgegeben. Das Sternchen kennzeichnet die ausgewählten Quellen. Um beispielsweise auf die Kernelquellen des den zweiten Eintrages zu wechseln, ist folgendes Kommando auszuführen:
root #
eselect kernel set 2
3. Den Symlink manuell setzen:
root #
ln -sf /usr/src/linux-3.4.9-gentoo /usr/src/linux
root #
ls -l /usr/src/linux
lrwxrwxrwx 1 root root 11 Aug 29 22:10 /usr/src/linux -> /usr/src/linux-3.4.9-gentoo
Konfiguration
Konfigurationsprogramme
Die Kernelquellen enthalten mehrere Programme zu dessen Konfiguration:
Befehl | Beschreibung |
---|---|
make config | Textbasierte Konfiguration. Die Optionen werden nacheinander abgefragt. Alle Optionen müssen beantwortet werden, und ein ungeordneter Zugriff auf frühere Optionen ist nicht möglich. |
make menuconfig | Ein pseudo-grafisches Menü auf der Basis von Ncurses (nur Texteingabe). Navigieren Sie durch das Menü, um die gewünschten Optionen zu ändern. |
make defconfig | Erzeugt eine neue Konfiguration mit Standardwerten aus der von ARCH gelieferten defconfig-Datei. Verwenden Sie diese Option, um die mit den Quellen gelieferte Standardkonfigurationsdatei zu erhalten. |
make nconfig | Pseudo-grafisches Menü basierend auf Ncurses. Erfordert die Installation von sys-libs/ncurses. |
make xconfig | Grafisches Menü unter Verwendung von Qt5. Erfordert die Installation von dev-qt/qtwidgets. |
make gconfig | Grafisches Menü unter Verwendung von GTK. Erfordert die Installation von x11-libs/gtk+, dev-libs/glib, und gnome-base/libglade. |
make oldconfig | Überprüfen Sie die Änderungen zwischen den Kernelversionen und aktualisieren Sie, um eine neue .config für den Kernel zu erstellen. |
make olddefconfig | Erzeugt eine neue Konfiguration mit Standardwerten aus der von ARCH bereitgestellten defconfig-Datei, während gleichzeitig alle zuvor in der Datei .config unter /usr/src/linux/.config gesetzten Optionen beibehalten werden. Dies ist eine schnelle und sichere Methode, um eine Konfigurationsdatei zu aktualisieren, die alle Konfigurationsoptionen enthält, die für die Hardwareunterstützung erforderlich sind, und gleichzeitig Fehlerbehebungen und Sicherheitspatches zu erhalten. |
make allyesconfig | Aktiviert alle Konfigurationsoptionen im Kernel. Es werden alle Kerneloptionen auf * gestellt. Stellen Sie sicher, dass ein Backup der aktuellen Kernelkonfiguration erstellt wurde, bevor Sie diese Option verwenden!
|
make allmodconfig | Aktiviert alle Module im Kernel |
Darüber hinaus gibt es etliche Skripte zur Erstellung verschiedener Standardkonfigurationen. Detailierte Konfigurationen können dadurch weniger zeitraubend sein. Eine vollständige Liste der Make-Ziele gibt folgendes Kommando aus:
root #
make help
Im Rest dieses Artikels wird die Konfiguration mittels des Werkzeuges make menuconfig beschrieben; die Vorgehensweise ist bei den anderen Kernel-Bauwerkzeugen ähnlich.
root #
cd /usr/src/linux
root #
make menuconfig
Bedienung
Im angezeigten Menü markiert der blaue Balken die Position des Cursors. Mit den Pfeiltasten ↑ und ↓ wird die Position des Cursors verändert. Die Pfeiltasten ← und → durchlaufen die Menüleiste im unteren Bereich und legen fest, was passiert, wenn die Eingabetaste gedrückt wird. In der unteren Menüleiste wechselt Select zu einem Untermenü für die Menüeinträge, die mit ---> enden, während Exit ein Untermenü verlässt. Alternativ kann die Esc-Taste zweimal gedrückt werden, um die Anwendung zu beenden.
Durch Drücken einer zugehörigen Buchstabentaste A-Z wird die Position der Cursorzeilen mit fettgedruckten Zeichen verschoben. Die Tasten Y, M, N sind auf diese Weise von der Navigation ausgeschlossen; sie werden für andere Zwecke verwendet. Wenn eine Zeile mit einem Y,M oder N beginnt, ist das nächste Zeichen fett und kann angesprungen werden. Wenn die nächste Zeile zum Beispiel "Network Device Support --->" lautet, wird der Cursor durch drücken der Taste E auf diese Zeile bewegt, relativ zur aktuellen Position des Cursors.
Die folgenden Symbole können am Zeilenanfang in den Menüs erscheinen:
Symbol(s) | Description |
---|---|
[ ], [*]
|
Options in square brackets can be activated or deactivated. The asterisk marks the menu entry as activated. The value can be changed with the space key. It is also possible to press Y key (Yes) to activate or N key (No) to deactivate the selected entry.
|
< >, <M>, <*>
|
Options in angle brackets can be activated or deactivated, but also activated as module (indicated by a M). The values can be modified by pressing Y/N keys as before or by pressing the M key to activate the feature/driver as a module.
|
{M}, {*}
|
Optionen in geschweiften Klammern können eingeschaltet oder als Modul aktiviert, aber nicht ausgeschaltet werden. Dies geschieht, weil eine andere Funktion/Treiber von dieser Funktion abhängig ist. |
-M-, -*-
|
Optionen zwischen Bindestrichen werden auf die gezeigte Weise durch eine andere Funktion/Treiber aktiviert. Es gibt keine Auswahl. |
Des weiteren enthalten manche Menüeinträge eine Klassifizierung am Ende:
Tag | Description |
---|---|
(NEW)
|
Dieser Treiber ist neu im Kernel und ist vermutlich nicht stabil genug. |
(EXPERIMENTAL)
|
Dieser Treiber ist experimentell und höchstwahrscheinlich nicht stabil genug. |
(DEPRECATED)
|
Dieser Treiber ist veraltet und ist für die meisten Systeme mittlerweile unötigt. |
(OBSOLETE)
|
Dieser Treiber ist veraltet und sollte nicht aktiviert werden. |
Zu den meisten Optionen gibt es eine Beschreibung (in Englisch), die durch Drücken der Taste H oder durch Auswahl von Help in der Menüleiste angezeigt wird.
Treiberauswahl
Siehe den Hardwareerkennung Artikel oder die Artikel in der Hardware Kategorie.
Suchfunktion
Durch Drücken von / können die Treiber und Funktionen anhand ihrer Modulnamen gefunden werden.
Innerhalb von menuconfig
verwenden Sie die / Taste, um Module nach Namen zu suchen.
Wie unten gezeigt, werden im Suchergebnis Zahlen vor den Treffern angezeigt. Wenn Sie im folgenden Beispiel 1 drücken, springt make menuconfig direkt zu der Option Bluetooth device drivers in der Menüstruktur.
Symbol: BT_HCIBTUSB [=m]
Type : tristate
Prompt: HCI USB driver
Location:
-> Networking support (NET [=y])
-> Bluetooth subsystem support (BT [=y])
(1) -> Bluetooth device drivers
Defined at drivers/bluetooth/Kconfig:5
Depends on: NET [=y] && BT [=y] && USB [=m]
Allgemeine Gentoo-Einstellungen aktivieren
Es gibt eine Kernel-Konfigurationsoption namens CONFIG_GENTOO_LINUX, die nur in sys-kernel/gentoo-sources und anderen vom Kernel Projekt betreuten Kerneln vorhanden ist. Sie tut nichts von sich aus, setzt aber verschiedene Konfigurationsoptionen, die für typische Installationen benötigt werden.
Die Einstellung wählt automatisch tmpfs
- und devtmpfs
-Unterstützung aus, die unter Gentoo für /dev benötigt werden. Zukünftig soll dies auf andere in Gentoo-Systemen benötige Optionen erweitert werden. Mehr Informationen finden sich wie oben beschrieben in der Beschreibung im Kernel-Konfigurationsprogramm.
Kompilieren
Nachdem die Konfiguration fertig ist, kann der Kernel kompiliert werden:
root #
make
Je nach Geschwindigkeit und Anzahl der im System verfügbaren Kerne kann die Erstellung des Kernels eine ganze Weile dauern. Ist die Anzahl der CPU-Kerne im System bekannt, kann die Option
-jN
(wobei N
die Anzahl der verfügbaren Kerne plus 1 ist) verwendet werden, um den Kompilierungsprozess zu beschleunigen. Ein Dual-Core-Prozessor enthält zum Beispiel zwei logische Kerne plus einen (2 + 1). Eine einfache Möglichkeit, die Anzahl der verfügbaren Kerne zu ermitteln, ist die Ausführung des Befehls nproc:
user $
nproc
3
root #
make -j3
Ein Vierkernsystem enthält vier logische Kerne plus einen (4 + 1):
root #
make -j5
Einrichtung
Wurden Treiber als Module aktiviert, müssen sie nun installiert werden:
root #
make modules_install
Die Module werden in einen Unterverzeichnis von /lib/modules kopiert.
Nun installiert man den Kernel:
root #
make install
Dadurch wird das Programm /sbin/installkernel ausgeführt, das zum sys-apps/debianutils Paket gehört. Der neue Kernel wird in /boot/vmlinuz-{version} installiert. Existiert bereits ein symbolischer Link /boot/vmlinuz, wird dieser durch einen Link von /boot/vmlinuz auf den neuen Kernel erneuert, und der zuvor installierte Kernel ist als /boot/vmlinuz.old verfügbar. (installkernel Handbuchseite). Selbiges gilt für config- und System.map-Dateien. Diese Verknüpfungen sind nützlich, da sie immer auf den neuesten Kernel verweisen, ohne den Dateipfad zu ändern (sie können z.B. in der Bootloader-Konfiguration verwendet werden).
Bootloader
Es gilt nun die Bootloader-Konfiguration anzupassen, damit der neue Kernel beim Systemstart geladen werden kann.
Sobald der Bootloader konfiguriert ist, kann das System mit dem neuen Kernel gestartet werden.
Vergleich der aktuellen Kernelkonfiguration mit der Standardkonfiguration
Verwenden Sie das folgende Verfahren, um sich einen Überblick über die vom Standard abweichenden Kernel-Konfigurationseinstellungen zu verschaffen. Denken Sie daran, dass die Änderung einer Konfigurationseinstellung weitere Konfigurationseinstellungen verändern kann.
root #
cd /usr/src/linux
root #
cp -p .config ../.config.working
root #
make defconfig
root #
mv .config ../.config.default
root #
cp -p ../.config.working .config
root #
cd ..
root #
/usr/src/linux/scripts/diffconfig .config.working .config.default > .config.diff
Die Suchfunktion in make menuconfig kann verwendet werden, um die Symbole und ihre Interpretationen nachzuschlagen. Wenn Sie fertig sind, räumen Sie auf:
root #
cd /usr/src/
root #
rm .config.working .config.default .config.diff
Siehe auch
- Genkernel — a tool created by Gentoo used to automate the build process of the kernel and initramfs.
- Kernel/Configuration/Kernel_Seeds — pre-made kernel configuration files.
- Kernel/Gentoo Kernel Configuration Guide — aims to introduce the concepts of manual kernel configuration and details some of the most common configuration pitfalls.