linuxを動かしてみたいと思います。
1. linuxカーネルのビルド
kernel.orgからダウンロードしてビルドします。3.xもありますが、今回は2.6を選んでみました。ここでコンフィギュレーションは次のようにしておきます。
で、ビルド。
ビルドできたらイメージを確かめてみます。
2. とりあえずQEMUに放り込んでみる
ここでQEMUのビルドのとき、--target-listオプションにarm-softmmuを仕込んでおいた効果が出ます。linuxカーネルを動かすときはqemu-system-armコマンドを使います。私はx11vncを使っているので、-vnc :0オプションでvncに出力して見ています。linuxデスクトップで試している場合はナシでOKです。それから先にvncのセッションが存在している場合も良くない場合があるので、止めておきます。x11vncなら下記です。
実行してみると、kernel panicで落ちています。
ということで、rootを指定しろ、と言われます。
3. ダミーファイルシステムの作成
ルートファイルシステムに指定するためのダミーを作成します。適当なディレクトリで、下記のようにエディタでcコードを書いてください。続いてコンパイル。
ここで-staticにしておくのがミソのようです。
cpioコマンドでルートファイルシステムに変換します。
で、これをルートに指定して実行します。-kernelオプションの引数は正しいカーネルの位置を指定してください。
すると、cコードに書いたとおり、Hello World!を出力する様子が確認できると思います。
トラブルシューティング。
◆実行時
oss: Could not initialize DAC
oss: Failed to open `/dev/dsp'
oss: Reason: No such file or directory
oss: Could not initialize DAC
oss: Failed to open `/dev/dsp'
oss: Reason: No such file or directory
audio: Failed to create voice `lm4549.out'
下記を入れてから実行します。
----
Unimplemented flash cmd sequence
これは、 grepしてみるとkernelではなくQEMUのhw/pflash_cfi01.cが出していることがわかります。この辺で調べてみたところ、どうやらQEMUのバージョンが古いのがダメらしい。このブログの前回のQEMUでARMの記事で、当初1.3.1を入れたとか書いてたりしてたんですが、1.4以降を入れる必要があったようです。ここで最新のReleaseをDLしましょう。
参考情報
Using QEMU for Embedded Systems Development, Part 1
Compiling Linux kernel for QEMU ARM emulator
Architectures/ARM/HowToQemu
0 件のコメント:
コメントを投稿