2017-12-10 21 views
3

私はコンパイル済みのLinuxカーネル(バージョン4.9) とサンプルプログラムで作成したinitfsでqemu-armを実行しようとしました。Qemu-Armは黒い画面で動いています - バニラカーネルを実行しています

これは、hereの優れた投稿に基づいています。

その後、
qemu-system-arm -M vexpress-a9 -kernel linux-4.9/arch/arm/boot/zImage -initrd initramfs -append "console=tty1" 

、QEMUは私にこれらのエラーを示しており、そのグラフィカルウィンドウが立ち往生されています:

これは私が実行したコマンドがある

pulseaudio: set_sink_input_volume() failed 
pulseaudio: Reason: Invalid argument 
pulseaudio: set_sink_input_mute() failed 
pulseaudio: Reason: Invalid argument 
でも、私はせずにそれを実行したときに - カーネルを読み込むためのinitrdパラメータ - 何も起こりません。

thisの例でvmlinuz-3.2.0-4-vexpressイメージで実行しようとしたとき、私のために働いていました。

誰かが問題であるかもしれない手がかりを持っていますか?それはzImageであるという事実と何か?それをデバッグする方法はありますか?

ありがとうございます!

答えて

0

「QEMUはそこに座って何も印刷しません」というのはよくある症状で、「正しく設定されていないため、何かを印刷できるようになる前にゲストカーネルがクラッシュした」ということです。これはかなりあなたが実際のハードウェア上で誤って設定されたカーネルをブートしようとした場合、あなたが取得し、それをデバッグするためのプロセスはほぼ同じで、同じ効果である:中:

  • は、明らかなカーネル設定オプションが正しく設定されているチェック特に、実行しようとしているARMボードとCPUをサポートするために構築したもので、コンソール出力に使用しようとしているデバイスのサポートを有効にしていることを確認してください。
  • シリアルポート情報を出力するようにQEMUを設定し、コンソール出力をシリアルに送信するようにゲストを設定することができます。また、earlycon/earlyprintkオプションを有効にすることもできます(シリアル出力はグラフィック出力より早く発生します。 Linux ke rnel earlycon/earlyprintkオプションは、カーネルのデフォルト出力より早く出力を開始することを意味します)
  • カーネルが動作していれば、それがない場合はカーネルコンフィグレーションの違いを見て、何か
  • 他のすべてが失敗した場合、あなたは

に何が起こっているかを調べるために、デバッガを抜け出すために持っているこのことについて何も特にQEMUの特定ではありません - それはあなたがあなたの場合は通過する必要があり、痛みの同じ種類ですハードウェアでカーネルを立ち上げようとしています。

PS:私の最初の推測は、十分なメモリがないためにカーネルがクラッシュしているということです。あなたはQEMUに '-m'オプションを渡していないので、デフォルトは128MBです。 vexpress-a9ボードは最大1GBを処理できます。 earlyconはおそらくこの問題を識別するのに十分なデバッグ出力になるでしょう。また、-dtbを介してデバイスツリーブロブを渡すこともありません。これは、新しいカーネル(古いカーネルはうまくいなくてもうまく起動します)の問題かもしれません。

+0

私は最大量のメモリを設定しましたが、それでも何もしません。 また、アンドロイドエミュレータで運行しようとしました... この場合、qemuモニターが助けてくれるのですか? – sborpo

+1

あなたがカーネルをコンパイルしたと仮定したvexpressボードのエミュレータではないので、アンドロイドエミュレータは役に立たないでしょう。デバイスツリーBLOBを提供しようとしましたか?それ以外の場合は、私が上記の推奨するデバッグ方法を試してください。 –

+0

実際にはdtbで動作しますが、それがないとそれを行う方法がありますか?カーネルのパラメータは?私はboot.imgからそれらを知っています – sborpo

関連する問題