[[linux:debian:kernel-backen-the-debian-way]]
 

Debian Etch - Linux Kernel backen - the Debian Way


Braucht man unter Debian Etch (bzw. Ubuntu Linux) einen Treiber oder ein Feature, das im 2.6.18er Linux Kernel nicht verfügbar ist, so muss man sich selbst einen Kernel kompilieren. Natürlich möchte man hierbei möglichst wenig Aufwand betreiben und so nahe wie möglich an der Debian Paketverwaltung bleiben, um das System konsistent zu halten. Aus diesem Grund bietet Debian für das Erstellen und Kompilieren eines eigenen Kernels das Paket kernel-package an.

Nebem diesem Paket sollten wir zwei weitere Pakete installieren, um unseren Kernel zu konfigurieren:

aptitude install kernel-package build-essential libncurses5-dev

Hat man zusätzlich build-essential mit notwendigen Programmen zum Übersetzen von Quellcode und libncurses5-dev zur übersichtlicheren Konfiguration des Kernels installiert, macht man sich an das Herunterladen eines aktuellen Kernels auf www.kernel.org. Hat man seinen Wunschkernel gefunden, lädt man diesen runter und entpackt ihn z.B. nach /usr/src/ und linkt die Kernelsources dann traditionell nach /usr/src/linux:

tar xjvf linux-2.6.xx.tar.bz2 -C /usr/src
ln -s /usr/src/linux-2.6.xx /usr/src/linux

Nun kopieren wir die Kernelkonfiguration des mitgelieferten Debian Kernels in das Verzeichnis, in dem die eben entpackten Kernelquellen liegen. Dies hat den Vorteil, dass wir von einer funktionierenden Kernelkonfiguration ausgehen können.

cp /boot/config-`uname -r` /usr/src/linux/.config

Nun geht es ans Konfigurieren. Zuerst gehen wir die alte Konfiguration durch und überprüfen dabei neue Features, die wir in den Kernel aufnehmen wollen oder nicht. Danach sollte man auf jeden Fall noch einmal einen Blick in die Konfiguration werfen und möglichen Ballast wie nicht genutzte Treiber und Features rauswerfen.

cd /usr/src/linux
make oldconfig
make menuconfig

Nun können wir den Kernel kompilieren und dabei die *.deb Pakete für Debian erstellen.

make-kpkg buildpackage --revision 20071014 --initrd

Mit dem Parameter buildpackage geben wir an, dass wir alle Pakete bauen lassen wollen:

  • linux-doc
  • linux-headers
  • linux-image
  • linux-manual
  • linux-source

make-kpkg –targets gibt einen Überblick über die möglichen Ziele. Mit –revision geben wir die Revision des Debian Paketes an. Hierdurch verliert man nicht den Überblick, auch wenn man mehrere Kernelpakete der gleichen Version baut. Um die benötigte initial ramdisk zu erstellen, fügen wir den Parameter –initrd hinzu. Benötigen wir keine Module und bauen alles fest in den Kernel ein, kann man auf die RAM-Disk verzichten. Weitere nützliche Optionen von make-kpkg finden sich in der zugehörigen man-Page.

Nachdem der Kernel kompiliert ist und alle Pakete erstellt worden sind, finden sich diese unter /usr/src wieder. Die *.deb-Pakete lassen sich wie gewohnt installieren:

dpkg -i linux-(doc|headers|image|manual|source)-2.6.xx_rev_arch.deb

Um nur den Kernel zu installieren, reicht das Paket linux-image-2.6.xx_rev_arch aus. Dabei werden alle benötigten Dateien nach /boot kopiert, die RAM-Disk erstellt und update-grub ausgeführt. Hierbei kann jedoch eine Zeile in der /boot/grub/menu.lst fehlen, die nachgetragen werden muss um eine Kernel Panic bei benötigter RAM-Disk zu verhindern:

initrd          /boot/initrd.img-2.6.xx

Nun sollte man einen Neustart wagen und überprüfen ob alles wunschgemäß funktioniert. Mit uname -r sollte man die neue Kernelversion angezeigt bekommen.

Auf diese Art und Weise erhält man einen aktuellen Kernel für sein Debian System, der vom Paketsystem erkannt und somit nicht durch ein (Kernel-)Update beeinträchtigt wird. Natürlich ist man für Updates des Kernels in diesem Fall selber zuständig und muss Kernelpatches bei Bedarf in Eigenregie auf die gleiche Art und Weise einspielen.

linux/debian/kernel-backen-the-debian-way.txt · Zuletzt geändert: 12.09.2009 12:46 (Externe Bearbeitung)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki No Bad-Bot!
Guestbook