Wie man einen Kernel kompiliert - auf Debian (Sarge) - Seite 2

6 Den Kernel bauen

Führe diese beiden Befehle aus um den Kernel zu bauen:

make-kpkg clean
fakeroot make deb-pkg

Nun musst Du Geduld haben, denn die Kernel Kompilierung kann einige Stunden dauern, je nach Kernelkonfiguration und Deiner Prozessorgeschwindigkeit.

7 Installation des neuen Kernels

Nachdem der Kernel erfolgreich kompiliert wurde, findest Du Dein Kernel .deb Paket im /usr/src Verzeichnis.

cd /usr/src
ls -l

Auf meinem Testsystem hieß es linux-2.6.18.3-default1_2.6.18.3-default1_i386.deb. Ich installiere es wie folgt:

dpkg -i linux-2.6.18.3-default1_2.6.18.3-default1_i386.deb

(Du kannst nun sogar die .deb Datei zu anderen Debian Sarge Systemen transferieren und sie dort auf gleiche Art und Weise installieren, was bedeutet, dass Du den Kernel dort nicht noch einmal kompilieren musst.)

8 Eine Ramdisk erstellen

Nun müssen wir für unseren neuen Kernel eine Ramdisk erstellen. Normalerweise führen wir dies mit mkinitrd aus, aber unser neuer Kernel verwendet udev anstelle von devfs. Du wirst während des Startens höchstwahrscheinlich diese Fehlermeldung mit einer mkinitrd generierten Ramdisk erhalten:

mount: unknown filesystem type 'devfs'

was zu einer Kernel-Panik führen könnte.

Eine neue Art Ramdisk zu erstellen, erfolgt mit mkinitrd.yaird. Backports.org hat für Debian Sarge ein yaird Paket. Bevor Du es installieren kannst, müssen wir zwei Voraussetzungen installieren:

apt-get install libhtml-template-perl libparse-recdescent-perl

Dann installieren wir yaird wie folgt:

cd /tmp
wget http://downloads.howtoforge.com/files/yaird_0.0.12-8bpo1_i386.deb
dpkg -i yaird_0.0.12-8bpo1_i386.deb

(Das ursprüngliche yaird Paket befand sich in http://backports.org/debian/pool/main/y/yaird/, wurde aber inzwischen entfernt, also habe ich das Paket unter http://downloads.howtoforge.com/files/yaird_0.0.12-8bpo1_i386.deb verfügbar gemacht.)

Bevor wir die neue Ramdisk erstellen können, müssen wir die Konfigurationsdatei unseres neuen Kernels, die Du im /boot Verzeichnis findest, bearbeiten (führe dies aus

ls -l /boot

um sie ausfindig zu machen). In dieser Anleitung heißt sie /boot/config-2.6.18.3-default1. In dieser Datei kommentieren wir die Zeile CONFIG_DEFCONFIG_LIST (am Anfang der Datei) aus, da mkinitrd.yaird sonst einen Fehler ähnlich wie diesen anzeigt:

yaird error: bad value in /boot/config-2.6.18.3-default1: CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" (fatal)

Also führen wir dies aus:

vi /boot/config-2.6.18.3-default1


[...]
# CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" [...]
Nun können wir schließlich unsere Ramdisk wie folgt erstellen:

mkinitrd.yaird -o /boot/initrd.img-2.6.18.3-default1 2.6.18.3-default1


9 Konfiguration des GRUB Boot Loaders

Nun müssen wir unseren GRUB Boot Loader konfigurieren, so dass unser neuer Kernel gestartet wird wenn das System hochfährt. Das ist sehr einfach, führe einfach Folgendes aus

update-grub

Du kannst /boot/grub/menu.lst überprüfen, um herauszufinden, ob Dein neuer Kernel hinzugefügt wurde:

vi /boot/grub/menu.lst

So sollte es nun aussehen (Du müsstest zwei Zeilen für Deinen neuen Kernel zu Anfang der Kernelzeilenliste finden):
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8), # grub-md5-crypt, /usr/share/doc/grub # and /usr/share/doc/grub-doc/. ## default num # Set the default entry to the entry number NUM. Numbering starts from 0, and # the entry number 0 is the default if the command is not used. # # You can specify 'saved' instead of a number. In this case, the default entry # is the entry saved with the command 'savedefault'. default 0 ## timeout sec # Set a timeout, in SEC seconds, before automatically booting the default entry # (normally the first entry defined). timeout 5 # Pretty colours color cyan/blue white/blue ## password ['--md5'] passwd # If used in the first section of a menu file, disable all interactive editing # control (menu entry editor and command-line) and entries protected by the # command 'lock' # e.g. password topsecret # password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/ # password topsecret # # examples # # title Windows 95/98/NT/2000 # root (hd0,0) # makeactive # chainloader +1 # # title Linux # root (hd0,1) # kernel /vmlinuz root=/dev/hda2 ro # # # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST ### BEGIN AUTOMAGIC KERNELS LIST ## lines between the AUTOMAGIC KERNELS LIST markers will be modified ## by the debian update-grub script except for the default options below ## DO NOT UNCOMMENT THEM, Just edit them to your needs ## ## Start Default Options ## ## default kernel options ## default kernel options for automagic boot options ## If you want special options for specifiv kernels use kopt_x_y_z ## where x.y.z is kernel version. Minor versions can be omitted. ## e.g. kopt=root=/dev/hda1 ro # kopt=root=/dev/sda1 ro ## default grub root device ## e.g. groot=(hd0,0) # groot=(hd0,0) ## should update-grub create alternative automagic boot options ## e.g. alternative=true ## alternative=false # alternative=true ## should update-grub lock alternative automagic boot options ## e.g. lockalternative=true ## lockalternative=false # lockalternative=false ## altoption boot targets option ## multiple altoptions lines are allowed ## e.g. altoptions=(extra menu suffix) extra boot options ## altoptions=(recovery mode) single # altoptions=(recovery mode) single ## controls how many kernels should be put into the menu.lst ## only counts the first occurence of a kernel, not the ## alternative kernel options ## e.g. howmany=all ## howmany=7 # howmany=all ## should update-grub create memtest86 boot option ## e.g. memtest86=true ## memtest86=false # memtest86=true ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18.3-default1 root (hd0,0) kernel /boot/vmlinuz-2.6.18.3-default1 root=/dev/sda1 ro initrd /boot/initrd.img-2.6.18.3-default1 savedefault boot title Debian GNU/Linux, kernel 2.6.18.3-default1 (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18.3-default1 root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.18.3-default1 savedefault boot title Debian GNU/Linux, kernel 2.6.8-2-386 root (hd0,0) kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/sda1 ro initrd /boot/initrd.img-2.6.8-2-386 savedefault boot title Debian GNU/Linux, kernel 2.6.8-2-386 (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.8-2-386 savedefault boot ### END DEBIAN AUTOMAGIC KERNELS LIST

10 Neustart

Jetzt starten wir das System neu:

shutdown -r now

Wenn alles klappt, sollte es mit dem neuen Kernel starten. Ob es wirklich Deinen neuen Kernel verwendet, kannst Du überprüfen, indem Du Folgendes ausführst

uname -r

Dies sollte etwas in der Art anzeigen

2.6.18.3-default1

Wenn das System nicht startet, starte es neu und wenn Du zum GRUB Boot Loader Menü gelangst, wähle Deinen alten Kernel aus und starte das System:


Du kannst nun noch einmal versuchen, einen funktionstüchtigen Kernel zu kompilieren. Vergiss nicht die beiden Zeilen des defekten Kernels aus der /boot/grub/menu.lst zu entfernen.

11 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte