Linux Kernel kompilieren
In diesem Artikel geht es darum den Linux Kernel selbst zu bauen.
Inhaltsverzeichnis
Linux Quelltext besorgen
Als ersten Schritt besorgen wir den Quelltext (auch Sourcecode) von Linux. Diesen findet man bei Kernel.org.
Wir empfehlen den neusten stabilen Kernel zu wählen.
Das Kompilieren vorbereiten
Stellen Sie zunächst sicher, dass Sie die neusten Updates in Ihr System eingespielt haben.
Abhängigkeiten installieren
Debian / Ubuntu
Mit Root Privilegien
apt install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
CentOS / Fedora / RHEL
Mit Root Privilegien
yum groupinstall "Development Tools"
yum install ncurses-devel
yum install qt-devel"
yum install unifdef
Arch
Mit Root Privilegien
pacman -S base-devel
Entpacken
Es sollte ein neues Verzeichnis erstellt werden um den Kernel zu bauen.
mkdir linux
Im nächsten Schritt wird das Linux Tar Archiv (auch Tarball) entpackt.
tar -xvf linux-5.8.15.tar.xz
Abschluss der Vorbereitung
Das Verzeichnis zum Kernelsource wechseln.
cd linux-5.8.15
Um die Vorbereitung zum Kompilieren abzuschließen, sollte mrproper ausgeführt werden.
make mrproper
Linux Konfiguration
Anmerkung: Es ist nicht notwendig für das Konfigurieren und Kompilieren Root Privilegien zu verwenden.
Die Konfiguration des Kernels wird als .config gespeichert.
Eine laufende Konfiguration verwenden
In einigen Fällen ist die derzeit laufende Kernelkonfiguration in /proc/ verfügbar.
Um auf /proc/config.gz zugreifen zu können, muss die Option im Kernel aktiv sein:
General Setup -> Kernel .config Support
Laufende Kernelkonfiguration verwenden:
zcat /proc/config.gz > .config
Alternativ kann man sich in /usr/src/
umsehen. Dort sollte ein Verzeichnis namens Linux
oder Kernel
zu finden sein.
In diesem befindet sich eine generische .config Datei.
Eine angepasste Konfiguration erstellen
Nur aktive Module verwenden
Um eine möglichst perfekte Kernel Konfiguration zu erstellen, gehen Sie sicher, dass alle Geräte, die Sie verwenden möchten, zu diesem Zeitpunkt mit Ihrem System verbunden sind! Mittels make localmodconfig
ist es möglich, nur die derzeit laufenden Module (auch Treiber) für das Kompilieren zu wählen.
Anmerkung: Localmodconfig reicht nicht aus um einen guten Kernel zu bauen! Betrachten Sie es nur als gute Grundlage für die weitere Konfiguration.
Wenn Sie localmodconfig verwenden, sollten Sie auf jeden Fall folgendes ans Ende Ihrer .config Datei hinzufügen:
# DOS/FAT Filesystems
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
Oft gibt es Probleme mit dem Dateisystem Fat32, welches sich heutzutage noch immer großer Verbreitung erfreut. Diese Zeilen sollten alle Fat Probleme vermeiden.
Anmerkung: FAT ist das einzige Dateisystem, welches auf Windows, Mac OS X, GNU/Linux und BSD läuft!
Menuconfig
Anmerkung: menuconfig erstellt eine .config Datei, wenn Sie sie noch nicht existiert. Diese kann auch verwendet werden um einen sog. Generic Kernel zu bauen. Dieser ist jedoch nicht besonders auf Ihr System optimiert und enthält viele Module die Sie niemals verwenden werden oder wollen.
Mit menuconfig eine Kernelkonfigurationsdatei bearbeiten/erstellen:
make menuconfig
Linux Kompilieren
Anmerkung: Sie können mit dem Parameter -j weitere Kerne Ihrer CPU zum kompilieren verwenden, um den Vorgang zu beschleunigen. In den meisten Fällen ist die beste Option, die Anzahl Ihrer Kerne + 1. Dies muss jedoch nicht immer die richtige Lösung sein. Beispiel bei einem Quadcore: make -j5
Linux kompilieren (Alle Distributionen)
make
Linux kompilieren (Debian)
Auf Debian kann ein .deb Paket vom Linux Kernel erstellt werden:
make deb-pkg
Linux installieren
Debian
Die gebauten .deb Pakete einspielen:
Navigieren Sie in das Verzeichnis über dem Kernel Source.
cd ..
Anmerkung: Es reicht aus nur das Linux Image zu installieren. Der Rest ist optional.
Installation des Linux Kernel:
sudo dpkg -i linux-image-5.8.15-kernelname_5.8.15-kernelname-1_amd64.deb
Installation der Linux Kernel Headers:
sudo dpkg -i linux-headers-5.8.15-kernelname_5.8.15-kernelname-1_amd64.deb
Installation von libc-dev:
sudo dpkg -i linux-libc-dev-5.8.15-kernelname_5.8.15-kernelname-1_amd64.deb
Installation Linux Kernel Debugging:
sudo dpkg -i linux-image-5.8.15-kernelname-dbg_5.8.15-kernelname-1_amd64.deb