- ユーザーがLinuxシステムをソースコードから直接構築できるよう案内するステップバイステップのマニュアル
- バージョン 12.4 は2025年9月1日に公開され、最新のカーネル 6.16.1、GCC 15.2.0、Glibc 2.42 などを含む
- システムビルドのためのクロスツールチェーン構成、一時ツールのインストール、ブート可能なシステムの完成まで全工程を扱う
- 各章ではパッケージ一覧、ビルド順序、テスト手順、システム設定を細かく分けて提供
- 開発者やシステムエンジニアがLinuxの内部構造を学び、カスタムディストリビューションを作成するうえで重要な資料
概要
- Linux From Scratch(LFS) は、ユーザーが既存のディストリビューションなしにLinuxシステムを直接ビルドできるよう設計されたプロジェクト
- すべての構成要素をソースコードからコンパイルし、設定する過程を段階的に説明
- Gerard Beekmans が創始し、Bruce Dubbs が編集管理を担当
- 文書はHTMLベースのオンラインマニュアルとして提供され、各段階ごとに詳細リンクとパッケージバージョンが明記されている
バージョン情報
- 現在の安定版は12.4で、2025年9月1日に公開
- 著作権は1999–2025年のGerard Beekmans に帰属
- 最新リリースにはLinux 6.16.1、GCC 15.2.0、Glibc 2.42、Python 3.13.7 などの主要パッケージを含む
文書構成
- 文書は序文、ビルド準備、クロスツールチェーン構築、システムビルド、ブート設定、付録の5つの主要パートで構成
- 序文(Preface) : 対象読者、必要知識、標準準拠、パッケージ選定理由などを説明
- ビルド準備(Preparing for the Build) : ホストシステム要件、パーティション作成、環境変数設定などを含む
- クロスツールチェーンおよび一時ツールのビルド(Building the LFS Cross Toolchain and Temporary Tools) : Binutils、GCC、Glibc など中核コンパイラを構成
- LFSシステムのビルド(Building the LFS System) : 主要なシステムソフトウェアのインストールと設定
- ブート可能なLFSシステムの完成(Making the LFS System Bootable) : カーネルコンパイルとGRUB設定
- 付録(Appendices) : 略語、依存関係、ブートスクリプト、ライセンスなどを含む
主な構成要素
- パッケージ一覧には100以上の中核ユーティリティとライブラリが含まれる
- 例: Coreutils 9.7、Bash 5.3、Perl 5.42.0、Python 3.13.7、OpenSSL 3.5.2、Systemd Udev 257.8
- 各パッケージごとにインストール手順、テスト、クリーンアップ(cleanup) の段階が具体的に列挙されている
- SysVinit 3.14 ベースのブートスクリプトと GRUB 2.12 ブートローダー設定を含む
システム設定とブート
- 第9章(System Configuration) では、ネットワーク、ロケール、デバイス管理、入力設定などを扱う
- 第10章(Making the LFS System Bootable) では、
/etc/fstab の作成、カーネルビルド、GRUB設定の過程を含む
- 第11章(The End) では、システム再起動と後続の学習資料を案内
付録とライセンス
- 付録 D には
boot および sysconfig スクリプトのバージョン 20250827 を含む
- 付録 F は Creative Commons と MIT License の2種類のライセンスを明記
- 依存関係一覧、用語集、謝辞 などの参考資料を提供
意義
- LFSはLinuxの構成原理とビルド体系を直接体験できる教育・研究向けプロジェクト
- システム管理者、ディストリビューション開発者、セキュリティ研究者にとって、最小構成のLinux環境構築の標準的な参考書として活用されている
1件のコメント
Hacker Newsの意見
1999年に始めて2001年まで使っていたが、依存関係の管理と再コンパイルがあまりに大変で断念した
当時は文書が今ほど詳しくなく、自分で追跡する必要があり、マイナーなパッケージも多かった
それでも Slackware に移ってから XFree86 や GNOME のようなパッケージを自分でビルドして貢献していた時代は楽しかった
時間が許すならぜひやってみることを勧める。Linuxの見え方が完全に変わる
今なら仮想マシンで再挑戦する価値がありそうだ
LFS/BLFS の本当の強みは、自分の用途に合わせてシステムを調整できる点にある
自分は4000件のプロジェクトを Rubyスクリプト で追跡している。gem-coop が商用 rubygems.org の代替になれば、自分のプロジェクトを再び公開する予定だ
完成したシステムを実際に使いはしなかったが、何晩か費やした価値は十分にあった
情報へのアクセス性が向上したことが Linux 成長の大きな理由だと思う
若い頃に LFS を作りながら、コンピュータの最も低いレベルにまでアクセスできるのだと学んだ
ただし Gentoo や Arch も同程度の学習効果があり、インストール時間ははるかに短い
多くの人が「Gentoo ではなく LFS に行く」と言うが、大半は途中でやめるか、ソースベースのディストリビューションを永久に嫌いになる
Slackware と LFS を Haskell にたとえ、あまりに極端に行くと非生産的になると表現している
LFS は文書が充実しており、Slackware は時代に押されたが Patrick の努力は素晴らしかった
シアトルのPCリサイクル倉庫で 386/486 PC部品 を拾い集めて組み立て、Linux をインストールした
そうして作ったフランケンシュタインのようなコンピュータで Linux を学びながら成長した
RPM ベースのシステムを使えば dnf のトランザクション機能でインストール履歴やロールバックが可能で、管理がずっと楽だ
一度本に従って OS を作れば、他のディストリビューションとの違いを理解しやすくなり、システムへの 所有感 も生まれる
ARMv6 向けクロスコンパイルだったので非常に難しかったが、学ぶことは多かった
Jenkins でビルドを自動化し、bash スクリプトと Makefile でシステムを構成した
最終イメージは40MB程度で、それ自体が誇らしかった
「テストを絶対に飛ばしてはならない」という文句が印象に残った
glibc でも一部のテスト失敗は許容しているので、自分も自分のソフトウェアテストに似た文句を入れた
「この段階を破るとシステムが壊れる可能性がある」という警告を見て、Dark Souls のような Linux ディストリビューション だと感じた
カーネルを再コンパイルするときはオプションが多すぎて大変だが、こうした学習過程こそが Linux の魅力だ
他のOS、特に Windows ではあまり見られない文化だ
BSD 版の LFS があるのか気になる