libtool の .la ファイルはスタティックライブラリにリンクするときだけ使います。 これらはダイナミック共有ライブラリを用いるとき、そして特に autotools 以外のビルドシステムを利用するときには不要であり、潜在的には支障を及ぼします。 したがって chroot の中で、不要なファイルは削除します。
find /usr/{lib,libexec} -name \*.la -delete
一時ツールのドキュメントを削除します。 これを最終的なシステムには持ち込みません。 これによって 35 MB を節約します。
rm -rf /usr/share/{info,man,doc}/*
本節の残りの作業は必須ではありません。 ただし 第 8 章 においてパッケージのインストールを始めていくと、一時的ツールは上書きされていきます。 そこで以下に示すように、一時的ツールのバックアップをとっておくのが良いでしょう。 その後の作業は、ディスク容量が残り少ない場合に限って行えば十分です。
以下の手順は chroot 環境の外から実施します。 これはつまり chroot 環境から抜け出してから手順を進めていくということです。 こうする理由は以下のとおりです。
処理対象とするオブジェクトは、確実に利用していない状態とします。
ファイルシステムへのアクセスは chroot 環境の外部から行います。
バックアップアーカイブの保存や読み込みをするなら、安全のため $LFS
ディレクトリ階層の内部において行うべきではないからです。
chroot 環境からログアウトして、カーネル仮想ファイルシステムをアンマウントします。
以降の手順はすべて root
ユーザーにより実施します。
特にコマンド実行は、よく注意しながら行ってください。 誤ったことをすると、ホストシステムを書き換えてしまうことになります。 環境変数
LFS
はデフォルトで lfs
ユーザーにおいて設定していましたが、root
ユーザーにおいては設定していないかもしれません。 root
ユーザーによりコマンド実行する際にも、LFS
変数を設定してください。 このことは 「変数 $LFS
の設定」 において説明済です。
exit umount $LFS/dev{/pts,} umount $LFS/{sys,proc,run}
LFS パーティションの容量が比較的小さい場合、不要なものは削除することを覚えておきましょう。 ここまでにビルドしてきた実行モジュールやライブラリには、合計で 90 MB ほどの不要なデバッグシンボル情報が含まれています。
そのデバッグ情報を実行モジュール類から取り除くには以下を実行します。
strip --strip-debug $LFS/usr/lib/* strip --strip-unneeded $LFS/usr/{,s}bin/* strip --strip-unneeded $LFS/tools/bin/*
上のコマンド実行ではいくつものファイルがフォーマット不明となって処理がスキップされます。 それらはたいてい、バイナリではなくスクリプトであることを示しています。
--strip-unneeded
パラメーターは
絶対に ライブラリに対して用いないでください。
もし用いるとスタティックライブラリが破壊され、ツールチェーンを構成するパッケージをすべて作り直さなければならなくなります。
この時点において chroot パーティションには最低でも 5 GB の空き容量が必要になります。 これは次のフェーズにて Glibc と GCC をビルドしインストールするためです。 Glibc のビルドとインストールができさえすれば、残りのものもすべてビルド、インストールができます。 空き容量がどれだけあるかは df -h $LFS により確認することができます。
必要となるツールはすべて作り終えました。 ここでバックアップについて考えておきます。 これまでのパッケージビルドにおいて、手順確認を正常に進めていれば、ビルドされた一時的ツールは適切な状態となっています。 後々の再利用を考慮して、バックアップをとっておくべきかもしれません。 この後に続く章において何か致命的な失敗を起こしたとしたら、すべてを取り消して最初から(今度こそ慎重に)やり直すのが、一番良いことです。 ただしそうしてしまうと、一時的ツールもすべて失ってしまうことになります。 せっかく正常にビルドできたものを、また時間をかけて作り直すというのは避けたいところです。 ですからバックアップをとることにしましょう。
root
ユーザーのホームディレクトリにおいて、未使用のディスク容量が最低でも 600 MB はあることを確認してください。 (ソース
tarball もバックアップアーカイブに含めることにしています。)
バックアップアーカイブを生成するために、以下のコマンドを実行します。
cd $LFS && tar -cJpf $HOME/lfs-temp-tools-20210326-systemd.tar.xz .
root
ユーザーのホームディレクトリにバックアップを生成したくない場合は、$HOME
の内容を適切に書き換えてください。
誤操作をしてしまい、初めからやり直す必要が出てきたとします。
そんなときは上のバックアップを復元し、すばやく回復させることにしましょう。 $LFS
配下にソースも配置することにしているので、バックアップアーカイブ内にはそれらも含まれています。
したがって再度ダウンロードする必要はありません。 $LFS
が適切に設定されていることを再度確認した上で、バックアップの復元を行うための以下のコマンドを実行します。
cd $LFS &&
rm -rf ./* &&
tar -xpf $HOME/lfs-temp-tools-20210326-systemd.tar.xz
環境変数が適切に設定されていることを再度確認の上、ここから続くシステムビルドに進んでいきます。
chroot 環境から抜け出して、デバッグシンボルのストリップ、バックアップの生成を行った場合、あるいはバックアップ復元後のビルド作業を開始する場合は、「仮想カーネルファイルシステムの準備」 において説明しているカーネル仮想ファイルシステムを再びマウントすることを忘れないでください。 これを行ってから、再び chroot 環境に入るようにしてください(「Chroot 環境への移行」 参照)。