Linux Tools · 1 min read · Jan 04, 2026
IHLFS: インストールするものを完全に制御する
IHLFS: インストールするものを確認する(およびその他)
はじめに
LFS(Linux From Scratch)ユーザーとして、私は自分のシステムにインストールされているパッケージに興味があります。
LFSについての簡単な紹介:LFSはSuseやRedHatのようなディストリビューションではなく、LFSコミュニティは自分自身のLinuxシステムをセットアップするためのガイドを提供することを目指しています。ウェブサイトには、ゼロから自分のLinuxシステムを構築する方法が非常に詳細に説明されています。すべてのパッケージは、ソースをコンパイルしてインストールすることによってインストールされます。
LFSコミュニティでは、インストールされたパッケージを追跡する方法について調査が行われています。現時点では、そのようなツールはまだ存在しません。
Jhalfsは、LFSシステムを構築するプロセスを自動化するための最新のツールで、Paco(see: paco.sf.net)を使用する能力があります。
PacoはLD_PRELOADメカニズムに基づいており、同じ技術がGentooなどで使用されています。この技術は有望ですが、いくつかの深刻な欠点があります。
私は、次のようなコマンドがシステムで何をするかを追跡する別の方法を探していました。
make installこの解決策を見つけました。Pierre Hebertの優れたアイデアのおかげです。彼は、LFSウェブサイトまたはミラーの「ヒント」セクションにあるhowto(see: Read Hints Online, “TRIP, a TRIvial Packager for LFS (and other linux systems)”)で、任意のインストールコマンドが何をするかを完全に制御する方法を説明しています。これを使えば、追加されたすべてのファイル、すべての変更、削除されたファイルやディレクトリを追跡できます。これは、上記の「make install」コマンドだけでなく、RMPのようなコマンドが行うすべてを追跡することもできます。
私が開発したIHLFSというツールは非常に基本的で、TRIPと同じ技術に基づいています。これにより、ファイルやパッケージ全体、またはシステムに追加したいものをインストールした後のシステムの見た目をプレビューできます。物事の見た目に満足できない場合(たとえば、異なる場所にインストールしたい場合)、いつでも戻ることができます。
IHLFSの名前は次のように表されています:
Install Helper Linux From Scratch
これは、システムの正確なコピー(仮想システムの一種)を作成することによって行われます。このコピーでは、あなたが行うことに完全に自由で、元のシステムには全く影響を与えません。ユーザーはいつでも、仮想システムから実際のシステムに変更を「移動」または「フラッシュ」する選択肢があります。
この技術の別の使用法は、ユーザーのための環境を作成することです。ユーザーは自分が実際のシステムにいると思い、そのように行動します。しかし、その間に、彼/彼女は好きなことをすることができ、実際のシステムに対して有害なことは何も行いません。
基本技術
これは魔法のように聞こえるかもしれませんが、実際にはLinuxで利用可能な技術を組み合わせることによってのみ可能です。
ファイルシステムUnionfs、chroot、およびいくつかの適切に選択された再マウントされたディレクトリを使用することで、この仮想システムを設定できます。
Unionfs
最も重要な部分は、unionfsの使用です。Unionfsは、少なくとも2つの他のファイルシステムの結合を作成する可能性を提供します。詳細についてはwww.unionfs.orgを参照してください。新しいファイルシステムを、元のファイルシステム(ルート)を読み取り専用モードで、そして一時ファイルシステム(キャッシュ)を読み書きモードで結合することによって、元のファイルシステムとまったく同じように見えるファイルシステムを持つことができますが、元のシステムに何も影響を与えずにファイルを変更、削除、または追加できます。これは、ルートが読み取り専用でマウントされているため不可能です。すべての変更は、unionfsによってキャッシュに保存されます。
元のシステムと新しく作成されたシステムの唯一の違いはパスです:新しいシステムでは、常にunionのマウントポイントのパスから始まります。これが次のステップが必要な理由です。
Chroot
このマウントポイントにchrootすることによって、あなたはシステムの完全なコピーの環境に入ります。あなたは好きなことを何でも行うことができ、重要なディレクトリやファイルを削除することさえできます。試してみてください!あなたのシステムがどこまで行けるか見てください。
(再)マウント
もう一つの追加する必要があることは、/dev、/proc、/sysなどのいくつかの重要なディレクトリを(再)マウントすることです。これは、unionファイルシステムが既存のマウントポイントを保持しないためです。
また、/tmpのようないくつかの特別なディレクトリを再マウントすることをお勧めします。このディレクトリは、configureスクリプトとmakeコマンドが一時的な中間結果を保存するために使用されます。ihlfsプログラムがこれらを重大な変更として登録しないようにしたいです。それは、ソースがビルドされるディレクトリにも当てはまります。
要件
もちろん、最近のLinuxバージョンが必要です。サポートされているカーネルと必要なUnionfsのバージョンについては、ウェブサイトを確認してください。異なるカーネルは異なるバージョンのunionfsを意味します。
カーネルはモジュールの読み込みをサポートしている必要があります。
さらに、キャッシュをマウントするための十分なスペースを持つパーティションが必要です。現時点では、これは別のパーティションです。
私は、通常のシステムと仮想システムでのビルドのパフォーマンスを比較しましたが、顕著な違いは見られませんでした。
最後に、IHLFSは、tar、chroot、modprobe、mount、bash、find、grep、bzip2など、任意のLinuxシステムに存在するはずのコマンドを使用します。
インストール
私のウェブサイトからパッケージをダウンロードしてください:
wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2適切なディレクトリにアーカイブを解凍します:
tar -xjf ihlfs-1.0.tar.bz2
cd ihlfs-1.0ihlfsのインストールは、
./install.shスクリプトを介して行われます。これは、いくつかのディレクトリを作成し、いくつかのファイルをコピーするだけです。
どのように機能するか
開始する前に、キャッシュが配置されるファイルシステムがマウントされていることを確認してください。そして、設定ファイル/etc/ihlfs/ihlfs.confの設定を確認してください。すべてが正常であれば、次のコマンドでプログラムを開始します:
ihifsいくつかのメッセージが表示され、すべてが正常であればプロンプトが表示されます:
/:>これで、好きなコマンドを入力できます。unionはマウントポイントの保持をサポートしていないことに注意してください。これにより、通常ソフトウェアをビルドする場所にマウントされているソースディレクトリが利用できないなどの影響が出る可能性があります。
これまでの変更を確認したい場合は、次のように入力します:
listこれにより、変更の概要が表示されます。
キャッシュからルートにすべての変更を移動したい場合は、次のように入力します:
flushこのコマンドは、上書き、変更、または削除されるファイルやディレクトリのバックアップと、インストールされるすべてのもののバックアップも作成します。
すべての変更を削除するには、次のようにします:
clean最後に、セッションを停止するには、次のようにします:
quit or exit例
ここにいくつかの簡単な例があります。ファイルを追加します:
~:>touch /tmp/test4ihlfs
~:>listmcviewのビューワーに次のように表示されます:
概要。
--------
追加、削除、変更、または上書きされたファイルやディレクトリは見つかりませんでした!これは予想通りです。/tmpディレクトリはunionをバイパスしています。
今、他の場所にファイルを作成します:
~:>touch /var/tmp/test4ihlfs
~:>list概要。
--------
追加されたファイル。
------------
/var/tmp/test4ihlfs連絡先
バグを見つけた場合や、物事をより良くする方法についてアイデアがある場合は、お知らせください!私のメールアドレスはstef at bononline dot nlです。しかし、先に進む前に、私がプログラムした方法が常に最も効果的であるとは限らないことを知っていると言いたいです。私はこれを意図的に行いました。プログラムスタイルに関しては、効果的さよりも読みやすさを優先します。
TODO
このパッケージはまだ完成していません。パッケージマネージャーについて何か知っている人は、次のことを指摘できます:
設定ファイルにエディタの選択を追加する
現在、ihlfsには1つのモードしかありません:対話型。ユーザーのための環境を作成します。次のようなコマンドラインモード:
ihlfs --command "make install"も可能であるべきです。
インストールするパッケージ名とバージョンを識別するフラグを追加する。
様々なコマンドの例をいくつか追加する。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。