Buildroot を用いた各種イメージのビルド

SBC6000X向けにBuildrootを用いたビルド手順です。

1. ビルド

SBC6000X向けバイナリをBuildrootを用いてビルドします。

1.1. ソースコードの入手

SBC6000X向けBuildrootのソースコード buildroot-2011.08-pylone1-sbc6000x.tar.bz2 をダウンロードします。

1.2. ソースコードの展開

ソースコードを適当な作業ディレクトリに展開します。

$ tar jxf buildroot-2011.08-pylone1-sbc6000x.tar.bz2

展開したディレクトリに移動します。

$ cd buildroot-2011.08-pylone1-sbc6000x

1.3. ビルド開始

ビルドを開始します。

$ make sbc6000x_defconfig
$ make

ビルドが正常に終了すれば output/images/ に必要なバイナリが出来上がります。なお、カーネル・モジュールは各種ルートファイルシステム・イメージ内の /lib/modules/3.0.4/kernel/drivers/ 以下に含まれています。

マシンスペックにもよりますが初回ビルドではツールチェインのビルドから開始するため数十分から数時間程度要します。

2. ダウンロード・エラー

Buildrootではビルドするソースコードは基本、各ダウンロード・サイトよりダウンロードします。そのダウンロード・サイトが停止してしまっている場合ダウンロード・エラーでビルドが停止してしまいます。

ただし、Buildrootはtopディレクトリ配下の "dl/" というディレクトリにソースコードをダウンロードするので何らかの方法により "dl/" に目的のソースコードを配置することでダウンロード処理をスキップさせることが可能です。

2.1. 既にビルドしたディレクトリが別に存在する場合

localなどに既にBuildrootでビルドしたディレクトリが別途存在する場合は、そのBuildrootの "dl/" からコピーすればダウンロード処理自体がスキップされビルドが可能になります。

既存の buildroot-sbc6000x/dl/ にも存在しないソースコードは別途ダウンロードする必要があります。

2.2. 既にビルドしたディレクトリが存在しない場合

localなどにもビルド済みのBuildrootが存在しない場合は、ミラーサイトなどから手動で同バージョンのソースコードをダウンロードし、buildroot-sbc6000x/dl/ に配置すればダウンロード処理がスキップされビルドが可能になります。

3. ビルド・エラー

必要なライブラリやヘッダファイルがホストOSに存在しないと、Buildrootでビルドの際エラーで停止してしまうことがあります。その対処法を紹介します。

3.1. ビルド・エラー 1: (host-module-init-tools)

host-module-init-tools(module-init-tools) のビルドにおいて

/usr/bin/ld: cannot find -lc
collect2: ld はステータス 1 で終了しました

というエラーで停止してしまった場合 glibc-static パッケージが必要となります。

ホストOSがFedora(14)の場合、次のようにしてパッケージをインストールします。

# yum install glibc-static

その後、再ビルドします。

$ make

3.2. ビルド・エラー 2: (host-mtd)

host-mtd(mtd-utils)のビルドにおいて

In file included from mkfs.ubifs.c:23:0:
mkfs.ubifs.h:48:23: fatal error: uuid/uuid.h: そのようなファイルやディレクトリはありません
コンパイルが中断されました。
make[2]: *** [buildroot-sbc6000x/output/build/host-mtd-1.4.2/mkfs.ubifs/mkfs.ubifs.o] エラー 1
make[2]: ディレクトリ `buildroot-sbc6000x/output/build/host-mtd-1.4.2/mkfs.ubifs' から出ます
make[1]: *** [subdirs_mkfs.ubifs_install] エラー 2
make[1]: ディレクトリ `buildroot-sbc6000x/output/build/host-mtd-1.4.2' から出ます
make: *** [buildroot-sbc6000x/output/build/
host-mtd-1.4.2/.stamp_host_installed] エラー 2

というエラーで停止してしまった場合 libuuid-devel パッケージが必要となります。

ホストOSがFedora(14)の場合、次のようにしてパッケージをインストールします。

# yum install libuuid-devel

その後、ビルド途中の host-mtd をクリーンしてからビルドを再開します。

$ make host-mtd-clean
$ make
cc