6.4. Chroot 環境への移行

chroot 環境に入って最終的な LFS システムの構築、インストールを行っていきます。 root ユーザーになって以下のコマンドを実行します。 chroot 環境内は、この時点では一時的なツール類のみが利用可能な状態です。

chroot "$LFS" /tools/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
    /tools/bin/bash --login +h

env コマンドの -i パラメーターは、chroot 環境での変数定義をすべてクリアするものです。 そして HOME, TERM, PS1, PATH という変数だけここで定義し直します。 TERM=$TERM は chroot 環境に入る前と同じ値を TERM 変数に与えます。 この設定は vimless のようなプログラムの処理が適切に行われるために必要となります。 これ以外の変数として CFLAGSCXXFLAGS などが必要であれば、ここで定義しておくと良いでしょう。

ここから先は LFS 変数は不要となります。 すべての作業は LFS ファイルシステム内で行っていくことになるからです。 起動される Bash シェルは $LFS ディレクトリがルート (/ ディレクトリ) となって動作します。

/tools/binPATH 変数内の最後に加わっています。 一時的なツール類は、それぞれの正式版がインストールされていくに従って使われなくなります。 これがうまく動作するのは bash+h オプションを用いることによってハッシュ機能をオフにしているからであり、実行モジュールの場所を覚えておく機能を無効にしているからです。

bash のプロンプトに I have no name! と表示されますがこれは正常です。 この時点ではまだ /etc/passwd を生成していないからです。

[注記]

注記

本章のこれ以降と次章では、すべてのコマンドを chroot 環境内にて実行することが必要です。 例えばシステムを再起動する場合のように chroot 環境からいったん抜け出した場合には、6.2.2.「/dev のマウントと有効化」6.2.3.「仮想カーネルファイルシステムのマウント」 にて説明した仮想カーネルファイルシステムがマウントされていることを確認してください。 そして chroot 環境に入り直してからインストール作業を再開してください。