Kernel bauen
Aus Ubuntu-Forum Wiki
Inhaltsverzeichnis |
1 Warum selbst einen Kernel bauen
Da Ubuntu möglichst viel Hardware unterstützen soll, ist der Generic Kernel extrem überladen. Das kann das System langsam und instabil machen. Mit einem selbst gebauten Kernel umgeht man diese Probleme, indem man den Kernel genau auf sein System zuschneidet. Das erfordert zwar viel Übung, bis man einen guten Kernel gebaut hat, es rechnet sich aber in der Leistung und Stabilität. Außerdem gewinnt man einen Einblick in das Innenleben seines Linux'.
Den perfekten Kernel wird es nur in wenigen Ausnahmefällen geben. Man arbeitet sich eher an die perfekte Konfiguration schrittweiße heran. Also nicht an der Optionenfülle verzweifeln ;)
2 Vorbereitung
Man installiert folgende Pakete um den Kernel bearbeiten und kompilieren zu können:
sudo apt-get install build-essential kernel-package xmlto libncurses5-dev
Anschließend lädt man sich die neusten stable Kernel-Sources von Kernel.org, indem man auf den Link "F" klickt.
Das Heruntergeladene Archiv verschiebt man dann in das Verzeichnis /usr/src:
sudo mv /pfad/zum/paket/linux-*.tar.bz2 /usr/src/
wechselt in das Verzeichnis:
cd /usr/src
und entpackt es schließlich mit folgendem Befehl:
sudo tar -xfvj linux-*.tar.bz2
Damit die Kernel-Sources später auch von Programmen gefunden werden können, verlinkt man auf den entpackten Ordner mit einem symbolischen Link:
sudo ln -s Zielordner linux
Als Zielordner ist der eben entpackte Ordner anzugeben.
Nun kann man mit:
cd linux
in den Kernel-Source Ordner hineinwechseln.
3 Konfiguration
Nun kommt man zum wichtigsten und schwersten Teil der ganzen Sache: der Konfiguration.
Um den Kernel richtig zu konfigurieren, sollte man sich über sein System und die verbaute Hardware schlau machen. Hilfreiche Befehle sind hier:
sudo lspci
und
sudo lsusb
Hat man diese Informationen, kopiert man sich die Konfiguration des alten Kernels in den Ordner:
sudo cp /boot/config-`uname -r` /usr/src/linux/.config
Um in das Konfigurationsmenu zu gelangen, gibt man nun folgendes ein:
sudo make menuconfig
Zur Navigation:
- mit "/" kann man nach bestimmten Einträgen suchen
- mit 2x "Esc" wechselt man eine Ebene nach oben
- die "Leertaste" baut einen Treiber falls möglich in den Kernel ein. In den Kernel verbaute Treiber sind als * gekennzeichnet
- mit "m" kann man einen Treiber als Modul markieren
4 Den Kernel kompilieren
Wenn die Konfiguration des Kernels überstanden ist, kann man damit beginnen den Kernel zu kompilieren.
Wenn man aus den gleichen Quellen zuvor einen Kernel kompiliert hat, sollte man das Verzeichnis von Überesten säubern:
sudo make-kpkg clean
Nun kann man mit folgendem Befehl ein deb Paket erstellen:
sudo make-kpkg --initrd --revision Kernelversion binary
Als Kernelversion gibt man die Versionsnummer des zu kompilierenden Kernels an, zB.: 2.6.24.3
Wenn man sich sehr gut auskennt, kann man auch den Parameter --initrd weglassen, allerdings müssen dann die Treiber für die Festplatten fest in den Kernel eingebunden werden. Das Wegfallen eines initramfs beschleunigt den Systemstart merklich.
Mehr zu initrd gibt es in Wikipedia
Der Kernel kompiliert nun eine Weile und wenn er fertig ist kann man die deb Pakete installieren.
5 Installation
Die kompilierten deb Pakete befinden sich nun im Ordner /usr/src:
cd /usr/src
Anschließend kann man die kompilierten Pakete auf folgende Weise installieren, vorausgesetzt, dass sich vorher keine früheren deb Pakete darin befanden:
sudo dpkg -i linux-*.deb
Nach einem Neustart findet sich der Kernel als neuer Eingrag im Grub-Menü. Falls ihr die Fehlermeldung Kernel Panic bekommt, startet das System noch mal neu probiert nochmal, den Kernel zu laden. Falls das nicht erfolgreich war, habt ihr eine wichtige Einstellungen im Kernel verbockt oder ausgelassen. Man bootet den alten Kernel und wiederholt die Anleitung ab Konfiguration, bis es funktioniert.