uchan-nos / os-from-zero

『ゼロからのOS自作入門』(内田公太著、マイナビ出版)のサポートサイトです
https://zero.osdev.jp/
250 stars 10 forks source link

WSL2 & Ubuntsu20.04.6 & QEMU利用時の環境構築での問題 #167

Open uchan-nos opened 5 months ago

uchan-nos commented 5 months ago

@akatsuki-kk さんからの質問。 https://github.com/uchan-nos/mikanos-build/issues/36#issue-2237617875 から転載。


環境構築上での質問です。 第1章でQEMU上で「Hello world」を出力したいのですが、UEFIのコンソール画面で止まり、出力画面まで遷移しません。 考えられる原因と、ディスクファイルを開き「hello world」を表示する部分についてご教授いただきたいです。

現状

screenshot 731

screenshot 732

前提

ファイル構造($HOME以下)

uchan-nos commented 5 months ago

@akatsuki-kk disk.img が正しく作成できていないのかな、と推測しています。 disk.img を作った手順(コマンド列とコマンドの出力)をすべて教えていただけますか?

akatsuki-kk commented 5 months ago

質問の場を間違えた点はご迷惑をおかけしました。申し訳ありません。 disk.imgファイルの作成手順は以下の流れで行いました。

cd workspace/hello\ world/
qemu-img create -f raw disk.img 200M
mkfs.fat -n 'MIKAN OS' -s 2 -f 2 -R 32 -F 32 disk.img
mkdir -p mnt
sudo mount -o loop disk.img mnt
sudo mkdir -p mnt/EFI/BOOT
sudo cp BOOTX64.EFI mnt/EFI/BOOT/BOOTX64.EFI
sudo umount mnt

qemu-system-x86_64 \
-drive if=pflash,file=$HOME/osbook/devenv/OVMF_CODE.fd \
-drive if=pflash,file=$HOME/osbook/devenv/OVMF_VARS.fd \
-hda disk.img

最後のqemuを起動するコマンドでは以下のログが出ました。

WARNING: Image format was not specified for '/home/x/osbook/devenv/OVMF_CODE.fd' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
WARNING: Image format was not specified for '/home/x/osbook/devenv/OVMF_VARS.fd' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
WARNING: Image format was not specified for 'disk.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

試行するたびに、workspace/hello world内の disk.img mntディレクトリ を削除しています。また、qemuの起動コマンドはrun_qemu.shを利用する方法でも試していますが、起動できないです。

rkarsnk commented 5 months ago

とりあえず,まずはWARNINGを消してみましょうか.

qemu-system-x86_64 \
-drive if=pflash,format=raw,readonly=on,file=$HOME/osbook/devenv/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=$HOME/osbook/devenv/OVMF_VARS.fd \
-drive if=ide,index=0,media=disk,format=raw,file=`pwd`/disk.img
akatsuki-kk commented 5 months ago

返信ありがとうございます。 warning の表示が消えましたが、BIOSからimgファイル内のOSが起動できませんでした。 一度ubuntuを削除し入れなおし、環境を再度構築して、mikanosの実行を確認したのですが、まだ起動できない状況が続いています。 推測では、BIOSでStart PXE over IPv4と最初に出ているため、disk.imgがBIOSに認識されていないと思います。 マウント前後でdisk.imgの内容が書き換わっていることもsumコマンドで確認済みです。

screenshot 734

uchan-nos commented 4 months ago

もしかして、UEFI 内での起動優先順の設定が UEFI Shell > 自作 OS となっていて、自作 OS より先に UEFI Shell が起動してしまっているのかも、と思い立ちました。 QEMU 起動直後に F2 キーを連打すると UEFI(Tiano Core)の設定画面が開くと思うので、そこで Boot order の変更をしてみたらどうなるでしょうか?

手元の環境での Boot order 設定画面 image

akatsuki-kk commented 4 months ago

返信ありがとうございます。 BootOrderでInternal shellが最も下にあったので、OSが読み込めていなさそうです。 screenshot 745

また、関係があるかはわからないですが、AddBootOptionの項目でOSのファイルが見つかったので、これを読み込めばいいかもしれないです。 screenshot 746 ディスクファイルのディスクイメージの場所や読み込む方法について理解したいです。よろしくお願いいたします。

uchan-nos commented 4 months ago

手元では「UEFI QEMU HARDDISK QM00001」を選ぶと MikanOS が起動しました。

image

Add Boot Option はちょっと使い方が分かりません。 確かに自作 OS の名前が表示されますが、この後何をするとどんな効果があるのか私には分かりません。

disk.img を返信で添付していただいて、私の手元で起動実験してみましょうか?

akatsuki-kk commented 3 months ago

返信が遅くなり申し訳ありません。osファイルはこちらです。 アップロードの都合上、zipファイルに圧縮しています osfile.zip

pomcho555 commented 1 month ago

WSL2上のUbuntu 22.04LTSでも同様の問題を確認しました。

$cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy