Buildroot を用いた各種イメージのビルド
SBC6000X向けにBuildrootを用いたビルド手順です。
- 1. ビルド
- 1.1. ソースコードの入手
- 1.2. ソースコードの展開
- 1.3. ビルド開始
- 2. ダウンロード・エラー
- 2.1. 既にビルドしたディレクトリが別に存在する場合
- 2.2. 既にビルドしたディレクトリが存在しない場合
- 3. ビルド・エラー
- 3.1. ビルド・エラー 1: (host-module-init-tools)
- 3.2. ビルド・エラー 2: (host-mtd)
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-sbc6000x1.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その後、再ビルドします。
$ make3.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
著作権と免責
Copyright © 2012 Pylone, Inc.
この文書の著作権は株式会社パイロンが保有します。
この文書は「現状のまま(as is)」で提供され、明示的であるかどうかを問わず、内容についてなんら保証するものではありません。
この文書には、技術的な誤り、誤植、不適格な表現や未完成部分等を含む可能性があります。従って、この文書は予告無しに追加、変更、削除される可能性があります。
この文書は「クリエイティブ・コモンズ-表示-2.1-日本 以降」(CC-by-2.1 or later) の下で配布されています。