f e r r u g o

Linux From Scratch – Linux von grundauf

Gliederung

Das Ziel

2007/08 habe ich auf einem älteren Notebook (133 MHz, 80 MB RAM) mein erstes Linux From Scratch gebaut. Das hat Spaß gemacht und ich habe eine Menge dabei gelernt. Leider stellte sich heraus, dass moderne Anwendungen trotz des schlanken Betriebssystems viel größere Rechenleistungen verlangen. Daher baue ich LFS noch einmal auf einem schnelleren Rechner (IBM T41, 1700 MHz, 512 MB RAM), auf dem dann auch eine grafische Oberfläche und Programme wie OpenOffice und Firefox laufen können.

Meine Erfahrungen mit Linux From Scratch

Zusammenfassung

Phase 1: Aufbau des LFS

Ich habe mich diesmal für die Installation über Debian Lenny als Hostsystem entschieden. Weil auf der LFS-Seite anfangs noch kein PDF-Dokument zum Download bereitstand, musste ich mir das PDF-Dokument aus den XML-Quellen erstellen. Das war etwas schwieriger als erwartet, hat sich aber trotzdem gelohnt.
[Phase 1 im Installationstagebuch]

In der Folgezeit bin ich über diese Phase nicht hinausgekommen, zum einen weil mir die Zeit fehlte, zum anderen weil mein Debian auch einige Schwierigkeiten bereithielt, die meine Knobellust vollauf befriedigen konnten. Letztendlich ist es fast der gleiche Spaß und ohne die Beschäftigung mit LFS hätte ich mich nicht so mit meinem Debian anfreunden können.

LFS-Logo, found at http://www.linuxfromscratch.org/blfs/artwork/. Thanks.

Phase 1: Aufbau des LFS

08.03.09
Die Toolchain ist heute noch fertig geworden. Nur ein Problem tauchte bei der Installation der Bash auf. Das Kommando make install gab folgenden Fehler aus:

make[1]: Entering directory `/mnt/lfs/sources/bash-3.2/po'
test -z "en@quot.gmo en@boldquot.gmo ru.gmo" || make en@quot.gmo en@boldquot.gmo ru.gmo
make[2]: Entering directory `/mnt/lfs/sources/bash-3.2/po'
make[2]: `en@quot.gmo' is up to date.
make[2]: `en@boldquot.gmo' is up to date.
rm -f ru.gmo && : -c --statistics -o ru.gmo ru.po
mv: cannot stat `t-ru.gmo': No such file or directory
make[2]: *** [ru.gmo] Error 1
make[2]: Leaving directory `/mnt/lfs/sources/bash-3.2/po'
make[1]: *** [stamp-po] Error 2
make[1]: Leaving directory `/mnt/lfs/sources/bash-3.2/po'
make: [install] Error 2 (ignored)

Glücklicherweise wurde nach diesem Fehler schon einmal in der LFS-Mailingliste gefragt. Die lakonische Antwort lautete: «[...] as the last line of the output from *make* states that the error is *(ignored)* then that is what you should do also.» So hab ich's dann auch gemacht.

Bevor ich nun allerdings mit dem Aufbau des LFS beginne, muss ich noch eine Entscheidung zur Paketverwaltung treffen. Eigentlich dürfte es ja nur um die Frage gehen, wie man rausfindet, welches Paket welche Dateien installiert, damit man diese Dateien alle wieder loswird, wenn man sich entscheidet, das Paket zu entfernen, um zum Beispiel eine neue Version dieses Paketes zu installieren.

07.03.09
Heute habe ich mit dem Bau der Toolchain begonnen. Verglichen mit dem LTE 5300 geht das auf dem T41 verblüffend schnell. Für das Paket binutils habe ich damals 90 Minuten gebraucht – heute ging es in dreieinhalb.

20.02.09
Ich habe mich in der Zwischenzeit auch mit der deutschen LFS-Version beschäftigt. Hier gab es ebenfalls einige Probleme mit der Formatierung – zum einen auch wegen überlanger Zeilen und zum anderen, weil für die XML-PDF-Konversion noch fop-0.20 benutzt wurde –, die ich lösen konnte. Die Ergebnisse sollen auch demnächst in die Übersetzung eingefügt werden. Bis dahin ist das verbesserte PDF-Dokument der deutschen Übersetzung auch hier herunterzuladen: Download LFS-BUCH-6.4.pdf.

Neu gelernt:
Wenn man ein PDF ohne Bootskripte und Udev-Regeln ausdrucken möchte, kann man natürlich einfach die entsprechenden Seiten vom Druck aussschließen. Wenn man allerdings Wert auf Konsistenz bei Seitenzählung und im Inhaltsverzeichnis legt, ist es besser, die Zeilen 44 und 45 der Datei index.xml auszukommentieren oder zu löschen. Die Datei index.xml befindet sich im Hauptverzeichnis der XML-Quellen des Buches.

03.01.09
Die meisten Veränderungsvorschläge wurden akzeptiert und ab heute kann man bei LFS auch wieder ein PDF herunterladen.

Neu gelernt:
Es geht ziemlich einfach, etwas zu einem Linux-Projekt beizutragen.

22.12.08-02.01.09
Weil auf dem LFS-Server kein PDF erhältlich war, habe ich mich daran gemacht, selber das PDF aus den XML-Quellen zu erstellen. Dazu waren folgende Schritte nötig:

  1. XML-Version des Buches herunterladen (http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-6.4-XML.tar.bz2) und entpacken; der Tarball enthält ein Verzeichnis BOOK, in dem sich alle relevanten Daten befinden
  2. Installation der für den Bau benötigten Programme gemäß BOOK/INSTALL (Mein Hostsystem ist Debian Lenny. Die Programme habe ich größtenteils als debs mit apt-get install bei Debian heruntergelden und installiert:
    Nr. Name Version Beschreibung
    1 libxml2 2.6.32.dfsg-5 GNOME XML library
    2 libxslt1.1 1.1.24-2 XSLT processing library – runtime library
    3 docbook-xml 4.5-6 standard XML documentation system, for software and systems
    4 docbook-xsl 1.73.2.dfsg.1-5 stylesheets for processing DocBook XML files to various output formats
    5 tidy 20080116cvs-2 HTML syntax checker and reformatter
    6 sun-java6-jdk 6-07-4 (Die Version 1.5.0-16-3 hat auch funktioniert.) Sun Java(TM) Development Kit (JDK) 6
    7 fop 0.93 XML to PDF Translator
    Es ist sehr wichtig, dass wirklich SUN Java benutzt wird. FOP ist wählerisch. Welches Java läuft, kann man mit java -version herausfinden. Wenn ein anderes Java voreingestellt ist (z.B. GCJ), lässt sich das zumindest unter Debian mit update-alternatives --config java anpassen. Wichtig ist weiterhin, dass das JDK installiert wird, die JRE ist etwas anderes.
    Das fop-0.93, mit dem ich den Bau des PDF durchgeführt habe, habe ich mir nicht bei Debian besorgt, sondern als binary bei Apache heruntergeladen (http://apache.imsam.info/xmlgraphics/fop/). Der Tarball enthält das Verzeichnis fop-0.93 und gestartet wird fop dann ganz einfach durch den Aufruf der Datei fop in diesem Verzeichnis. Da fop aus BOOK/Makefile gestartet wird, muss die entsprechende Zeile im Makefile so angepasst werden, dass sie auf fop-0.93 verweist. Ein alias fop='/path/to/fop-0.93/fop' sollte es allerdings auch tun.
    Das fop-binary von Apache scheint JAI, welches in BOOK/INSTALL erwähnt wird, bereits zu enthalten, sodass JAI also nicht extra installiert werden muss.
  3. Starten des Builds mit make pdf im Verzeichnis BOOK aus einem XTerm. Das Xterm ist wichtig, weil beim Bau des PDF-Dokuments GTK benötigt wird.

Leider lief bei meinen Versuchen nicht alles glatt. Seit der Version 6.4 des LFS-Buches sind die Boot- und Sysconfig-Skripte sowie die Udev-Regeln im Appendix abgedruckt. Anscheinend wurde nicht bedacht, dass einige dieser Listings länger und breiter sind als eine PDF-Seite. Ich habe die Datei BOOK/stylesheets/lfs-xsl/pdf/lfs-mixed.xsl so angepasst, dass die Listings im Appendix umgebrochen werden dürfen und in einer kleineren Schriftart dargestellt werden. Jetzt passt das meiste. Den Rest habe ich mit \ so umgebrochen, wie es passend erschien. Im Hauptteil des Buches kommen ebenfalls Listings vor, die breiter sind als die Seite. Hier habe ich ebenfalls Zeilenumbrüche mit \ eingefügt. Übrig blieben noch Formatierungsprobleme mit einem Eintrag im Index und einer Tabelle. Das Problem mit dem Index konnte in der XML-Quelle behoben werden, das Problem mit der Tabelle beruhte auf einem Bug in fop-0.93.

Es mag fraglich erscheinen, ob sich dieser Aufwand lohnt, aber es gibt schon mal einen positiven Nebeneffekt: Ich habe erfahren, dass man aus dem XML mit make dump-commands alle Befehle des LFS-Buches extrahieren kann. Das dürfte mir einige Tippfehler ersparen. Außerdem können einige meiner Veränderungen vielleicht in die nächste LFS-Version eingebaut werden.

Einige Links

Die Homepage von Linux From Scratch

Die deutsche Übersetzung von Linux From Scratch

SBU-Seite mit den Listen der benötigten Zeit für das Kompilieren der einzelnen Pakete in unterschiedlichen LFS-Versionen auf unterschiedlichen Systemen,
unter denen auch mein altes System zu finden ist.

Wer selber Erfahrungen mit Linux From Scratch gesammelt und bereits im Netz veröffentlicht hat, kann hier einen Link auf seine Seite setzen lassen.
Wer seine Erfahrungen zwar veröffentlichen möchte, aber keinen eigenen Webspace hat, kann seine Notizen direkt hier einstellen.
Die Emailadresse ist im Impressum zu finden.