Der Linux-Kernel ist die Lebenskraft aller Betriebssysteme der Linux-Familie, einschließlich Ubuntu, CentOS und Fedora.
Zum größten Teil müssen Sie den Kernel nicht kompilieren, da er standardmäßig installiert wird, wenn Sie das Betriebssystem installieren. Wenn der Kernel kritisch aktualisiert wird, können Sie yum oder apt-get verwenden, um den Kernel auf Ihrem Linux-System zu aktualisieren.
Es kann jedoch vorkommen, dass Sie in bestimmte Situationen geraten um den Kernel aus den Quellen zu kompilieren. Im Folgenden sind einige Situationen aufgeführt, in denen Sie möglicherweise den Kernel auf Ihrem Linux-System kompilieren müssen.
- Um experimentelle Funktionen zu aktivieren, die nicht Teil des Standardkernels sind.
- Um die Unterstützung für eine neue Hardware zu aktivieren, die derzeit nicht vom Standardkernel unterstützt wird.
- Um den Kernel zu debuggen
- Oder nur um zu erfahren, wie der Kernel funktioniert, möchten Sie vielleicht den Kernel-Quellcode erkunden und ihn selbst kompilieren.
In diesem Tutorial erklären wir, wie man den Linux-Kernel aus dem Quellcode kompiliert.
Beachten Sie auch, dass Sie den Kernel nicht kompilieren müssen, wenn Sie nur einen Treiber kompilieren möchten. Sie benötigen lediglich das Paket linux-headers des Kernels.
1. Laden Sie den neuesten stabilen Kernel herunter
Der erste Schritt besteht darin, den neuesten stabilen Kernel von kernel.org herunterzuladen.
# cd /usr/src/ # wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.xz
2. Entpacken Sie die Kernel-Quelle
Der zweite Schritt besteht darin, die Kernel-Quelldatei zum Kompilieren zu entpacken.
# tar -xvJf linux-3.9.3.tar.xz
3. Konfigurieren Sie den Kernel
Der Kernel enthält fast 3000 Konfigurationsoptionen. Damit der Kernel von den meisten Menschen auf der meisten Hardware verwendet wird, wird die Linux-Distribution wie Ubuntu, Fedora, Debian, RedHat, CentOS usw. im Allgemeinen die gängigste Hardware unterstützen. Sie können eine beliebige Konfiguration aus der Distribution übernehmen und darüber hinaus Ihre eigene Konfiguration hinzufügen, oder Sie können den Kernel von Grund auf neu konfigurieren, oder Sie können die vom Kernel bereitgestellte Standardkonfiguration verwenden.
# cd linux-3.9.3 # make menuconfig
Das make menuconfig startet eine textbasierte Benutzeroberfläche mit Standardkonfigurationsoptionen, wie in der Abbildung gezeigt. Sie sollten die Pakete „libncurses und libncurses-devel“ installiert haben, damit dieser Befehl funktioniert.
Wir werden die vom Kernel bereitgestellte Standardkonfiguration verwenden. Wählen Sie also „Speichern“ und speichern Sie die Konfiguration unter dem Dateinamen „.config“.
Das Folgende ist ein Beispiel der „.config“-Datei:
CONFIG_MMU=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y
4. Kompilieren Sie den Linux-Kernel
Kompilieren Sie den Hauptkernel:
# make
Kompilieren Sie die Kernel-Module:
# make modules
Installieren Sie die Kernel-Module:
# make modules_install
An diesem Punkt sollten Sie ein Verzeichnis namens /lib/modules/3.9.3/ in Ihrem System sehen.
5. Installieren Sie den neuen Kernel
Installieren Sie den neuen Kernel auf dem System:
# make install
Der Befehl make install erstellt die folgenden Dateien im /boot-Verzeichnis.
- vmlinuz-3.9.3 – Der eigentliche Kernel
- System.map-3.9.3 – Die vom Kernel exportierten Symbole
- initrd.img-3.9.3 – initrd-Image ist temporäres Root-Dateisystem, das während des Startvorgangs verwendet wird
- config-3.9.3 – Die Kernel-Konfigurationsdatei
Der Befehl „make install“ aktualisiert standardmäßig auch die grub.cfg. Daher müssen wir die Datei grub.cfg nicht manuell bearbeiten.
6. Booten Sie Linux mit dem neuen Kernel
Um den gerade kompilierten neuen Kernel zu verwenden, starten Sie das System neu.
# reboot
Da in grub.cfg der neue Kernel als Standardboot hinzugefügt wird, bootet das System vom neuen Kernel. Für den Fall, dass Sie Probleme mit dem neuen Kernel haben, können Sie während des Bootens den alten Kernel aus dem Grub-Menü auswählen und Ihr System wie gewohnt verwenden.
Sobald das System hochgefahren ist, verwenden Sie den Befehl uname, um zu überprüfen, ob die neue Version des Linux-Kernels installiert ist.
$ uname -r 3.9.3