Kernel How To / Debian Sarge mit GRUB Bootloader / V1.0.2

Vorarbeiten:

Als Root am System anmelden.

Achtung.

Sollte Debian mit einem Kernel kleiner 2.6 installiert worden sein, dann sind die Module-init-Toos notwendig. Am besten sollte Debian mit "linux26" als Installationsstartparameter installiert werden, dann sind die Module-Init-Tools nicht notwendig.

Ab Kernel 6 müssen andere init-tools installiert werden.
( Wenn ein Kernel kleiner als 6 installiert wird, muss dieser Schritt übersprungen werden. )

Um die neuen module-init-tools zu installieren reicht unter Sarge:

 

apt-get install module-init-tools


1. Neue Kernel Sourcen Laden

 

Es sollte das Paket ncftp auf dem System installiert sein.
Wenn nicht, einfach nachinstallieren mit

apt-get install ncftp


Dann lokal in das Verzeichnis

cd /usr/src


wechseln, hier sollten die originalen Sourcen abgelegt werden.
Dann die neuen Sourcen herunterladen. Mit

ncftp ftp.kernel.org


einloggen und z.B. in das Verzeichnis

 

cd /pub/linux/kernel/v2.6


wechseln und das gewünschte Paket herunterladen.

 

get linux-2.6.13.3-tar-gz


Mit exit wieder aus dem ncftp aussteigen.

2. Sourcen entpacken

In dem Verzeichnis /usr/src  liegt nun die komplette Kernelsource für den gewünschten Kernel. Diese Source muß ausgepackt werden

 

tar xvzf linux-2.6.13.3.tar.gz


Es entsteht ein neues Unterverzeichnis linux-2.6.13.3

Darin liegen die entpackten Sourcen. Nun in diese Verzeichnis wechseln. Die Datei linux.kernel.tar.gz nicht löschen, es kann beim Kompilieren zu Fehlern kommen, dann können die Sourcen einfach erneut ausgepackt werden.



3. Kernel konfigurieren

Es müssen die folgenden Pakete installiert sein um fortzufahren:

- gcc
- libc-dev
- binutils
- make
- gawk
- gzip
- shellutils
- bin86
- libncurses5-dev

Unsicher? Folgender Befehl hilft weiter.

 

apt-get install gcc libc6-dev binutils make gawk gzip shellutils bin86 libncurses5-dev

 

Somit werden alle notwendigen Modlue installiert.

Im Verzeichnis /usr/scr/linux-2.6.13.3

 

make menuconfig

 

aufrufen. Jetzt kann der Kernel konfiguriert werden(*1). Die Konfiguration wird in die Datei .config im aktuellen Verzeichnis abgelegt.

4. Kernel kompilieren

Im Verzeichnis des gewünschten Kernels, die Compilierung anstossen.

 

make dep clean bzImage modules modules_install

 

Bei Kernel ab Ver. 5 kann deb weggelassen werden, ein Ausführen hier schadet aber nicht, da nichts passiert außer einem Hinweis das die DEP nicht benötigt werden.

dep -> Beziehungen neu ordnen (kleiner Kernel Ver.5)
clean -> alle Temps löschen
bzimage -> gepackten Kernel erstellen
modules / modules_install -> Module generieren und installieren

5. Den neuen Kernel einbinden

Achtung: Fehlermeldungen beachten und bei Bedarf den Kernel ändern und erneut Compilieren. Wir befinden uns jetzt immer noch im Verzeichnis /usr/src/linux-2.6.13.3


Den neu erzeugten Kernel mit

 

mv arch/i386/boot/bzImage /boot/vmlinuz-2.6.13.3

 

in das Verzeichnis /boot/ verschieben. Hierbei hat es sich als hilfreich  herausgestellt alle Dateien die nun für den neuen Kernel erzeugt werden mit -2.6.13.3 (z.B.) enden zu lassen, damit sie einwandfrei identifiziert werden können.


Achtung: Keinen vorhandenen Kernel überschreiben. Ebenso die neuerzeugte System.map nach /boot/ kopieren mit

 

mv System.map /boot/System.map-2.6.13.3

 

Achtung: Keine vorhandene System.map überschreiben.

6. System auf den neuen Kernel vorbereiten

Da die Kernel ab Version 6 die Gerätenamen anders verwalten als die Kernel der Reihe 4 sollt nun der DEVFSD installiert werden. Er kümmert sich um die Verlinkung der alten mit den neuen Gerätenamen.

 

apt-get install devfsd

 

Bei der Installation mit GRUB werden RamDisks (initrd) für die Kernel angelegt.  Für den neuen Kernel wird diese mit dem folgenden Befehl erzeugt.

 

mkinitrd -o /boot/initrd.img-2.6.13.3



7. GRUB den neuen Kernel mitteilen

Die Einträge in GRUB nach der Installation von Sarge sehen für den 2.4.27  Kernel wie folgt aus.

 

less /boot/grub/menu.1st

 

(Am Ende der Datei sind die folgenden Einträge zu finden)

title Debian GNU/Linux, kernel 2.4.27-2-386
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro
initrd /boot/initrd.img-2.4.27-2-386
savedefault
boot

title Debian GNU/Linux, kernel 2.4.27-2-386 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.4.27-2-386
savedefault
boot

 

GRUB wird nun mit update-grub mitgeteilt das ein neuer Kernel bereitliegt der gebootet werden kann.
Die Ausgabe des update-grub sollte wie folgt aussehen.

 

Searching for GRUB installation directory ... found: /boot/grub .
Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst .
Searching for splash image... none found, skipping...
Found kernel: /boot/vmlinuz-2.6.13.3
Found kernel: /boot/vmlinuz-2.4.27-2-386
Updating /boot/grub/menu.lst ... done

 

Es wurde also unser neuer Kernel gefunden und eingebunden.
Sieht man sich die Datei erneut mit

 

less /boot/grub/menu.1st

 

an, so ist der neue Kernel eingetragen:

 

         1. ## End Default Options ##


title Debian GNU/Linux, kernel 2.6.13.3
root (hd0,0)
kernel /boot/vmlinuz-2.6.13.3 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.13.3
savedefault
boot

title Debian GNU/Linux, kernel 2.6.13.3 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.13.3 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.13.3
savedefault
boot

title Debian GNU/Linux, kernel 2.4.27-2-386
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro
initrd /boot/initrd.img-2.4.27-2-386
savedefault
boot

title Debian GNU/Linux, kernel 2.4.27-2-386 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.4.27-2-386
savedefault
boot

               1. END DEBIAN AUTOMAGIC KERNELS LIST

 

.. und den neuen Kernel testen.

Das System rebooten und die erste Ausgabe von GRUB zeigt nun 4  Möglichkeiten an, wie das System gebootet werden kann. Es wird nun versucht den neuen Kernel zu booten, sollte das fehlschlagen muß der Kernel erneut angepasst werden.



ACHTUNG



Bei einer Kernelpanik bzgl. DEVFS sollte die GRUB Datei wie folgt erweitert werden:

 

title Debian GNU/Linux, kernel 2.6.13.5
root (hd0,0)
kernel /boot/vmlinuz-2.6.13.5 root=/dev/hda1 ro devfs=nomount
initrd /boot/initrd.img-2.6.13.5
savedefault
boot

title Debian GNU/Linux, kernel 2.6.13.5 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.13.5 root=/dev/hda1 ro single devfs=nomount
initrd /boot/initrd.img-2.6.13.5
savedefault
boot

 

Der Kernel sollte dann problemlos durchbooten.

Das System kann im Fehlerfall resettet werden und erneut mit dem alten Kernel gestartet werden.

Mit 'cat /proc/version' wird die aktuelle Kernelversion des Systems zur Laufzeit angezeigt.

Viel Erfolg !!

Bugreport bitte an

heiko(at)no-spam.lug-viersen(dot)de

30.12.2005 / 10.02.2006 / 06.06.2006 / 09.08.2006