6 ポイント 投稿者 GN⁺ 2026-01-22 | 1件のコメント | WhatsAppで共有
  • ユーザーがLinuxシステムをソースコードから直接構築できるよう案内するステップバイステップのマニュアル
  • バージョン 12.4 は2025年9月1日に公開され、最新のカーネル 6.16.1GCC 15.2.0Glibc 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.1GCC 15.2.0Glibc 2.42Python 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.7Bash 5.3Perl 5.42.0Python 3.13.7OpenSSL 3.5.2Systemd 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 を含む
  • 付録 FCreative CommonsMIT License の2種類のライセンスを明記
  • 依存関係一覧用語集謝辞 などの参考資料を提供

意義

  • LFSはLinuxの構成原理とビルド体系を直接体験できる教育・研究向けプロジェクト
  • システム管理者、ディストリビューション開発者、セキュリティ研究者にとって、最小構成のLinux環境構築の標準的な参考書として活用されている

1件のコメント

 
GN⁺ 2026-01-22
Hacker Newsの意見
  • Linuxシステムの内部を学ぶために Linux From Scratch(LFS) を自分で構築した経験を語っている
    1999年に始めて2001年まで使っていたが、依存関係の管理と再コンパイルがあまりに大変で断念した
    当時は文書が今ほど詳しくなく、自分で追跡する必要があり、マイナーなパッケージも多かった
    それでも Slackware に移ってから XFree86 や GNOME のようなパッケージを自分でビルドして貢献していた時代は楽しかった
    時間が許すならぜひやってみることを勧める。Linuxの見え方が完全に変わる
    • systemd版のLFSもあり、Gaming LFSや自動ビルドシステム版も提供されている
    • 自分も1999年ごろに試したが、当時は単に「このコマンドを入力しろ」という感じで説明が不十分だった
      今なら仮想マシンで再挑戦する価値がありそうだ
    • Wayland は実際のところシンプルだ。systemd より設定することが少ない
      LFS/BLFS の本当の強みは、自分の用途に合わせてシステムを調整できる点にある
      自分は4000件のプロジェクトを Rubyスクリプト で追跡している。gem-coop が商用 rubygems.org の代替になれば、自分のプロジェクトを再び公開する予定だ
    • 自分も高校生のとき(2005年ごろ)にやってみたが、数十のプロジェクトをビルドしながらシステムがどう噛み合うかを学ぶ経験は本当に素晴らしかった
      完成したシステムを実際に使いはしなかったが、何晩か費やした価値は十分にあった
    • あの頃は依存関係を自分で追跡する必要があったが、今は ChatGPT のようなもので即座に答えを得られる
      情報へのアクセス性が向上したことが Linux 成長の大きな理由だと思う
  • このプロジェクトを見るたびに upvote している
    若い頃に LFS を作りながら、コンピュータの最も低いレベルにまでアクセスできるのだと学んだ
    • 自分も1999年に10代のころやってみたが、問題を解決できるだけの賢さと十分な時間があった完璧な時期だった
    • 今はコンパイルしなければならないものがさらに増えた。LLVM、cmake、meson などが加わってビルド時間は長くなったが、それでもまだうまく動く
  • 誰かが Linux ディストリビューションの本質を理解したいと言ったら、いつも LFS を勧めている
    • 自分の Linux 知識のかなりの部分をここで学んだ
      ただし GentooArch も同程度の学習効果があり、インストール時間ははるかに短い
    • LFS のおかげで OS よりも sed, gcc CFLAGS, ブートストラッピング を多く学んだ気がする
  • “20 Years of Gentoo” ブログ から引用された文章を共有している
    多くの人が「Gentoo ではなく LFS に行く」と言うが、大半は途中でやめるか、ソースベースのディストリビューションを永久に嫌いになる
    Slackware と LFS を Haskell にたとえ、あまりに極端に行くと非生産的になると表現している
    • Haskell は難しいが、Slackware と LFS はシンプルだ。比較として適切ではないと思う
      LFS は文書が充実しており、Slackware は時代に押されたが Patrick の努力は素晴らしかった
    • 自分も部分的に 壊した経験 がある。ネットワークスタックがプログラムごとに異なる動作をして、それ以来もう再挑戦していない
  • 2006年ごろに LFS 本の紙版を買った
    シアトルのPCリサイクル倉庫で 386/486 PC部品 を拾い集めて組み立て、Linux をインストールした
    そうして作ったフランケンシュタインのようなコンピュータで Linux を学びながら成長した
  • 25年以上 Linux を使ってきた立場からすると、今では LFS を直接ビルドするのは 時間の無駄 だと思う
    RPM ベースのシステムを使えば dnf のトランザクション機能でインストール履歴やロールバックが可能で、管理がずっと楽だ
    • LFS は学習のための 訓練課程 だ。楽をすることが目的ではなく、OS の最も低いレベルを明らかにすることが核心だ
    • LFS の価値は完成したシステムではなく 理解の過程 にある
      一度本に従って OS を作れば、他のディストリビューションとの違いを理解しやすくなり、システムへの 所有感 も生まれる
    • RPM なしでも同様の機能は実装できる。自分は バージョン管理された AppDir を使っており、NixOS はハッシュ化されたディレクトリと nix で状態を保証している
    • 「楽な道だけ行け」という助言に対して、新しいことを試してみようとする意欲をくじくべきではないという反応を示している
  • 複数のコメントで言及されていた BLFS(Beyond Linux From Scratch)このリンク で見られる
  • 2014年に Cross-Linux From Scratch を作って Raspberry Pi 向けにビルドした
    ARMv6 向けクロスコンパイルだったので非常に難しかったが、学ぶことは多かった
    Jenkins でビルドを自動化し、bash スクリプトと Makefile でシステムを構成した
    最終イメージは40MB程度で、それ自体が誇らしかった
  • glibc テスト章 を読みながら
    「テストを絶対に飛ばしてはならない」という文句が印象に残った
    glibc でも一部のテスト失敗は許容しているので、自分も自分のソフトウェアテストに似た文句を入れた
    「この段階を破るとシステムが壊れる可能性がある」という警告を見て、Dark Souls のような Linux ディストリビューション だと感じた
    • その通り、本当にそんな感じだ
  • LFS/BLFS は完璧ではないが、Linux の 知識と応用 を示す良い例だ
    カーネルを再コンパイルするときはオプションが多すぎて大変だが、こうした学習過程こそが Linux の魅力だ
    他のOS、特に Windows ではあまり見られない文化だ
    BSD 版の LFS があるのか気になる