実行環境や必要なソフト
実行環境
・パソコン Dell Inspiron AMD Ryzen7 8840U
・OS Windows11 Home
必要なソフト
・QEMU→CLI操作の仮想化ソフト
・OVMF→UEFI公式が公開するQEMU用UEFI
OVMFのインストール
OVMFについて、情報がどうにも少なくて苦戦しました。
WebサイトによればEDK2のリポジトリをビルドしろ!なんですが、
私はどうも面倒だったので、AIに聞いてみたらOVMFのコードが
QEMUのインストールサイトにあると言うではないですか!
という事で、そのOVMFのコードが置いてあるサイトを載せます。
https://qemu.weilnetz.de/test/ovmf/usr/share/OVMF/
<方法>
①今回は、"OVMF_CODE.fd"と"OVMF_VARS.fd"の二つのファイルを
インストールします。
②普通に押すと{~ÔïÓ`}とか言ってくるので、
右クリック→「名前を付けて名前を保存」を選択すると、
ダウンロード出来ます。(お好きなディレクトリに保管してください)
ちなみに、OVMF_CODE.fdの方がUEFIのコード、OVMF_VARS.fdの方がUEFIの設定を保存するディスクスペースです。
ただ単純にUEFIをQEMUで起動する
qemu-system-x86_64 -bios (your directry)\OVMF_CODE.fd -boot menu=on
①-biosオプション
このオプションで、BIOSでの起動が出来ます。-biosのみではただBIOSが起動します。なのでOVMF_CODE.fdとファイルを指定してやると、UEFIで起動してくれます。
②-boot menu=on
Interactive boot menus/prompts can be enabled via as far as firmware/BIOS supports them. The default is non-interactive boot.menu=on(QEMU公式)
QEMUのアプリ側から、boot時動かせる様になるコマンドらしいです。
保存も出来るようにして、起動する
(10月27日追記内容)
実は上記のままでは、UEFIの設定情報を保存する事が出来ません。ここからは、QEMUの機能に関する説明を交え、説明していこうと思います。色々AIに聞きながらなんですけどね...(ドキュメント読んでた世代には尊敬の念)
qemu-system-x86_64 -m 2048
-drive if=pflash,format=raw,readonly=on,file=(yourdirectry)\OVMF_CODE.fd
-drive if=pflash,format=raw,file=(yourdirectry)\OVMF_VARS.fd
-drive file=(yourdirectry)\disk.img,format=raw
-boot menu=on,order=c
<変更点>無くなった-bios
このオプションは"ファイルをBIOSとして"読み込ませる、というものらしいです。だからUEFIには向いていないそうです。
この場合は、-driveオプションを使って、かつ読み込み専門という設定にしてUEFIを起動します。
①-driveオプション
お気を付けください。どのオプションの引数は全てスペース無し、そうじゃないとエラーです。時々間違えてしまうんですよね。
-driveオプションでは、HDDとか色々追加出来ます。
ちなみに、以下のファイルを入れる事が出来ます。それ以外にも色々
・imgファイル ー HDDのファイル。FAT32でフォーマットされており、
エクスプローラで見ると、USBメモリの様に扱える。
仮想マシンの中ではHDDの様に振る舞う。
・pflash ー プログラミングフラッシュメモリ。
本来はマイコンのファームウェアが保存される場所。
今回はUEFIのファイルを入れる。
(ちなみに)「imgファイルを作る方法」
qemu-img create -f raw (yourdirectry)\disk.img 64M
rawっていうのは、一つのフォーマット方法です。qcow2とかもあったはず。思い通りのサイズでファイルを作れます。
②-bootオプション
order=cはHDD優先で、実行するプログラムを探すという引数。
menu=onというのは、こちら側からいじりやすくするための引数。
無論、これも引数は,と引数の間にスペースは作らない方が良さそう。
<お詫び>実はこの方法、ある場合とても遅いです。
UEFIの内容を保存しているのは、HDDでは無くpflashです。だからorder=cとHDD優先を指定すると、UEFIがブートするEFI\BOOT\BOOTX64.EFI(UEFIでOS自作する時は、.imgファイルを選択してその中にこんな感じのファイル構造を作ってみな、飛ぶぞ!作ったことない人が言って、すみません...)が見つからないため、Shellにたどり着くまでに数分かかります。それが嫌な人は、Shellのプログラムを(Shell.efi)ブートに組み込めとか言うのですが、そこまでは流石に出来ませんでした。
今回の内容、ほぼAIに頼りっきりなんですよね...
AI無しでもWebと一次資料で突破できる、そんな情報収集力の高い人間でありたいなぁと司馬遼太郎の「街道をゆく」を見ながらつくづく思っております。(あの本、Webも無かった時代によくあんなに地域の話してるから凄いもんです)