4

QEMU 1.1.0 を使用して、ARM Cortex-A9 で Versatile Express ボードをエミュレートしています。この指示に従って、簡単な「Hello World」の例を起動できました。

http://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-emulate-with-qemu/

しかし、今は自分でファイルシステムを作成したいと思っています。

buildroot のバージョン 2012.05 を使用することにしました。そして、ARM Cortex-A9 ターゲット用のツールチェーン、カーネル、およびファイル システム イメージを作成するように構成しました。

カーネルはバージョン 3.3.7 で、私が選択したファイルシステムは圧縮されていない cpio です。qemu-system-arm への呼び出しの initrd 引数が指している

/output/images/rootfs.cpio

QEMU カーネルを起動すると、次のメッセージが表示されます。

乱数発生器を初期化しています...完了しました。

ネットワークを開始しています...

/dev/ttyS0 を開けません: そのようなデバイスまたはアドレスはありません

/dev/ttyS0 を開けません: そのようなデバイスまたはアドレスはありません

/dev/ttyS0 を開けません: そのようなデバイスまたはアドレスはありません

...

私にできることは、QEMU を終了することだけです。

次のように rootfs.cpio の内容を確認しました。

cpio -t < rootfs.cpio

/dev/ttyS0 があることを確認しました。

ファイルシステムの構成で何かを見逃していませんか? または、ファイルシステムを使用する必要があります

/出力/ターゲット

どういうわけかそこにデバイスを作成し(Buildrootはそれを行いません)、ファイルシステムを再構築しますか?

Buildroot は初めてなので、ヒントや提案は大歓迎です。

4

1 に答える 1

1

rootfs を抽出して ls -all と入力し、その番号/dev/ttyS0を確認します。メジャー番号が必要な番号でない場合、それぞれのカーネル機能は呼び出されず、その場合はジャンク キャラクター デバイスになるだけです。majorminor

また、ログ ファイル全体を投稿できますか (これらの dmesg をすべてコピーし、どこかに投稿して、ここにリンクを提供してください)。

/dev/ttyS0 が存在することが確実な場合は、次の手順を実行します。

  • 抽出 (cpio を使用して解凍) rootfs

  • カーネルが親プロセスとして使用している初期化ファイルを見つけます。運が良ければ、ルート ディレクトリにあるはずです。命名initまたはinitrc

  • initお気に入りのエディターでファイルを開きます。
  • あなたの初期化の数行を開始するのは次のようになります

    ::respawn:/sbin/getty -L 38400 tty1
    ::respawn:/sbin/getty -L 38400 tty2
    ::respawn:/sbin/getty -L 38400 tty3
    ::respawn:/sbin/getty -L 38400 tty4

  • ファイルを追加::respawn:/sbin/ls -all /dev して保存します。( /dev ディレクトリ内に何があるかを確認する list コマンドを追加しました)

  • システムを再起動し、dmesg を確認します。/dev/ttyS0が本当に欠落しているかどうかを確認しますか?
于 2012-07-11T11:10:51.393 に答える