残るツール類をビルドするために必要なパッケージは、ここまでにすべてビルドしました。 そこで chroot
環境に入って、一時的ツールのインストールを済ませます。 この環境は、最終システムに向けたインストールを行う際にも用います。
root
ユーザーになって以下のコマンドを実行します。 chroot
環境内は、この時点では一時的なツール類のみが利用可能な状態です。
chroot "$LFS" /usr/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ MAKEFLAGS="-j$(nproc)
" \ TESTSUITEFLAGS="-j$(nproc)
" \ /bin/bash --login
本章と次章のパッケージビルドにおいて、論理コアをすべて利用したくない場合、$(nproc)
の部分は、利用したい論理コア数に書き換えてください。
第 8 章 において(特に
Autoconf、Libtool、Tar など)は、テストスイートにおいて MAKEFLAGS
を参照しないものがあり、そこでは環境変数 TESTSUITEFLAGS
が代わりに用いられています。
そこでここでは同様にして、テストスイートを複数コアにより実行するための設定も行います。
env コマンドの -i
パラメーターは、chroot
環境での変数定義をすべてクリアするものです。 そして HOME
,
TERM
, PS1
,
PATH
という変数だけここで定義し直します。 TERM=$TERM
は chroot 環境に入る前と同じ値を
TERM
変数に与えます。 この設定は vim や less
のようなプログラムの処理が適切に行われるために必要となります。 これ以外の変数として CFLAGS
や CXXFLAGS
などが必要であれば、ここで定義しておくと良いでしょう。
ここから先は LFS
変数は不要となります。 すべての作業は LFS
ファイルシステム内で行っていくことになるからです。 chroot コマンドは、$LFS
ディレクトリがルート (/
ディレクトリ) となるようにして Bash シェルを起動します。
/tools/bin
が PATH
内には存在しません。 つまりクロスチェーンは、もはや利用しないということです。
bash のプロンプトに
I have no name!
と表示されますがこれは正常です。
この時点ではまだ /etc/passwd
を生成していないからです。
本章のこれ以降と次章では、すべてのコマンドを chroot 環境内にて実行することが必要です。 例えばシステムを再起動する場合のように chroot 環境からいったん抜け出した場合には、「/dev のマウントと有効化」と 「仮想カーネルファイルシステムのマウント」にて説明した仮想カーネルファイルシステムがマウントされていることを確認してください。 そして chroot 環境に入り直してからインストール作業を再開してください。