Michael Oberg - Freiberuflicher EDV-Berater und Software-Entwickler
Frame Version


Übersetzen

Die Übersetzung des myLinux-Systems geschieht mit einem einzigen Kommando:

LFS=<Zielpartition> nohup mylinux-usermanager-0.92/compile-scripts/MAIN &

Wegen des nohup-Kommandos ist ein Ausloggen möglich. Die Übersetzung - welche auf einem Pentium III / 800 MHz mit 128 MB RAM etwa siebeneinhalb Stunden dauert -, kann also beispielsweise über Nacht laufen.

Im vorliegenden Fall war die Zielpartition unter /mnt/hda4 eingehängt; das Kommando lautet dann:

LFS=/mnt/hda4 nohup mylinux-usermanager-0.92/compile-scripts/MAIN &

Die Übersetzung wird vollständig von dem Skript MAIN kontrolliert, welches verschiedene andere, im folgenden erklärte Skripte aufruft.

Automatisches Entpacken

In den drei Abschnitten der Übersetzung werden die Inhalte der Verzeichnisse LFS-Packages, BLFS-Packages und MyLinux-Packages in die von MAIN erstellten Verzeichnisse LFS-Sources, BLFS-Sources und MyLinux-Sources extrahiert. Dazu dienen die Skripte UNPACK-LFS, UNPACK-BLFS und UNPACK-MyLinux.

Statische Version

Das Skript COMPILE-STATIC erstellt statisch gelinkte Versionen der für eine Übersetzung notwendigen Pakete, darunter bash, gcc und glibc. Die Kommandos sind im wesentlichen dem Buch "Linux from Scratch" von Gerard Beekmans entnommen.

Dynamische Version

Mit den statisch gelinkten Programmen ist es möglich, eine "change root"-Umgebung zu schaffen und in dieser Programme zu übersetzen. Dies wird genutzt, um ein minimales Linux-System zu schaffen - eben "Linux from Scratch".

Die Skripte MAKETREE und MAKEKERNEL-HEADERS erstellen den Verzeichnisbaum eines Linux-Systems, inklusive Devices, proc-Dateisystem, verschiedenen Links und den Kernel-Header-Files.

Das Skript COMPILE-RUNTIME1 erzeugt eine Version der glibc. Das Buch "Linux from Scratch" schreibt hiernach einen Neustart der Shell vor. Nun läuft das Skript MAIN mit der Shell des ursprünglichen Linux-Systems, während die davon aufgerufenen Skripte in der "change root"-Umgebung laufen. Das Beenden von COMPILE-RUNTIME1 und der Start eines weiteren Skriptes per chroot-Kommando startet daher die Shell der "change root"-Umgebung neu.

Das Skript COMPILE-RUNTIME2 übersetzt einen Teil der LFS-Pakete, bis hin zur bash. Nach deren Übersetzung sollte die bash naheliegenderweise neu gestartet werden.

Dies geschieht durch den Wechsel zum Skript COMPILE-RUNTIME3, welches die restlichen Pakete übersetzt. Am Ende der Übersetzung wird die glibc erneut übersetzt. Da diese von der bash als "shared library" dynamisch eingebunden wird, empfiehlt sich anschließend abermals ein Neustart der bash.

Das Skript COMPILE-RUNTIME4 führt im wesentlichen Konfigurationsarbeiten aus und installiert die Kernel-Quellen.

Die Kommandos dieser Skripte sind im wesentlichen dem Buch "Linux from Scratch" von Gerard Beekmans entnommen.

Kernel

Zwischenzeitlich erzeugt MAIN ein Skript setup, welches Teile der myLinux Konfiguration übernimmt. Im wesentlichen sind dies die Netzwerk- und Dateisystem-Konfiguration. Anschließend werden über das Skript MAKEKERNEL die zwei Default-Kernel von myLinux erzeugt. Der Kernel scsikernel enthält nahezu sämtliche Netzwerkkarten und SCSI-Hostadapter fest eincompiliert, sollte also prinzipiell jedes System unterstützen.

Allerdings kann es zwischen den Treibern zu Konflikten kommen. Deshalb gibt es noch einen zweiten Kernel, idekernel, bei dem die SCSI-Hostadapter als Module compiliert wurden. Dieser Kernel kann natürlich nicht auf Systemen verwendet werden, bei denen das Boot-Device ein SCSI-Device ist. Ansonsten können SCSI-Geräte angesprochen werden, indem man einfach das zugehörige Modul lädt.

BLFS

Das Skript COMPILE-BLFS übersetzt verschiedene Pakete aus dem Buch "Beyond Linux from Scratch". Die Kommandos wurden im wesentlichen diesem Buch entnommen, teilweise (z.B. Samba) in Bezug auf die Konfiguration gekürzt, da diese Konfigurationen durch das nachfolgende Skript wieder überschrieben werden.

myLinux

Das Skript COMPILE-MYLINUX übersetzt Pakete, die nicht im Buch "Beyond Linux from Scratch" beschrieben werden, und übersetzt einige Pakte neu, die zuvor ohne LDAP-Unterstützung übersetzt wurden. (Anmerkung: xpdf ist ein BLFS-Paket, das ich aber nur hier übersetze, da es in dieser Distribution nur für ht://dig von Bedeutung ist.)

Konfiguration

Alle weiteren Kommandos innerhalb von MAIN befassen sich mit der Konfiguration des myLinux-Systems.