Kernel/Konfiguration

From Gentoo Wiki
< Kernel
Jump to:navigation Jump to:search
This page is a translated version of the page Kernel/Configuration and the translation is 40% complete.
Outdated translations are marked like this.

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.

An alternative to manual configuration that uses 'safe defaults' to build a generic kernel are the distribution kernels.

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:

Command Description
make config Text based configuration. The options are prompted one after another. All options need to be answered, and out-of-order access to former options is not possible.
make menuconfig An ncurses-based pseudo-graphical menu (only text input). Navigate through the menu to modify the desired options.
make defconfig Generates a new config with default from the ARCH supplied defconfig file. Use this option to get back the default configuration file that came with the sources.
make nconfig Pseudo-graphical menu based on ncurses. Requires sys-libs/ncurses to be installed.
make xconfig Graphical menu using Qt5. Requires dev-qt/qtwidgets to be installed.
make gconfig Graphical menu using GTK. Requires x11-libs/gtk+ , dev-libs/glib , and gnome-base/libglade to be installed.
make oldconfig Review changes between kernel versions and update to create a new .config for the kernel.
make olddefconfig Generates a new configuration with default values from the ARCH supplied defconfig file while, at the same time, maintaining all the previous options set in the .config file found at /usr/src/linux/.config. This is a fast and safe method for upgrading a config file that has all the configuration options it needs for hardware support while at the same time gaining bug fixes and security patches.
make localmodconfig Creates a config based on the current config and the currently loaded modules, as viewable via the lsmod command.
make allyesconfig Enables all configuration options in the kernel. It will set all kernel options to *. Make sure a backup of the current kernel configuration is acquired before using this option!
make allmodconfig Enables all modules in kernel. Note that this operation will consume quite a bit of disk space.

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.


If the option is activated, the selected feature/driver will be built into the kernel and will always be available at boot time.

< >, <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.


See the Kernel Modules article for differentiation.

{M}, {*} Options in curly brackets can be activated or activated as module but not be deactivated. This happens because another feature/driver is dependent on this feature.
-M-, -*- Options between hyphens are activated in the shown way by another feature/driver. There is no choice.

Des weiteren enthalten manche Menüeinträge eine Klassifizierung am Ende:

Tag Description
(NEW) This driver is new in the kernel and is maybe not stable enough.
(EXPERIMENTAL) This driver is experimental and most likely not stable enough.
(DEPRECATED) This driver is deprecated and not needed for most systems.
(OBSOLETE) This driver is obsolete and should not be activated.

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.

KERNEL Beispielausgabe nach der Suche nach HCIBTUSB
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.

Kbuild

Warnung
Be very careful of changing environment variables as it may break the kernel in unexpected ways. DO NOT MIX GNU binutils and LLVM binutils!!! For example make CC=gcc LD=ld.lld AR=llvm-ar will not work because LLVM's ar and ld is not compatible with GCC.

The Kernel build system can be used to change how Kernel builds in a more advanced way than make *config, similar to GNU Make. Kbuild also support Environment Variables like LLVM=1. For example, the kernel will be build with LLVM and with aggressive optimization flags:

root #make LLVM=1 KCFLAGS="-O3 -march=native -pipe"
Hinweis
Additional variables are explained in Clang/LLVM.

Kompilieren

Nachdem die Konfiguration fertig ist, kann der Kernel kompiliert werden:

root #make

-j$(nproc) tells make to use all available CPU cores to speed up compiling.

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.

Hinweis
If you have enabled the dracut USE flag on sys-kernel/installkernel to automate initramfs generation during make install, it is recommended to run
root #emerge --ask @module-rebuild
before installing the kernel. This ensures that all external kernel modules (e.g., NVIDIA, ZFS) are rebuilt and included in the initramfs, preventing potential boot issues or missing functionality. Otherwise (if the flag isn't set), you can rebuild external modules later, but before regenerating the initramfs (e.g., using dracut --force). This ensures that the updated modules are included in the initramfs.

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

Theming Menuconfig

It is possible to select different color schemes for menuconfig using the variable MENUCONFIG_COLOR. To select a theme use:

root #make MENUCONFIG_COLOR=<theme> menuconfig

Available themes are as follows:

Theme Description
mono Colors suitable for monochrome displays
blackbg A color scheme with black background
classic A color scheme with blue background. The classic look
bluetitle An LCD friendly version of classic. (default)

Siehe auch

Externe Ressourcen