Installieren der Linux-2.4.22 Header

Geschätzte Kompilierzeit:              0.1 SBU
Ungefähr benötigter Festplattenplatz:  186 MB

Inhalt von Linux

Der Linux Kernel ist der Kern eines jeden Linux Systems. Er ist sozusagen der Herzschlag von Linux. Wenn der Computer eingeschaltet wird und ein Linux System startet, dann ist der Kernel das erste Stück Software das gestartet wird. Der Kernel initialisiert die Geräte und Hardware Komponenten: serielle Schnittstellen, parallele Schnittstellen, Soundkarten, Netzwerkkarten, IDE und SCSI Controller und vieles mehr. Zusammenfassend kann man sagen, der Kernel stellt dem System die Hardware zur Verfügung, so das die Software damit laufen kann.

Installierte Dateien: Der Kernel und die Kernel Header

Linux Installationsabhängigkeiten

Linux ist abhängig von: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.

Installation der Kernel Header

Wir werden jetzt noch keinen neuen Kernel kompilieren -- das erledigen wir, wenn wir die Installation aller Pakete abgeschlossen haben. Da aber einige Pakete die Kernel Header benötigen entpacken wir nun das Kernel Archiv, bereiten es vor und kopieren die Header Dateien damit sie von diesen Paketen gefunden werden.

Beachten sie bitte das die Dateien im Kernel Quellverzeichnis nicht root gehören. Immer wenn sie ein Paket als root Benutzer entpacken (so wie wir es hier im chroot tun), erhalten die entpackten Dateien die Benutzer- und Gruppen ID desjenigen der das Archiv erstellt hat. Das ist üblicherweise für normale Pakete kein Problem weil sie das Quellverzeichnis nach der Installation löschen. Aber die Linux Quellen liegen normalerweise sehr lange auf ihrem Computer, daher ist die Chance gross, das ein zukünftiger Benutzer auf ihrem System die Benutzer ID erhält die ihre Kernel Quellen nun haben, und damit wäre er der Besitzer dieser Dateien und hat dann auch Schreibrechte darauf.

Unter diesem Aspekt möchten sie vielleicht chown -R 0:0 auf das linux-2.4.22 Verzeichnis anwenden damit alle Dateien dem root Benutzer gehören.

Bereiten sie die Installation der Header vor:

make mrproper

Dadurch wird sichergestellt, das die Kernelquellen absolut sauber sind. Das Kernel Team empfiehlt, dieses Kommando vor jedem Neubau des Kernels auszuführen. Sie sollten sich nicht darauf verlassen, das die Quellen nach dem entpacken sauber sind.

Erstellen sie die Datei include/linux/version.h:

make include/linux/version.h

Erstellen sie den Plattform-spezifischen symbolischen Link include/asm:

make symlinks

Installieren sie die Plattform-spezifischen Header Dateien:

cp -HR include/asm /usr/include
cp -R include/asm-generic /usr/include

Installieren sie die Cross-Plattform Header Dateien:

cp -R include/linux /usr/include

Einige Kernel Header Dateien benutzen die Header Datei autoconf.h. Da wir den Kernel jetzt aber noch nicht konfigurieren, müssen wir die Datei selber erstellen um Compilerfehler zu vermeiden. Erstellen sie eine leere autoconf.h Datei:

touch /usr/include/linux/autoconf.h

Warum wir die Kernel Header kopieren und nicht symbolisch linken

Früher war es gängige Praxis, das Verzeichnis /usr/include/{linux,asm} nach /usr/src/linux/include/{linux,asm} symbolisch zu verlinken. Das war aber schlechte Praxis, wie der folgende Ausschnitt aus einem Posting von Linus Torvalds auf der Linux Kernel Mailinglist zeigt:

I would suggest that people who compile new kernels should: 

 - not have a single symbolic link in sight (except the one that the 
   kernel build itself sets up, namely the "linux/include/asm" symlink 
   that is only used for the internal kernel compile itself) 

And yes, this is what I do. My /usr/src/linux still has the old 2.2.13 
header files, even though I haven't run a 2.2.13 kernel in a _loong_ 
time. But those headers were what Glibc was compiled against, so those 
headers are what matches the library object files. 

And this is actually what has been the suggested environment for at 
least the last five years. I don't know why the symlink business keeps 
on living on, like a bad zombie. Pretty much every distribution still 
has that broken symlink, and people still remember that the linux 
sources should go into "/usr/src/linux" even though that hasn't been 
true in a _loong_ time.

Der wichtige Teil ist, wo Linux sagt, das die Header Dateien die sein sollen, mit denen Glibc kompiliert wurde. Das sind die Header Dateien die zum späteren kompilieren von Paketen verwendet werden sollten, weil nur diese exakt auf die Objekt Code Bibliotheken passen. Durch das kopieren der Header stellen wir sicher, das sie verfügbar bleiben falls sie später den Kernel updaten.

Beachten sie, das es vollkommen in Ordnung ist, die Kernel Sourcen in /usr/src/linux liegen zu haben, so lange sie nicht die symbolischen Links /usr/include/{linux,asm} haben.