__           __           __                     
.-----.--.--.----.| |.--.--.--| |.-----.--| | .-----.----.-----.
| -__|_ _| __|| || | | _ || -__| _ |__| _ | _| _ |
|_____|__.__|____||__||_____|_____||_____|_____|__|_____|__| |___ |
|_____|

[ visit www.excluded.org ]

Linux Kernel Howto
(c) 2003 by Takt <takt@excluded.org>

1. Vorwort
2. Grundlagen
3. Kernel Quellen installieren/downloaden
4. Sauber machen
5. Konfigurieren
6. Kompilieren
7. Installieren
8. Testen
9. Wenn alles geht

1. Vorwort:

Dieses Howto soll Linux-einsteigern eine Möglichkeit bieten sich sicher einen eigenen Kernel zu kompilieren.
Ich behandel hier ausschließlich die Kernel Version 2.4.x, da ich mit anderen Versionen bisher nichts zu tun hatte und
von diesen dem entspechend keine Ahnung habe. Ich werde hier nicht auf jede kleinste Option bei der Konfiguration eingehen,
das wäre auch ein wenig zu viel. Wer nicht weiß welche Hardware er hat, sollte von diesem Howto lieber die Finger weg lassen.

2. Grundlagen:

Der Kernel. Ja was ist das eigentlich? Vieleicht sollten wir diese Frage erst einmal klären, bevor es weiter geht.
Der Kernel ist für die reibungslose Kommunikation zwischen Anwendungen und der Hardware zuständig.
Er ist für die direkte Ansteuerung der Hardware, etwa der Festplatte oder der Soundkarte zuständig.
Ich wiederhole mich zwar ungerne, aber ich wiederhole noch einmal, dass man sein System wenigstens so gut kennen sollte
um zu wissen was man braucht.

Bei der Konfiguration gibt es für die meisten Optionen drei Auswahlmöglichkeiten: Eine Option garnicht einbinden, weil sie
nicht benötigt wird, eine Option Fest einbinden, da man sie immer braucht, oder eine option als Modul einbinden, weil man sich
nicht sicher ist, oder diese Option eventuel zu einem späteren Zeitpunkt braucht, zb. wenn man sich eine andere Soundkarte zulegt.

3. Kernel Quellen

Die meisten, oder gar alle Distributoren liefern die Kernel Quellen ihrer Distribution, teilweise mit Distributionsspezifischen Patches auf den CD's mit.
Sie haben nun zwei Möglichkeiten: Die Kernel Sourcen der Distribution nehmen, was besonders bei SuSE nicht an zu raten ist, da dort viele Patches
nicht funktionieren, da diese sich mti anderen SuSE Spezifischen Patches in die Quere kommen.
Oder Sie installieren sich einen Standart Kernel, die Quellen finden sie unter "www.kernel.org". Ich gehe nun davon aus, dass sie die Standard Kernel-
quellen benutzen und nicht die ihrer Distribution. Am besten benutzen sie immer den neusten Stable Kernel. Von Unstable solltens ie als normaler
Benutzer die FInger lassen! Schauen sie sich mal im Verzeichnis /usr/src um. Dort befindet sich meist ein link mit dem namen "linux",
welcher auf die Kernel Quellen des aktuellen Kernels zeigt. Zusätzlich befindet sich dort dann noch ein Ordner namens linux-"Version".
In diesem Ordner befindne sich die Kernel Quellen ihrer Distribution, wenn sie also doch diese verwenden möchten, lesen sie nun bei Punkt 4 weiter.

Nachdem sie sich die Kernel Quellen mit einer Gepackten Größe von etwa 20 Megabyte heruntergeladen haben, entpacken sie diese nach /usr/src.
Entpackt haben die Kernel Sourcen dann in etwa eine größe von 100 Megabyte. Das sollte heut zu tage aber kein Problem mehr darstellen.
Nun befindet sich ein neuer Ordner linux-"neue version" in /usr/src. Korrigieren sie den symlink /usr/src/linux und richten ihn auf /usr/src/linux-"neue version".

4. Suaber machen

Melden sie sich als root an, wenn sie X verwenden starten sie eine shell, zb. die bash und wechselns ie in das Verzeichnis /urc/src/linux
Führne sie dort folgende Befehle aus: make clean && make mrpoper.
Damit stellen sie sicher, dass kein alter Daten müll in diesem Verzeichnis rumfliegt, der beim compilieren des neuen Kernels evtl.
störend sein könnte. Bitte beachtens ie auch, dass hierdurch auch ihre .config gelöscht wird.
Also vorher evtl. Sichern, falls nötig.

5. Konfigurieren


Wechseln sie per "cd /usr/src/linux" in das Verzeichnis mit den aktuellen Kernel Quellen.
Nun haben sie 3 möglichkeiten ihren Kernel zu Konfigurieren:

1. make config

Bei dieser methode bekommen Sie zu jeder Option eine Frage gestellt, ob und wie sie diese Option einbinden möchten.
y steht für Festeingebunden, m für Modul und n für nicht eingebunden. Mit "?" erhalten sie Informationen über die jeweilige Option.
Der Größte Nachteil dieser Methode ist, dass sie nicht wieder zurück können, wenn sie irgendwo etwas falsches angegeben haben,
dann müssen sie alle Fragen wieder von Vorne durchackern. Desshalb meide ich diese MEthode eigentlich.

2. make xconfig

Dies ist die Grafische Konfiguration unter X.
Sie haben eine Übersicht aller Optionen und können alles bequem mit der Maus auswählen, abwählen etc.
Der Nachteil ist, dass man mit den vielen aupoppenden Fenstern die für jedes Untermenü erscheinen, schnell durcheinander kommen kann.
Für xconfig müssen sie logischerweise X starten.

3. make menuconfig

Diese ist meine perönliche Lieblings Methode um einen Kernel zu konfigurieren.
Wie unter xconfig haben sie ein Menü mit den Optionen, jedoch ploppt nicht jedes mal ein neues Fenster auf, geht ja auch garnicht auf der Console.
Man gelangt in ein Untermenü usw. wie in einer Baumstruktur.

Nun ist der Teil gekommen, andem sie ihr System sehr gut kennen müssen.
Was sie wählen müssen kann ich ihnen leider nicht sagen, jedoch kann ich ihnen folgende Tipps geben.

- Vergleichen sie ihre Config mit ihrer alten, die finden sie oft in /boot

- Vergessen sie die Dateisysteme so wie den IP Stack nicht!

-Auch wenn sie keine SCSI Geräte besitzen, jedoch einen Brenner, müssen sie die SCSI Unterstützung samt ide-scsi aktivieren, da ihr Brenner sonst
  mit diesem Kernel nicht lauffähig ist.

6. Kompilieren

Nachdem die Konfiguration ihres Kernels abgeschlossen ist führen sie folgende befehle in angegebener Reihenfolge aus: (immernoch in /usr/src/linux)
1. make dep
2. make bzImage (Bitte beachten sie das große I bei Image)
3. make modules
4. make modules_install

Den dritten und vierten Befehl können sie weg lassen, wenn sie die unterstützung von Modulen im Kernel deaktiviert haben.

Beim Kompilierne kann es zu Warnungen kommen, das hängt von ihrer CC Version ab (Compiler). Meist Handelt es sich um gcc.
Zu empfehlen ist die neuste Version 3.3, diese läuft bei mir einwandfrei.
Überprüfen welche gcc Version sie haben können sie per "gcc --version" auf der Console.

Evtl. benötigen sie noch die neusten "modutils".
Sie sollten immer die neuste Version benutzen, jedoch muss diese nicht mit der Kernel Version übereinstimmen.
Sie können diese zb. auf www.rpmfind.net oder www.suse.de finden.

7. Installieren

Den neuen Kernel finden sie im /arch/i386/boot verzeichnis der Kernel Quellen.
Benennen sie die Datei bzImage in Kernel-"Version" um und Kopieren sie ihn nach "/boot".
Anschließend wird die System.map im Verzeichnis der Kernel Quellen in System.map-"Neue Kernel Version" umbenannt und ebenfalls nach "/boot" kopiert.
Ändern sie anschließend den link /boot/System.map von der alten System.map auf ihre neue System.map (/boot/System.map-"Neue Kernel Version").

Tragen sie den neuen Kernel anschließend in ihren Bootloader ein. Wie dies funktioniert werde ich hier nicht weiter erklären. Manche Distributionen wie zb. SuSE
bieten jedoch front ends um ihre Bootloader zu konfigurieren. Ansonsten hilft meist ein Blick in die Dokumentation des jeweiligen Boot loaders.

8. Kernel testen

Starten sie ihr System neu, wenn beim Booten keine Fehlermeldungen oder ähneliches auftreten scheint alles funktioniert zu haben. Testen sie nun ob ihre Hardware
einwandfrei funktioniert. Wenn sie den Nvidia Treiber installiert haben, wird ihr X nicht starten, dazu müssen sie erst den Nvidia Treiber neu installieren. Also kein
Grund zur Panik. Wenn irgendwas nciht so geht, werden sie ihre Kernelkonfiguration überarbeiten und den Kernel neu Übersetzen müssen. Funktioniert nun alles
einwandfrei können sie Ihren neuen Kernel als default Auswahl im Bootloader festlegen. Die Kernel Quellen ihres alten Kernels können sie getrost entfernen,
jedoch sollten sie ihren alten Kernel weiterhin bootbereit halten, falls der neue Kernel mal doch nicht so will wie sie wollen.

9.  Greetz


Greetz an:
l0om - Scheiss Bullen
ProXy - Gib frei, ich will rein!
Nixon - Kilingt n bischen Berlinersich *hrhr*
Er@$eR - Leg dich mit dem besten an und du stirbst wie alle dann!
Den Rest der eXcluded.org crew und alle die ich vergessen habe :)

Kopieren erlaubt, verändern verboten!

Takt