LFS on VirtualBox に挑戦 その2 - ツールチェーンの構築

2015.02.09 Author: Jas

こんにちは、Jasです。
前回準備をした仮想マシンを使って、LFSの構築を進めていきます。

LFSでは、二段階の手順を踏んでシステムを構築していきます。
まず初めにホストシステムに依存しない一時的環境=ツールチェーン (コンパイラー、アセンブラー、リンカー、ライブラリ、ユーティリティ等) をLFSのパーティション内に構築します。
次にchrootでLFS内にログインし、このツールチェーンを使って、実際のシステムに必要な環境を構築していきます。
今回は最初のステップ、ツールチェーンの構築までを行います。

まず初めに、前回作成したLFS用のパーティションに必要なディレクトリを作成し、ビルド作業のための準備を行います。(前回準備した通り、LFS=/mnt/lfs とします)
$LFS/sources には、書き込み権限とスティッキーを付与します。
/tools のシンボリックリンクを作成するのは、常に/tools ディレクトリを参照したツールチェーンを構築し、次のステップでchrootした際にも動作するようにするためです。

# mkdir -v $LFS/sources
# chmod -v a+wt $LFS/sources
# mkdir -v $LFS/tools
# ln -sv $LFS/tools /

また、一時的環境の構築用にLFSユーザーを作成します。

# groupadd lfs
# useradd -s /bin/bash -g lfs -m -k /dev/null lfs
# passwd lfs
# chown -v lfs $LFS/tools
# chown -v lfs $LFS/sources

次にLFSの構築に必要なパッケージをすべて$LFS/sources 配下にダウンロードします。
パッケージをダウンロードする際には、wget-listを使用すると便利です。
日本語版のLFSブックでは、日本国内のミラーサイトからパッケージをダウンロードする方法が紹介されているので、その手順に従ってパッケージをダウンロードしましょう。

これでツールチェーン構築の準備が整いました。
ここから先の作業は、先ほど作成したLFSユーザーで行い、ツールチェーンは$LFS/tools 内に構築されます。
念のためにビルド作業を始める前には、環境変数 LFSが正しく設定されていること、LFSユーザーでログインしていることを確認しましょう。

基本的にはLFSブックの5章に記載されている手順に従って、ひたすらパッケージをビルドしていけば問題ありません。
ただし、LFSブックの5章の各手順の説明は、

  1. ソースディレクトリ($LFS/sources)に移動する

  2. LFSユーザーで該当パッケージを展開し、展開したディレクトリ内に移動した状態でビルド作業を始める

  3. あるパッケージのビルドが終わったら、毎回ソースディレクトリに戻り、ビルド作業中に作成したディレクトリはすべて削除する

という約束事を守る前提になっているので注意しましょう。

例えば、最初のBinutils-2.24のビルド作業だと以下のようになります。

$ cd $LFS/source
$ tar xvf binutils-2.24.tar.bz2
$ cd binutils-2.24
--- 5.4. Binutils-2.24 - 1回めの説明はこの続きから ---
$ mkdir -v ../binutils-build
$ cd ../binutils-build
$ ../binutils-2.24/configure \
--prefix=/tools \
--with-sysroot=$LFS \
--with-lib-path=/tools/lib \
--target=$LFS_TGT \
--disable-nls \
--disable-werror
$ make
$ case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
$ make install
--- 5.4. Binutils-2.24 - 1回めの説明はここまで ---
$ cd ..
$ rm -rf binutils-2.24
$ rm -rf binutils-build

なお、一番最初のBinutils-2.24の1回目ですが、このパッケージのコンパイル時間が、今後他のパッケージをビルドする際の必要時間の目安(標準ビルド単位)となるので、コンパイルに何分ぐらいかかったか計測しておくとよいでしょう。

LFSブックの5章の手順に従って、ツールチェーンのすべてのパッケージのビルドが完了したら、ツールチェーンの所有者をrootに変更します。

# chown -R root:root $LFS/tools

これでLFS構築用のツールチェーンが完成したので、この時点でツールチェーンのバックアップを取っておきましょう。
(この時点でバックアップを取っておかないと、続きの作業を行う中でツールチェーンの中身に変更が加えられるため、今後別のLFSシステムのビルド作業を行う際には使えないものになってしまいます)

次回からがやっと、LFSシステムの構築本番!?となります。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ