先日入手しました、new gear M4 macBook Air。 これを現在絶賛仕事マシンに調整中なのですが、VirtualBoxでのVM構築にちょっと難儀な部分があったのでメモとして残しておきます。

macOS向けVirtualBoxですが、x86版と結構違うようです。 仕事(授業)での関係で別マシンでWindowsが動いており、こちらと比較するといろいろあって欲しいところがなかったりします。

なおインストールしたのはDebian bookwormのarm64(aarch64)です。

NAT設定はどこだ?

最近だとNAT周りはVMの設定において “expert” 側に切り替えないと出ません。 ですが、この辺りはVBoxManageで設定すると言うことで切り抜けられます(先に気づけ)。

1
2
$ VBoxManage list vms # VMの名前(もしくはUUID)を確認する
$ VBoxManage modifyvm "VM名 or UUID" --nat-pf1 "ssh,tcp,,3022,,22"

といった具合です。これでローカルの3022/tcpからsshに飛びます。

EFI問題

単純にインストールして動くのを確認した後、今後のためにとエクスポートをしてからインポートすると、起動できません。 ヘッドレスモードにしているのでなんでなのかしばらく気づかなかったのですが、EFIブートに問題があることがわかりました。

ヘッドレスか否か問題

1
2
$ VBoxManage modifyvm "VM名 or UUID" --defaultfrontend headless # ヘッドレスモード
$ VBoxManage modifyvm "VM名 or UUID" --defaultfrontend gui # GUIモード 

EFIブートの修正

一旦GUIモードに切り替えて、VMを起動してEFIシェルを出します。 起動に失敗する(grubに繋がらない)と、フォールバックとしてEFIシェルが起動してくれるようです。

EFI Shellにフォールバック

起動時に見えるドライブ(EFIシステムパーティション)はfs0fs1という形で見えます。

Shell> ls fs0:\

とすることで、ルートディレクトリが見えるので、EFIが見えれば幸いです。 一応TAB補完もできます。

これを使ってブートローダーを探していきます。

EFI Shellで確認する

「みぃつけた♪」

ということでこれをローダーに設定します。かなり強引ですが、なぁに、これしか起動しないVMだからな。

Shell> bcfg boot add 2 fs0:\EFI\debian\grubx64.efi "Debian"
#                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
#                   起動に使うEFIファイルのパス(TAB補完可能)
Shell> reset

といった具合で、EFIブートの設定を追加してあげます。 起動が確認できたら、VMを正しく終了してからheadlessモードに戻します。

早くこの辺り、修正してください…