Linux From Scratch ( LFS ) は、 Linux のインストール方法の一種であり、 Gerard Beekmansによって書かれた書籍の名前でもあります。2021 年 5 月現在、主に Bruce Dubbs によってメンテナンスされています。この書籍では、ソースから Linux システムを構築する方法について説明しています。この書籍は、Linux From Scratch サイトから無料で入手できます。 [ 4 ]
Linux From Scratch は、Linux システムのすべてのコンポーネントを手動で構築して、動作する Linux システムをインストールする方法です。当然ながら、これはコンパイル済みのLinux ディストリビューションをインストールするよりも時間がかかるプロセスです。Linux From Scratch のサイトによると、この方法の利点は、コンパクトで柔軟かつ安全なシステムと、Linux ベースのオペレーティングシステムの内部動作に対するより深い理解です。[ 5 ]
LFS を小規模で焦点を絞ったものにするために、 Beyond Linux From Scratch (BLFS)という書籍が作成されました。この書籍では、LFS で作成された基本的な Linux システムをさらに発展させる方法について説明しています。X Window System、デスクトップ環境( KDE、GNOME、Xfce、LXDE )、生産性向上ソフトウェア、Web ブラウザ、プログラミング言語とツール、マルチメディアソフトウェア、ネットワーク管理およびシステム管理ツールなど、システムへの追加機能を紹介し、読者をガイドします。リリース 7.4 以降、BLFS の書籍バージョンは LFS の書籍バージョンと一致しています。[ 6 ]
『Cross Linux From Scratch (CLFS)』という書籍は、 Linuxを実行できるものの、Linuxをコンパイルするために必要なリソースが不足しているヘッドレスシステムや組み込みシステム向けのコンパイルを含め、クロスコンパイルに焦点を当てています。[ 7 ] CLFS は幅広いプロセッサをサポートし、クロスビルドツールチェーン、マルチライブラリサポート (32 ビットと 64 ビットのライブラリを並行して使用)、Itanium、SPARC、MIPS、Alphaなどの代替命令セットアーキテクチャなど、LFS の書籍には含まれていない高度な技術を取り上げています。このプロジェクトはアーカイブされており、最後に更新されたのは 2017 年 8 月です。[ 7 ]
Linux from Scratchプロジェクトは、BitBakeと同様に、 Raspberry PiやBeagleBoneなどのARM組み込みシステム向けにLinuxをクロスコンパイルすることもサポートしています。[ 8 ] [ 9 ]
書籍「Hardened Linux From Scratch (HLFS)」は、強化されたカーネルパッチ、強制アクセス制御ポリシー、スタック破壊保護、アドレス空間レイアウトのランダム化などのセキュリティ強化に焦点を当てています。[ 10 ] HLFSは、セキュリティ重視のオペレーティングシステムを作成するという主な目的の他に、セキュリティ教育ツールとしての二次的な目標も持っていました。2011年以降更新されていません。2025年2月17日現在、HLFSの書籍はLFSのWebサイトから削除されています。
Automated Linux From Scratch (ALFS) は、LFS システムの作成プロセスを自動化するために設計されたプロジェクトです。[ 11 ]これは、LFS および BLFS の書籍を何度も読み、作業量を減らしたいと考えているユーザーを対象としています。[ 12 ]二次的な目標は、LFS および BLFS の書籍の XML ソースから直接命令を抽出して実行することにより、LFS および BLFS の書籍のテストとして機能することです。
その他のサブプロジェクト:
LFSを構築するには、クリーンなパーティションと、コンパイラおよびいくつかの必須ソフトウェアライブラリを備えた正常に動作するLinuxシステムが必要です。既存のLinuxシステムからインストールする代わりに、ライブCDを使用してLFSシステムを構築することもできます。
このプロジェクトは以前は Linux From Scratch Live CD を維持していました。[ 13 ] LFS Live CD には、すべてのソース パッケージ (Live CD のフル バージョンのみ)、LFS ブック、自動ビルド ツール、および (最小限の Live CD バージョンを除く)作業用のXfce GUI 環境が含まれています。公式の LFS Live CD はもはや維持されておらず、LFS バージョン 7 以降をビルドするために使用することはできません。[ 13 ]ただし、LFS 7.x 用にそれぞれ 32 ビットまたは 64 ビットのカーネルとユーザー スペースをビルドするために使用できる 2 つの非公式ビルドがあります。[ 14 ]
まず、LFS のコンパイルに使用するツール(GCC、glibc、binutils、その他の必要なユーティリティなど)で構成されるツールチェーンをコンパイルする必要があります。次に、ルートディレクトリを( chrootを使用して) ツールチェーンのパーティションに変更し、最終システムの構築を開始します。最初にコンパイルされるパッケージの 1 つは glibc です。その後、ツールチェーンのリンカーを調整して、新しくビルドされた glibc にリンクするようにします。これにより、完成したシステムを構成する他のすべてのパッケージも glibc にリンクできるようになります。chroot フェーズでは、 bashのハッシュ機能が無効になり、一時的なツールチェーンの bin ディレクトリが PATH の末尾に移動されます。こうすることで、新しくコンパイルされたプログラムが PATH の先頭に配置され、新しいシステムが独自の新しいコンポーネントに基づいて構築されます。
これは、CLFSバージョン1.1.0に含まれるパッケージの一覧です。特に明記されていない限り、この一覧はサポートされているすべてのアーキテクチャに適用されます。
「標準ビルド単位」(SBU)とは、システムの初期ブートストラップ時に使用される用語で、特定のコンピュータ上でLFSの最初のパッケージをビルドするのに必要な時間を表します。この用語は、LFSシステムの構築に長時間を要すること、そして多くのユーザーがソースtarballのビルドにかかる時間を事前に知りたいという要望から生まれました。
Linux From Scratch バージョン 10.1 以降、ユーザーが最初にビルドするパッケージは GNU binutils です。ビルド時には、シェル構文を使用してビルド処理時間を計測し、その時間をシステムの「標準ビルド単位 (SBU)」とすることが推奨されます。この数値が分かれば、後続のパッケージのビルドに必要な時間の目安が、既知の SBU を基準として算出されます。
コンパイル時にビルドされるパッケージの中には、binutilsよりもはるかに長い時間を要するものがいくつかあります。例えば、GNU Cライブラリ(4.2 SBU)やGNUコンパイラコレクション(11 SBU)などが挙げられます。この単位はあくまで概算値であり、パッケージのビルドにかかる実際の時間は様々な要因によって左右されます。
LWN.netは2004年にLFSをレビューした:[ 30 ]
Linux From Scratchは素晴らしいプロジェクトです。すべてのLinuxトレーニングコースの必読書となるべきであり、すべてのLinux愛好家が少なくとも一度は読むべきものです。これはまた、興味深い副次的効果も生み出すでしょう。ディストリビューションのメーリングリストやフォーラムで不満をすぐに表明する傾向のある人々が、開発者に対してより敬意を払うようになる可能性が高いのです。既製のディストリビューションをインストールするのは簡単な作業です。しかし、安定性、安全性、信頼性を備えたオペレーティングシステムと数千ものアプリケーションを収録した4枚のCDを作成するのは、決して簡単なことではありません。
Tux Machinesは2005年にLinux From Scratch 6.1に関するレビューを書いた。[ 31 ]
さて、BLFSについてです。残念ながら、『Beyond Linux From Scratch』はいつも一歩遅れているように思えます。私にとって、ウィンドウマネージャーにログインできるようになるまでは、本当の意味でのインストールとは言えません。
Tux Machinesには、レビューの第2部[ 32 ]と第3部[ 33 ]もあります。
その他のソースコードベースのLinuxディストリビューション: