mattintosh note

どこかのエンジニアモドキの備忘録

VirtualBox に macOS Catalina 開発環境を作る

不具合報告多数の Catalina さん。開発用なら問題ないでしょうが実機に入れる気にはならないですね。

いつも通りインストール用の ISO 作成。Mojave のときに作っておいたものがそのまま使えたので変数だけ書き換え。8 GB を超えているのでイメージサイズは 9 GB に変更。

#!/bin/bash
 set -e
 set -u
 set -x

name=Catalina
tempfile=$(mktemp -u)
hdiutil create -size 9g -fs HFS+J -layout SPUD ${tempfile}
hdiutil attach ${tempfile}.dmg -noverify -nobrowse -mountpoint /Volumes/Install\ macOS\ ${name}
sudo /Applications/Install\ macOS\ ${name}.app/Contents/Resources/createinstallmedia --nointeraction --downloadassets --volume /Volumes/Install\ macOS\ ${name}
hdiutil detach /Volumes/Install\ macOS\ ${name}
hdiutil resize -size $(hdiutil resize -limits ${tempfile}.dmg | awk 'END { print $1 }')b ${tempfile}.dmg
hdiutil convert ${tempfile}.dmg -ov -format UDTO -o "Install macOS ${name}"
rm ${tempfile}.dmg
mv Install\ macOS\ ${name}.{cdr,iso}

最初のインストール中に再起動してまた ISO から起動するので一旦ディスクを取り外して VM を再起動する。インストール完了後、再起動するが VirtualBox が APFS のパーティションを認識出来ないため再び ISO をセットしてインストーラーのユーティリティからターミナルを起動する。

APFS を読み取れるようにインストーラーに付属されている apfs.efiEFI ボリュームにコピーする。ついでに自動起動するように startup.nsh を作成するが、システムボリュームの UUID を調べておく必要がある。例えばディスクの初期化時に名前を Macintosh HD とした場合は disk1s5 がソレ。

f:id:mattintosh4:20191017161134p:plain
macOS Catalina

volume=disk1s5

# ボリュームの UUID を取得
uuid=$(diskutil info ${volume} | awk '/Volume UUID:/ { print $NF }')

# EFI ボリュームをマウント
diskutil mount /dev/disk0s1

# APFS EFI ファイルを EFI ボリュームにコピー
cp /Volumes/macOS\ Base\ System/usr/standalone/i386/apfs.efi /Volumes/EFI

# startup.nsh を作成
cat >/Volumes/EFI/startup.nsh <<!
load fs0:\apfs.efi
map -r
fs1:\${uuid}\System\Library\CoreServices\boot.efi
!

案の定、糞重い。ディスクイメージの使用サイズは 26 GB くらい。40 GB くらいで用意しておかないと何も出来なさそう。

f:id:mattintosh4:20191017161849p:plain
macOS Catalina