uchan-nos/os-from-zero

2度目以降のQEMU実行に失敗する

Closed this issue · 3 comments

QEMUを実行すると2回目以降ブートプログラムが実行されず、暴走してしまいます。(RIPの値で確認)
ブートプログラムの内容にかかわらずです。

原因を探ったところ、osbook/devenv/OVMF_VAR.fdが1度目の実行において書き換えられていることがわかりました。
配布されている元のOVMF_VAR.fdに置き換えると、また1度だけ正常に動きます。

OVMFに関する理解がほぼ皆無なので、OVMF_VAR.fdがざっくりなんであるかと、今後の対応についてご教授いただければ幸いです。

@kamex120

OVMF_VAR.fdは、UEFIのNVRAMとして機能します。

QEMUの起動オプションに-boot menu=onを追加すると、5秒をカウントするインジケータが表示されるので、その間にF12もしくはESCキーを押して、UEFI BIOSメニューに入ってください。

UEFI BIOSメニューで、Boot Maintenance Manager -> Boot Options -> Change Boot OrderでUEFI QEMU HARDDISKが先頭になるように設定して、試してみてください。

ありがとうございます。
設定を変更して再起動してもこの画面で止まってしまいました。
ここでもう一度UEFI BIOSメニューに入って設定変更が反映されているのは確認できています。
image

とりあえず、今は以下のようにすることで上述の現象を一応回避できてはいます。
run_image.shで、qemu-system-x86_64の直前に以下の行を挿入

cp -f /path/to/osbook/devenv/OVMF_VARS.fd_original /path/to/osbook/devenv/devenv/OVMF_VARS.fd

QEMUを実行すると2回目以降ブートプログラムが実行されず、暴走してしまいます。
実はこの現象の内容がよくわかってないのですが、disk.imgの中身が空だったりとかしませんか?

run_mikanos.shなのスクリプトは便利ですが、処理内容整理するために、自分専用の起動スクリプトを作成してみるのも一つの手です。