Red Hat 4 und 5 Kernel Kompilierung

Dieser Artikel beschreibt wie man unter Red Hat 4 einen neuen 2.6.9 Kernel kompiliert. Dies ist zum Beispiel für einen VMware-Guest interessant da hier oft die Zeit “nachläuft”. Dies passiert da der Kernel eine “time interrupt rate” von 1000Hz eingestellt hat. Dieser Wert kann erst in neueren Kernels über einen Boot-Parameter verändert werden (z.B.: divider=10 — dividiert 1000 durch 10). Mehr Info dazu unter http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427

Source herunterladen

Red Hat 4

Zuerst muss die Source zum entsprechenden Kernel heruntergeladen werden (ca. 80mb):

# up2date get-source kernel-2.6.9-55.0.2.EL

Installieren

Hier wird das Source-RPM in den Ordner /var/spool/up2date geladen. Diesen einfach mit folgendem Befehl installieren

rpm -ivh kernel-2.6.9-55.0.2.EL.src.rpm

Red Hat 5

Die Source muss per FTP heruntergeladen werden. ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS

Installieren

in den jeweiligen Ordner wechseln wo die Datei hingeladen wurde und wie oben vorgehen.

Vorbereitungen & Konfiguration

Jetzt in den Ordner /usr/src/redhat/SPECS/ wechseln und folgenden Befehl ausführen:

rpmbuild -bp --target= kernel-2.6.spec

<arch> muss durch die jeweilige gewünschte Architektur ausgetauscht werden – z.B. i686. Der Kernel-Tree wird dann unter /usr/src/redhat/BUILD/ gespeichert. Genauer gesagt im Ordner /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 in den gewechselt werden muss.

  • Als ersten Schritt zuerst dies hier ausführen:
make clean && make mrproper
  •   weiters die gewünschte “.config” erstellen. Dafür findet man im Ordner /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/configs mehrere vorgefertigte Dateien. In diesem Fall wurde Datei “kernel-2.6.9-i686-smp.config” verwendet.
cp configs/kernel-2.6.9-i686-smp.config .config
  •  Danach wird das Kernel Konfigurationsmenü gestartet – mit:
make menuconfig

Erscheint ein Fehler?! – Eventuell muss noch ncurses-devel installiert werden.

  • hier zuerst den Punkt “Load an Alternate Configuration File” und die .config Datei auswählen.
  • jetzt dem Kernel eine Version geben – dies geschieht unter dem Punkt “General Setup —> () Local version – append to kernel release.” – hier wurde “-vmware-guest-b1” verwendet. Danach das Menü beenden und bei der Frage ob die Änderungen gespeichert werden sollen mit JA antworten.

VMware Zeit Problem

RedHat 4

Es muss in der Datei param.h der Wert von “# define HZ 1000” auf “# define HZ 100” gesetzt werden. Diese Datei findet man im Ordner /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/include/asm-i386

RedHat 5

Hier die .config File ändern. Folgendes muss geändert werden von:

# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000

auf

CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100

Kernel kompilieren

Wieder in den Ordner /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 wechseln und folgendes ausführen – nicht über einen SSH-Session da dies einige Zeit in Anspruch nehmen kann:

make rpm

Kernel installieren

Im Ordner /usr/src/redhat/RPMS/i386/ findet man die erstellte rpm-Datei. (z.B.: kernel-2.6.9prepvmwareguestb1-1.i386.rpm). Einfach in den Ordner wechseln und mit diesem Befehl installieren:

rpm -ivh --nodeps kernel-2.6.9prepvmwareguestb1-1.i386.rpm

RAMdisk erstellen

mit:

mkinitrd /boot/initrd-2.6.9-prep-vmware-guest-b1.img 2.6.9-prep-vmware-guest-b1

GRUB konfigurieren

Dafür muss man die Datei /boot/grub/menu.lst editieren – diese kann z.B. wie folgt aussehen:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/sda1
#          initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux ES (2.6.9-prep-vmware-guest-b1)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-prep-vmware-guest-b1 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-prep-vmware-guest-b1.img
title Red Hat Enterprise Linux ES (2.6.9-55.0.2.EL)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.0.2.EL ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-55.0.2.EL.img
title Red Hat Enterprise Linux ES (2.6.9-55.0.2.ELsmp)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.0.2.ELsmp ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-55.0.2.ELsmp.img
title Red Hat Enterprise Linux ES (2.6.9-42.ELsmp)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-42.ELsmp ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-42.ELsmp.img
title Red Hat Enterprise Linux ES-up (2.6.9-42.EL)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-42.EL ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-42.EL.img

Nach einem Reboot sollte nun der neue Kernel verwendet werden.

Links

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.