2.2. Kernel machen

Hier wird beschrieben, wie ein Kernel aus den Quellcodes gemacht wird. Dazu werden mehrere Schritte benötigt.

  1. Zunächst einmal muss dafür gesorgt werden, dass die benötigten Programme und Bibliotheken installiert sind. Wenn der Kernel zum ersten Mal nach der Installation von Debian gemacht wird, sind noch folgende Programme nachzuinstallieren: binutils, cpp, g++, gcc, make, patch, libncurses5-dev. Das geht mit folgendem Befehl in einem Rutsch (als root): apt-get install binutils cpp g++ gcc make patch libncurses5-dev

  2. Jetzt muss der Kernel noch besorgt werden. Den aktuellen Quellcode gibt's unter http://www.kernel.org. Die Datei heißt z.B. linux-2.4.21.tar.bz2 und ist ca. 30 MB groß.

  3. Um den Hardware-Sensor (Temperaturanzeige) anzusteuern, werden noch extra Treiber benötigt. Der Kernel muss gepatcht werden. Die dafür notwenigen Dateien sind unter http://secure.netroedge.com/~lm78/ zu finden. Es werden zwei Dateien benötigt. Sie heißen etwa i2c-2.8.0.tar.gz und lm_sensors-2.8.0.tar.gz.

    Außerdem wird ein Patch benötigt, damit Quota unter dem ReiserFS-Dateisystem funktioniert. Mit Quota lässt sich die Festplattenbenutzung pro Benutzer begrenzen. Patches für aktuelle Kernel sind unter ftp://www.suse.com/pub/people/mason/patches/data-logging/ zu finden. Im Verzeichnis 2.4.21/ sind verschiedene Patches für den Kernel der Version 2.4.21 vorhanden. Für Quota werden nur 07-quota-v2-2.4.21.diff.gz, 08-reiserfs-quota-28.diff.gz und 09-kinoded-8.diff.gz benötigt. Näheres steht in der README-Datei.

  4. Nachdem jetzt alle benötigten Quellcodes zusammen sind, muss der Kernel zuerst mal entpackt werden. Das geschieht in einem Unterverzeichnis im Homeverzeichnis von root (/root/kernel/) mit diesen Befehlen:

    bash# cd /root
    bash# mkdir kernel
    bash# cd kernel
    bash# tar xfjv /root/linux-2.4.21.tar.bz2

    Dabei wird angenommen, dass alle Dateien, die heruntergeladen wurden, sich im Homeverzeichnis von root (/root/) befinden.

    Nun kommen die Patches für den Hardware-Sensor dran. Folgende Schritte sind auszuführen, um die Treiber zu entpacken und den Kernel anschließend zu patchen:

    bash# cd /root/kernel
    bash# tar xfzv /root/i2c-2.8.0.tar.gz
    bash# cd i2c-2.8.0
    bash# mkpatch/mkpatch.pl . ../linux > ../i2c-patch
    bash# cd ../linux
    bash# patch -p1 -E < ../i2c-patch
    
    bash# cd /root/kernel
    bash# tar xfzv /root/lm_sensors-2.8.0.tar.gz
    bash# cd lm_sensors-2.8.0
    bash# mkpatch/mkpatch.pl . ../linux > ../lm_sensors-patch
    bash# cd ../linux
    bash# patch -p1 -E < ../lm_sensors-patch

    Jetzt muss noch der ReiserFS-Quota-Patch verwendet werden. Das geht mit folgenden Befehlen:

    bash# cd /root/kernel/linux
    bash# zcat /root/07-quota-v2-2.4.21.diff.gz | patch -p1
    bash# zcat /root/08-reiserfs-quota-28.diff.gz | patch -p1
    bash# zcat /root/09-kinoded-8.diff.gz | patch -p1

  5. Jetzt kann der Kernel endlich konfiguriert werden. Das Konfigurationsprogramm wird mit make menuconfig im Verzeichnis /root/kernel/linux/ gestartet.

    Bei der Konfiguration muss sichergestellt werden, dass unter "Multi-device support (RAID and LVM)" "RAID-1 (mirroring) mode" fest in den Kernel eingebunden wird. Für Software-RAID siehe auch Abschnitt 2.3, „Software-RAID“.

    Wichtig ist außerdem auch noch, dass unter "File systems" das ReiserFS-Dateisystem fest eingebunden wird. Die Treiber für die Netzwerkkarten werden als Module ausgewählt: Unter "Network device support", "Ethernet (10 or 100Mbit)" die Karten "EtherExpressPro/100 support (e100..." und unter "3COM cards" "3c590/3c900 series..." auswählen.

  6. Nach der Konfiguration kann der Kernel mit den Modulen compiliert werden. Einfach make dep bzImage modules modules_install eingeben.

  7. Der neue Kernel muss jetzt noch installiert werden. Mit cp /root/kernel/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.21 das Kernel-Image an die richtige Stelle kopieren. Danach muss /etc/lilo.conf bearbeitet werden: Die erste Zeile, die mit "image=" anfängt, muss in "image=/boot/vmlinuz-2.4.21" abgeändert werden. Danach mit lilo lilo neu installieren und den Computer anschließend neu starten.

  8. Nach dem Neustart können mit modconf die erstellten Module so konfiguriert werden, dass sie beim nächsten Neustart automatisch geladen werden. Wichtige Module sind hier die Module für den Hardware-Sensor (i2c-isa, w83..d), die Netzwerkkarten (e100, 3c59x) und das Modul für APM (Advanced Power Management; apm). Damit die Treiber für den Hardware-Sensor einen Sinn ergeben, wird noch das Paket lm-sensors benötigt. Es wird mit apt-get install lm-sensors installiert. Wenn die Treiber geladen sind, kann mit sensors die aktuelle Temperatur angezeigt werden.