20
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VirtualBoxにmacOS Mojaveをインストールする

Last updated at Posted at 2019-08-02

この方法は実験の末に出来た方法で明確な根拠がありません。実際に試す場合は注意してください。
また、ライセンス違反にならないようMac上のVirtualBoxにインストールするようにしてください。

2019/11/19 macOS Catalinaでも試してみました。少し変更点があったのでこちらをご覧ください。
https://qiita.com/ykgeek/items/3098074c91da6943ef00

2019/12/17 VirtualBoxがAPFSに対応したようです。詳しくはこちらをご覧ください。
https://qiita.com/ykgeek/items/1798c1080c5c5ad5a22e

ここではすでにISOファイル化したmacOS Mojaveのインストールディスクを用意してあることを前提条件にします。

TL;DR

  • Mac high Sierra構成で仮想マシンを作成
  • インストールディスクから起動する
    • ディスクを最初にHFS+で初期化する
    • 通常通りにインストールする
  • インストール中に一度再起動がかかるのでEFI Shellから直接EFIを指定してインストールを続行する (FS1:\macOS Install Data\Locked Files\Boot Files\boot.efi)
  • インストール完了時に再起動がかかるのでインストーラをもう一度起動する
    • ターミナルを起動する
    • diskutil mount /dev/disk0s1でEFI領域をマウントする
    • cp /Volumes/OS X Base System/usr/standalone/i386/apfs.efi /Volumes/EFI/
    • startup.nshファイルを作成する
  • 再起動する。

一体何をしているのか

細かい操作が多いためおそらくTL;DRだけではまともに理解できないと思います。
だたやっていることは意外とシンプルです。

  • 仮想マシンを作成する
  • インストールする
  • APFSのドライバーを用意し、それを読み込んで起動するためのスクリプトを作る

High Sierraあたりからインストール時にディスクのフォーマットがAPFSになりましたがVirtualBoxでは扱うことができないようです。そのためAPFSのドライバーを読み込むことにより対応しています。

仮想マシンを作成する

macOS 10.13 High Sierra (64-bit)構成がMojaveの環境に近いため、こちらをベースにしていきます。そこからさらにいくつか変更する箇所があります。

  • 起動順序からフロッピーディスクを外す
  • ビデオメモリを128MBに変更する
  • インストールディスクをセットする
  • オーディオを無効にする
  • USBポートを3.0対応にする(VirtualBoxにextensionを入れる必要があります。)

メモリとプロセッサーはできるだけ多めに設定しておくと使いやすくなります。

インストールする

仮想マシンを作成したらインストールディスクからmacOSを起動します。
インストールを始める前にインストール先のディスクを初期化します。

フォーマットはHFS+(Mac OS Extended)です。
インストール先のディスクを初期化しておかないとmacOSインストール時にインストール先としてディスクが表示されません。

ディスクを初期化したらいつも通りにインストールをしてください。

インストールは2段階で行われているようで、インストールディスクから必要なデータがコピーされると再起動がかかり、内蔵ディスクから起動してインストールを再開するようです。

ここでの再起動ではうまく起動できないようでEFIシェルに入ってしまいます。
直接起動に必要なファイルを起動させなければいけません。
EFIシェルで

"FS1:\macOS Install Data\Locked Files\Boot Files\boot.efi"

を実行するとインストールが続行されます。

APFSのドライバーをコピーする

インストールが完了すると再起動がかかります。
しかしこの時にはすでに起動ディスクのファイルシステムがAPFSに変換されているためこのままでは起動できません。
そこでAPFSドライバーとドライバーを読み込んで起動するスクリプトを用意します。

もう一度インストーラから起動してください。
インストーラが起動したらターミナルを開きます。
そこで下記のコマンドを実行します。

# EFIパーティションをマウントする
diskutil mount /dev/disk0s1
# APFSドライバーをインストーラーからコピーする
cp /Volumes/OS X Base System/usr/standalone/i386/apfs.efi /Volumes/EFI/
# APFSドライバーを読み込みOSを起動するスクリプトを作成する
cat > /Volumes/EFI/startup.nsh << EOF
load fs0:\apfs.efi
map -r
fs1:\System\Library\CoreServices\boot.efi
EOF

2019/8/10追記
なんらかのタイミングでパーティションの数字が変わってしまうようです。
あまりスマートではありませんが、下記のようにifを使うことである程度柔軟に対応できます。

# EFIパーティションをマウントする
diskutil mount /dev/disk0s1
# APFSドライバーをインストーラーからコピーする
cp /Volumes/OS X Base System/usr/standalone/i386/apfs.efi /Volumes/EFI/
# APFSドライバーを読み込みOSを起動するスクリプトを作成する
cat > startup.nsh << EOF
load fs0:\apfs.efi
map -r
IF EXIST fs1:\System\Library\CoreServices\boot.efi THEN
fs1:\System\Library\CoreServices\boot.efi
ENDIF
IF EXIST fs2:\System\Library\CoreServices\boot.efi THEN
fs2:\System\Library\CoreServices\boot.efi
ENDIF
IF EXIST fs3:\System\Library\CoreServices\boot.efi THEN
fs3:\System\Library\CoreServices\boot.efi
ENDIF
IF EXIST fs4:\System\Library\CoreServices\boot.efi THEN
fs4:\System\Library\CoreServices\boot.efi
ENDIF

EOF

ここまでできたらシャットダウンします。
その後インストールディスクを取り出してください。

macOSを起動する

初回起動時の設定をしたらあとはいつも通り起動します。
macOSの仮想環境をお楽しみください。

あとがき

今回はファイルシステムがAPFSのmacOSを起動する方法を紹介しました。
冒頭でも示した通り、あちこちのWebページをさまよい、実験を繰り返した結果できた方法です。
実際に試す際は注意してください。
もし間違いなどがあればご指摘いただければ幸いです。
また今後も検証を続け、内容を一部アップデートすることがあるかもしれません。

Reference

20
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?