Linux From Scratch
(linuxfromscratch.org)- Eine schrittweise Anleitung, die Nutzer dabei unterstützt, ein Linux-System direkt aus dem Quellcode zu erstellen
- Version 12.4 wurde am 1. September 2025 veröffentlicht und enthält den aktuellen Kernel 6.16.1 sowie GCC 15.2.0, Glibc 2.42 und weitere Komponenten
- Behandelt den gesamten Prozess von der Einrichtung einer Cross-Toolchain über die Installation temporärer Werkzeuge bis zur Fertigstellung eines bootfähigen Systems
- Jedes Kapitel ist klar nach Paketliste, Build-Reihenfolge, Testverfahren und Systemkonfiguration gegliedert
- Eine wichtige Ressource für Entwickler und Systemingenieure, um die interne Struktur von Linux zu erlernen und maßgeschneiderte Distributionen zu erstellen
Überblick
- Linux From Scratch (LFS) ist ein Projekt, das darauf ausgelegt ist, Nutzern den direkten Bau eines Linux-Systems ohne bestehende Distribution zu ermöglichen
- Es erklärt Schritt für Schritt, wie alle Komponenten aus dem Quellcode kompiliert und konfiguriert werden
- Gegründet von Gerard Beekmans, redaktionell betreut von Bruce Dubbs
- Die Dokumentation wird als HTML-basiertes Online-Handbuch bereitgestellt; für jeden Schritt sind Detail-Links und Paketversionen angegeben
Versionsinformationen
- Die aktuelle stabile Version ist 12.4, veröffentlicht am 1. September 2025
- Das Copyright liegt 1999–2025 bei Gerard Beekmans
- Das aktuelle Release enthält wichtige Pakete wie Linux 6.16.1, GCC 15.2.0, Glibc 2.42 und Python 3.13.7
Struktur der Dokumentation
- Die Dokumentation besteht aus fünf Hauptteilen: Vorwort, Build-Vorbereitung, Aufbau der Cross-Toolchain, System-Build, Boot-Konfiguration und Anhänge
- Vorwort (Preface): Erläutert Zielgruppe, benötigte Kenntnisse, Einhaltung von Standards und Gründe für die Paketauswahl
- Build-Vorbereitung (Preparing for the Build): Enthält Anforderungen an das Host-System, das Erstellen von Partitionen und das Setzen von Umgebungsvariablen
- Aufbau der LFS-Cross-Toolchain und temporären Werkzeuge (Building the LFS Cross Toolchain and Temporary Tools): Konfiguration zentraler Compiler-Werkzeuge wie Binutils, GCC und Glibc
- Build des LFS-Systems (Building the LFS System): Installation und Konfiguration der wichtigsten Systemsoftware
- Ein bootfähiges LFS-System erstellen (Making the LFS System Bootable): Kernel-Kompilierung und GRUB-Konfiguration
- Anhänge (Appendices): Enthalten Abkürzungen, Abhängigkeiten, Boot-Skripte, Lizenzen und mehr
Zentrale Komponenten
- Die Paketliste umfasst mehr als 100 Kern-Utilities und Bibliotheken
- Beispiele: Coreutils 9.7, Bash 5.3, Perl 5.42.0, Python 3.13.7, OpenSSL 3.5.2, Systemd Udev 257.8
- Für jedes Paket sind die Schritte Installation, Tests und Bereinigung (cleanup) konkret aufgeführt
- Enthält Boot-Skripte auf Basis von SysVinit 3.14 sowie die Konfiguration des Bootloaders GRUB 2.12
Systemkonfiguration und Booten
- Kapitel 9 (System Configuration) behandelt Netzwerk, Gebietsschemata, Geräteverwaltung und Eingabekonfiguration
- Kapitel 10 (Making the LFS System Bootable) umfasst das Erstellen von
/etc/fstab, den Kernel-Build und die GRUB-Konfiguration - Kapitel 11 (The End) führt durch den Neustart des Systems und verweist auf weiterführende Lernmaterialien
Anhänge und Lizenzen
- Anhang D enthält die Skriptversionen 20250827 für
bootundsysconfig - Anhang F nennt zwei Lizenzen: Creative Commons und MIT License
- Zusätzlich stehen Referenzmaterialien wie Abhängigkeitslisten, Glossar und Danksagungen zur Verfügung
Bedeutung
- LFS ist ein Lehr- und Forschungsprojekt, mit dem sich die Konstruktionsprinzipien und das Build-System von Linux unmittelbar nachvollziehen lassen
- Für Systemadministratoren, Distributionsentwickler und Sicherheitsforscher dient es als maßgebliches Referenzwerk für den Aufbau einer minimalen Linux-Umgebung
1 Kommentare
Hacker-News-Kommentare
Angefangen wurde 1999, genutzt bis 2001, dann aber aufgegeben, weil Abhängigkeitsverwaltung und Neukompilieren zu mühsam waren
Damals war die Dokumentation noch nicht so detailliert wie heute, sodass vieles selbst nachverfolgt werden musste, und es gab viele obskure Pakete
Trotzdem war die Zeit des Wechsels zu Slackware, mit selbst gebauten und mitgestalteten Paketen wie XFree86 und GNOME, sehr schön
Falls es die Zeit erlaubt, wird ausdrücklich empfohlen, es einmal auszuprobieren. Der Blick auf Linux verändert sich dadurch komplett
Heute wäre es wohl einen neuen Versuch in einer virtuellen Maschine wert
Die eigentliche Stärke von LFS/BLFS liegt darin, dass man das System für den eigenen Einsatzzweck anpassen kann
Ich verfolge 4000 Projekte mit einem Ruby-Skript. Wenn gem-coop eine Alternative zum kommerziellen rubygems.org wird, werde ich mein Projekt wieder veröffentlichen
Ich habe das fertige System nie tatsächlich genutzt, aber ein paar Abende waren dafür sehr gut investiert
Ich denke, der bessere Zugang zu Informationen ist ein wichtiger Grund für das Wachstum von Linux
Als ich jung war und LFS baute, habe ich dadurch gelernt, dass man bis auf die unterste Ebene eines Computers hinunter Zugriff bekommen kann
Allerdings bieten Gentoo oder Arch einen ähnlichen Lerneffekt bei deutlich kürzerer Installationszeit
Viele Leute sagen zwar: „Dann nehme ich eben LFS statt Gentoo“, aber die meisten geben unterwegs auf oder entwickeln dauerhaft eine Abneigung gegen quellbasierte Distributionen
Slackware und LFS werden mit Haskell verglichen, mit der Aussage, dass es unproduktiv wird, wenn man zu sehr ins Extreme geht
LFS ist hervorragend dokumentiert, und Slackware mag von der Zeit überholt worden sein, aber Patricks Einsatz war großartig
In einem PC-Recyclinglager in Seattle habe ich 386/486-PC-Teile zusammengesucht, Rechner daraus gebaut und Linux installiert
Mit diesen Frankenstein-Computern bin ich aufgewachsen und habe Linux gelernt
Mit einem RPM-basierten System ist die Verwaltung viel bequemer, weil dnf dank seiner Transaktionsfunktionen Installationsverlauf und Rollbacks ermöglicht
Wenn man einmal anhand des Buchs ein OS gebaut hat, versteht man die Unterschiede anderer Distributionen leichter und entwickelt ein Gefühl von Eigentümerschaft für das System
Wegen des Cross-Kompilierens für ARMv6 war es sehr schwierig, aber man hat viel dabei gelernt
Mit Jenkins wurde der Build automatisiert, und das System wurde mit Bash-Skripten und Makefiles aufgebaut
Das finale Image war etwa 40 MB groß, und allein das machte schon stolz
blieb besonders der Satz „Tests niemals überspringen“ im Gedächtnis
Da selbst glibc einige fehlgeschlagene Tests zulässt, habe ich einen ähnlichen Hinweis auch in meine eigene Software-Dokumentation aufgenommen
Die Warnung „Wenn du diesen Schritt missachtest, kann dein System kaputtgehen“ ließ es wie eine Dark-Souls-artige Linux-Distribution wirken
Beim Neukompilieren des Kernels sind die unzähligen Optionen zwar anstrengend, aber genau dieser Lernprozess macht den Reiz von Linux aus
Das ist eine Kultur, die man bei anderen Betriebssystemen, besonders Windows, nur selten sieht
Es wird gefragt, ob es vielleicht auch eine BSD-Version von LFS gibt