“W-ZERO3[es]でLinux”のためにbuildrootの環境を作る(まとめ)

とりあえず、zImageの作成までできたのでまとめ。

ポイントとしては、buildrootはなるべく最新版を使うこと。どうも前回環境構築したときのsnapshotと昨日今日あたりのバージョンでは動作が違う。snapshotを新しいのにしたらすんなりと行った。

とりあえず手順をおさらい。

  • ubuntuは標準では開発環境がインストールされていないので、sudo aptitude install build-essentialで開発環境をインストール。
  • buildrootのsnapshotを本家サイトからダウンロード。もしこの後の手順やビルドでうまくいかないときは、svnからチェックアウトしてくるか次のsnapshotが出るのを待つのが吉かもしれない
  • buildrootをコンパイルするために必要な、flex、gettext、bison、texi2html、libncurses-devをインストール
  • 作者Wikiサイトには、binutilsなどをあらかじめダウンロードしておくように書いてあるが、実際はこの後のmake中に勝手にダウンロードしてくれる
  • buildrootを解凍したディレクトリで make menuconfig
  • Linuxカーネルと同じようなコンフィグ画面が出るので、CPUをarm(xscaleサポート)など、作者Wikiサイトに書いてあるように設定
  • 設定が済んだら、make。クロスコンパイルに必要なbinutilsやgccは勝手にダウンロードしてくれる
  • 途中、binutilsのmake中にmakeinfoが見つからないというエラーで止まる場合は、buildroot/toolchain_build_arm/binutils-2.17/missing を以下のように修正する

--- missing.old 2007-07-08 22:18:09.000000000 +0900
+++ missing 2007-07-08 01:04:28.000000000 +0900
@@ -106,9 +106,9 @@
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case "$1" in
- lex|yacc)
+ lex|yacc|makeinfo)
# Not GNU programs, they don't have --version.
;;

tar)

  • buildrootのmakeがエラー無くすべて通ったら、buildroot/build_arm/staging_dir/usr/bin 以下にarm-linux-gcc など、ターゲット環境(ARM用Linux)向けのコマンドがいろいろと作られていることを確認
  • buildroot/ 以下にrootfs.arm.cpioファイルが出来ていることを確認。 
  • buildroot/build_arm/staging_dir/usr/bin を環境変数PATHに追加

buildroot関係の手順はここまで、以下はLinuxカーネルのビルド

  • buildroot/build_arm/に、linux-2.6.21あたりのカーネルがあるのでシンボリックリンク"linux"を張る
  • cd linux
  • 作者Wikiにあるとおりにコマンドを打つ
  • make ARCH=arm CROSS_COMPILE=arm-linux- mrproper
  • make ARCH=arm CROSS_COMPILE=arm-linux- allnoconfig
  • make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
  • コンフィグ画面では作者サイトにあるとおりに設定。もしかするとConsole Display Driverの設定で"VGA text console"をはずし、"Frame buffer console support"を入れた方が良いのかも?
  • カーネルのビルド。make ARCH=arm CROSS_COMPILE=arm-linux-
  • ビルドがエラー無く終わったら arch/arm/boot/ にzImageが生成されていることを確認。

あとは、[es]にコピーしてloaderから起動!

…だけど、作者曰くの"カーネルを一部修正する必要あり"というのと、LCDドライバの調整をしていないのでそのままでは100%?起動しないのでは。私の[es]だと画面が真っ白になってフリーズした。

カーネルデバッガが使えれば、こういう起動時のデバッグもできるんだろうが、kgdbを組み込んでもシリアルポートが使えないからリモートデバッグもできないだろうし…。

コメント

タイトルとURLをコピーしました