「 2007年07月 」一覧

“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を組み込んでもシリアルポートが使えないからリモートデバッグもできないだろうし…。


激しい雷

ものすごい雷雨で、どうもけっこう近くの何カ所かに落雷したような音がしていたけど…。

停電するんじゃないかとちょっと心配だった。

IMGP0408


久しぶりの早帰り

まだ明るいうちに会社を出ることができたのはいつぶりなんだろうか…

作業が一段落ついたので、今週は早めに仕事を切り上げることができそう。ほんと、今年に入ってからノンストップで忙しかったので、深夜残業だの土曜出勤だのそんなのばっかりだったからなぁ。

来週からは別のタスクが待っているようだけど、それまではちょっとゆったりとしたいところ。でも、天気悪いんだよねぇ。


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

環境構築は時間が取れないので進展なし。

もうひとつ、自分がハマったところをメモ。

buildrootのmake中に↓のような感じのメッセージが出て、cpコマンドのエラーでビルドが止まる場合…。

cp: missing destination file operand after `./buildtool/toolchain_build_arm/xxxxx'

cpコマンドの引数が足りない。コピー元の指定が無いままcpコマンドを実行している。

こんなときは、make menuconfigでbinutilsやgccなどビルドエラーが出たツールのコンフィグファイルを設定している箇所に変な文字が入っていたりする可能性を疑うと良い場合がある。

--- Binutils Options
     Binutils Version (binutils 2.17)  --->
    ()  Additional binutils options      ←こんな感じの場所

たとえばbusyboxのコンフィグファイル指定で見ると、buildroot/.config に空白の設定項目があったら、思い切ってコメントアウトしてみると上手くいくことがある。でも上手くいかないことも。きっと別の原因があるものと…

BR2_PACKAGE_BUSYBOX_CONFIG=""

しかし、こんなところの殴り書きでも読んでくれる人がいるものだ…。


Linux 2.6.22リリースでVirtualPCでキーボードが効かないのが直っている?

VirtualPC 2007にUbuntuなど、2.6.20あたりのカーネルを使っているディストリビューションをインストールすると、キーボードやマウスが効かなくなる現象があったのだけど、これがたぶん2.6.22で直っているのではないかと思われる。まったくの未確認だけれど。

commit d2ada5597d33a9108acb2caf912f85cbc9caab1e
Author: Roland Scheidegger 
Date:   Tue May 8 01:31:40 2007 -0400

  Input: i8042 - fix AUX port detection with some chips

  The i8042 driver fails detection of the AUX port with some chips,
  because they apparently do not change the I8042_CTR_AUXDIS bit
  immediately. This is known to affect at least HP500/HP510 notebooks,
  consequently the built-in touchpad will not work. The patch will simply
  reread the value until it gets the expected value or a retry limit is
  hit, without touching other workaround code in the same area.

  Signed-off-by: Roland Scheidegger 
  Signed-off-by: Dmitry Torokhov 

いちおう、2.6.22以外での回避策としてカーネルのブートパラメータに"i8042.noloop"を追加してブートすると良いらしい。これも未確認。


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

ubuntuでarm(xscale)向けのbuildroot環境作り。

binutilsのコンパイル途中、makeinfoが見つからないと怒られてエラーになっていたのを、binutilsに入っているmissingスクリプトを書き換えて回避。makeinfoコマンドの終了コードがエラーになっているっぽいので強引に無視するように修正。makeinfoコマンド単体ではちゃんと動作していたようだったので。

--- 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)

途中、busyboxのビルドでエラーが出たりしながら、なんとかbuildrootのmakeはすべて通ったっぽい。

…でも、よく見てみると build_arm/staging_dir/bin の下にarm用gccが無い…。make中にgcc本体のビルドが通っていたのは見たので何でできていないんだろう。またハマり。


そういえば

7月でしたねぇ。

今年の追い山は日曜日の朝なので人も多いかもね。


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

W-ZERO3でLinuxをポーティングしている作者のサイトで、開発環境のメモが公開された。

それによると、クロスコンパイル環境はbuildrootというのを使っているらしい。

この間、Gentooでcrossdevを使って環境を作ろうとしてうまくいかなかったので、今度はUbuntuでチャレンジ。

  • Ubuntuに開発環境をインストールする。aptでbuild-essentialを。
  • buildrootのsnapshotを本家サイトからダウンロード
  • buildrootをコンパイルするために必要な、flex、gettext、bison、texi2html、libncurses-dev、texinfoをaptでインストール
  • buildrootを解凍したディレクトリで make menuconfig
  • Linuxカーネルと同じようなコンフィグ画面が出るので、CPUをarm(xscaleサポート)など、作者サイトに書いてあるように設定
  • 設定が済んだら、make。クロスコンパイルに必要なbinutilsやgccは勝手にダウンロードしてくれるっぽい

…ということで今日はここまでの手順をやってみた。

けど、make中にmakeinfoが無いって警告が出た後ビルドが失敗する。makeinfoはtexi2html、texinfoのパッケージをインストールして、パスも通っているんだけどね…


今日は電車

連日タクシー帰りが続いたので今日は頑張って電車で。お金もったいないからね…


帰って寝て仕事して

ここ2ヶ月くらいは、ひたすら家に帰っても寝るだけの生活。

他にほとんどトピックのようなものがない…。

いつまで続くのかな、この生活。


スポンサーリンク