2008年01月17日

クロスコンパイルに挑戦(して挫折)

D01NXをザウルスで動かすシリーズの外伝です。
そして『自分でもやっていることがあっているのか分からない』記事です…。
# これを所謂『チラ裏』と言うのでしょうか?
訂正、ツッコミよろしくお願いします。m(_ _)m

で、本題。

ザウルスでもD01NXを動かすことが出来る事を実証できたのはいいんですが、速度についてはまだまだ。PCで有効だったusbserial+option(+URB拡張)の組み合わせを試してみたいのですが、そのためにはカーネルモジュールをコンパイルする環境が必要です。

いつまでも他力本願寺はイクナイ!
と、一念発起してクロスコンパイル環境を作ってみました。

ベースとなるのはGentoo Linux
ちょっと最近雲行き怪しいのが悩みの種…。

クロスコンパイルには、風の便りにCodeSourceryのツールチェーンが使えるよ、と言う話を聞いたのですが、私はGentoo野郎らしくcrossdevを使ってみようと思います。

まずはcrossdevemergeします。
emerge -av crossdev

そしたらportageoverlayディレクトリを作成します。
世の中の例にならって場所は /usr/local/portage にしましょう。
mkdir -p /usr/local/portage

ツールチェーンを作成します。ターゲットはarmv5teです。
armv5telってのをpdaXrom界隈では見かけるんですけど、違うんですね。
(実際armv5に"l"というオプションはない → 参考1参考2)
PORTDIR_OVERLAY="/usr/local/portage" crossdev -t armv5te

エラーが出なければ完成です。
では早速optionusbserialを作成してみましょう。
cd /usr/src
cp -pr linux-2.6.23-gentoo-r3 linux-2.6.23-arm
cd linux-2.6.23-arm
make ARCH=arm CROSS_COMPILE=armv5te-linux- menuconfig

いつもとは違うメニューが出てきました!
とりあえずusbserialoptionだけをモジュールにしてmake modules
しようと思ったら、

何と奴らはモジュールに出来ない…。orz

と言うわけで、ただいまここで挫折中。
へるぷみー。


# Gentooカテゴリのデビュー記事がこれかぁ…先が思いやられる


−追記:2008/01/18−
モジュールになってくれないのは、単に、
Enable loadable module support
をONにし忘れていただけでした…とほほ。

−追記その2:2008/01/18−
でも、モジュールのビルドが出来ないことは変わらず。
カーネルソースがx86前提になっているような気がしてならない…。
posted by 月水和尚 (とも) at 17:31 | Comment(9) | TrackBack(0) | Linux(ディストリビューション固有)
この記事へのコメント
Openzaurusの時代に、x86上でビルドするためのbitbakeっていうのがあるようなので、それがAngstromで使えるなら良さそうな感じでしょうか?
使えれば良いんですが未確認です…

と思ったら
http://openzaurus-ja.sourceforge.jp/
ではAngstromもbitbakeで作ってるみたいなんでうちでもできるかも?
Posted by masamura at 2008年01月17日 23:37
masamuraさん

bitbakeは激重という噂を聞いて尻込みしてます…。
うちの開発環境、非力なC7なもんで。
(単にbitbakeの使い方が分からないだけってのもありますが)

ユーザーランドの作成はkenyaくんが詳しいです。
pdaXromも自力でビルドしてたし、bitbakeも使ってたはず。
試作(kenyaくんのサイト)が早く復活するといいんですけどね。
Posted by tomo at 2008年01月18日 00:49
どもっす。

bitbakeはOZおよびAngstromをビルドするのに使用するツールですね。
pdaXromのビルドはなんだっけな…忘れました。

bitbakeではちゃんとビルドしきったことがないですね。ただOpenEmbeddedにあるパッチを拝借するためにOpenEmbeddedのツリーをローカルに取得していました。

試作3号機の道のりは遠いです…(笑
Posted by kenya at 2008年01月18日 14:57
そのまんまpdaxrom-builderじゃなかったっけ?

試作の早期復活求む!!!
(あそこにしか書いてないことが盛りだくさん…)
Posted by tomo at 2008年01月18日 16:45
pdaXrom-builderっていうのが名前なんですが、
元になっているツールがあるんです。
crosstoolだったかな。

ちなみに、make modulesのときも

make ARCH=arm CROSS_COMPILE=armv5te-linux- modules

ってやってますよね?念のため。
Posted by kenya at 2008年01月18日 19:19
kenyaくん

pdaxrom-builderの使ってるツールがあるのね。
bitbakeもそうだけど、その辺の事って難しいし。
情報収集の方法すらぴんと来ないずらよ。

モジュール作るときももちろんARCHとCROSS_COMPILEは指定してるよ。
ただ改めて試してみたら、make時のコマンドは、

make ARCH=arm CROSS_COMPILE=armv5te-unknown-linux-gnu- modules

でした。
この記事書いたとき何でコンパイル実行できてるんだ?

でもやっぱりエラーの嵐…。
GonZがビルドできてるんだからgentoo-sourcesがARM向けにコンパイルできないはずはないんだけどなぁ。む〜。
Posted by tomo at 2008年01月19日 13:21
今、angstromのstable版のクロスコンパイルしたディレクトリを見たところ、usbserial、正確には kernel-module-usbserial_2.6.23-r14ってーipkがあるのを確認しました。
必要ですか。?15K程度なんでメールでもおくれるかも。む?もしかするとangstromのfeedからも落とせるかもしれませんね。
えー、ちなみに私はOpenZaurus-ja関係者ですんで、bitbakeのことなのでも気楽にご質問ください。
Posted by shizaru at 2008年01月20日 21:11
shizaruさん

情報ありがとうございます!
まだ記事にしてないんですが、カーネルモジュールのコンパイルは何とかうまく行きました(ちょっとアクロバティックなやり方ですが)。ただ期待していたusbserial+optionの組み合わせはうまく動かず。ちょっとがっかりです。近日中に記事書きますので、そちらをご覧いただければと思います。

OpenZaurus-ja関係者とは心強いです!モジュールのコンパイルもbitbakeで作ったヤツならOKとかありそうなので、もしかしたらビルドをお願いする(もしくはビルド環境構築を指南していただく)かもしれません。その時はよろしくお願いいたします。

ちなみに、Angstromで日本語の読み書きが出来る環境を作るのは大変ですか?現在のテスト環境がAngstromなので、ユーザーランドとしてAngstromがそのまま使えれば一番話が早いと思っているのですが、私の中ではAngstrom(というかOpenZaurus)は日本語に弱いという印象があるので…。
Posted by tomo at 2008年01月21日 12:48
shizaruさんって、OZ-jaの中の人だったんですね。

monotoneとかbitbakeとか、手探りでごにょごにょしてたので、もう涙目でしたよwww

Android動かすのに必要なのは、OpenBinderと電源管理に組み込まれているtimerだけなので、bitbake用のメタパッケージをそのうち書きたいと思ってはいるんですが。PokyにはAndroid用のコンフィグがあるらしいんで。

あー。Andrid動かした時のHDDアクセス。あれ、/tmpにshared memory作ってるんです。ので、chroot後にprocとかマウントする時に、ついでに/tmpをtmpfsでマウントしてあげれば、なくなります。動作もちょっと軽くなってうれしい。
Posted by 安藤恐竜 at 2008年01月21日 22:07
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。