Linux From Scratch: Version 5.0 | ||
---|---|---|
Zurück | Kapitel 6. Installieren der grundlegenden System Software | Weiter |
Geschätzte Kompilierzeit: 0.1 SBU Ungefähr benötigter Festplattenplatz: 186 MB |
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 ist abhängig von: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.
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 |
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.
Zurück | Zum Anfang | Weiter |
Erstellen der Gerätedateien (Makedev-1.7) | Nach oben | Installieren der Man-pages-1.60 |