こんにちは(((o(゚▽゚)o)))
みかん本『ゼロからのOS自作入門』についてのメモです。
ゼロからのOS自作入門 ではテスト環境としてQEMUというエミュレーターと実機で実行する方法が紹介されていますが、やっぱりなじみがある仮想マシンは VMwareですよね?(みゆき的には Microsoft の VirtualPC が好きでした)
気をつけるポイントと言っても、VMwareで起動させる際に、なかなかうまくいかなくて勝手にはまってただけだったかもしれません。
もし、VMware上で動かしたいのにうまくいかない!という方がいたらこのページにある__4つのこと__を一度試してほしいです。
それと、今のところ起動にUSBメモリ必須です...。
本当はWindowsのインストーラーみたいにisoイメージからブートさせたかったのですが、ダメでした>_<(メモリマップの書き込みにファイル書き込みが発生するからでしょうか・・・?ブートローダー側の工夫でもしかしたら可能になるかもしれないですがまだやってないです。)
vmdkからもブートできるかもしれませんが、未検証です(´;ω;`)ウッ…
動作環境は Windows10 20H2です。
(あと、みかんちゃん(MikanOS擬人化キャラクター)描いたのでよかったらツイッターきてみてみて>_<)
VMwareのバージョンとWindowsのバージョンをチェック
上画像のエラーは Windows10 バージョン2004以降で WSL2 を使っているかつ、古いバージョンのVMWareを使っていると出てくるエラーのようです。
WSL2はCPUの仮想化技術(VT-x)を使っているので競合しないようにVMWare側が対応したバージョンまでアップデートする必要があります。
記事を書いているときの最新はVMware Workstation 16 Player ↓
https://www.vmware.com/jp/products/workstation-player.html
VMwareの設定をUEFI BIOSにする
VMWareの初期設定ではレガシーBIOSモードになっています。MikanOSはUEFIモードのみ対応なので切り替える必要があります。
UEFIモードへの切り替えの方法はOSインストールフォルダ(ワーキングディレクトリ)にある.vmxファイルにfirmware = "efi"
の一文を追加することでできます。
以下の記事を参考にしました。
https://freesoft.tvbok.com/freesoft/virtual/vmware_cd_bios.html
設定でUSBコントローラの追加する際のコツ
今回はUSBフラッシュメモリーからのブートなので、VMwareにUSBメモリを認識させる必要がありますが、本来VMwareはUSBブートに対応していないらしく少し難しいです。
USBフラッシュメモリーからブートする方法はこの解説ページの手順で行えば良いのですが、私の環境だとF2キーを押して表示されるUEFIのメニューが若干違うのと(バージョン差?)MikanOSのブートローダーが入ったUSBメモリを挿しても反応がありませんでした。
なので、一度UEFIのメニューからReset the systemを選択して再起動(USBメモリを挿したまま)してください!
それからまたF2キーを押してUEFIメニューが表示されたところで、USBメモリを抜いて挿しなおすと....
無事、USBメモリが認識しました!あとは仮想マシンに接続にチェックをいれてOKを押すだけです(∩´∀`)∩ワーイワーイ
Windowsの回復ドライブを活用
ここまできても、「なぜかVMWareで起動しない!」という方は最後の手段?裏技です。
WindowsにはWindows自体がトラブルで起動しなくなったときのために、Windows自体を回復させるための小さなOSをUSBメモリ上に作る機能があります。
これは、MikanOSの仕組みとほぼ同じなのでこれを利用し、不要なファイルを削除してMikanOSのブートローダーを配置するともしかしたらうまくいくかもしれません。
Windowsの回復ドライブの作り方
Windowsのサーチボックスに回復ドライブと入れて回復ドライブを開きます。
「システムファイルを回復ドライブにバックアップします。」→チェックボックスを外します。
(チェックボックスをつけているとWindowsOS本体のイメージもインストールされてしまいます)
最後に作成ボタンをクリックすると、回復ドライブの作成が始まって、USBフラッシュメモリーが自動的にFAT32にフォーマットされ中身が全て消え回復ドライブの内容に置き換わります。大体3分~5分くらいで作成されます。
回復ドライブの中身をMikanOSのブートローダーに置き換える
USBメモリ/EFI/Microsoft フォルダを削除します。
USBメモリ/EFI/Boot/bootx64.efi をMikanOSのブートローダーで置き換えます。
あとはカーネルファイルも配置して...OKです!