はじめに
スクリプトを使って構築したmacOS Catalina仮想マシンを構築・破棄するためのスクリプトについて説明します。
使用しているスクリプトは、githubにvm-configurateとして公開しているのでgithubからダウンロードするかここからダウンロードしてください。
vm-configurateのフォルダ構成については、下のリンクを参照してください。
/host-osx/macOS-Catalina/vm-create.command
macOS Catalina仮想マシンを構築するためのスクリプトです。
スクリプトファイルの場所をカレントディレクトリにしています。
SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"
スクリプトの実行ディレクトリにmacOS Catalinaのインストールメディアとなるisoファイルが存在しないかを判定し、存在しない場合は、isoファイルの作成処理を行っています。
if [ ! -e "${SCRIPT_DIR}/Catalina.iso" ]; then
...
fi
macOS Catalinaのインストーラーとなるisoファイルを作成するための元となるmacOS Catalinaのインストーラーが存在しない場合はsoftwareupdateコマンドでApple社からダウンロードしています。
if [ ! -e "/Applications/Install macOS Catalina.app" ]; then
softwareupdate --fetch-full-installer --full-installer-version 10.15.6
fi
インストーラーを書き込むための8Gのディスクイメージを作成しています。
hdiutil create -o "${SCRIPT_DIR}/Catalina" -size 8G -layout SPUD -fs HFS+J -type SPARSE -volname Catalina
作成したディスクイメージをマウントしています。
hdiutil attach "${SCRIPT_DIR}/Catalina.sparseimage" -noverify -mountpoint "/Volumes/Catalina"
macOS Catalinaのインストーラーに含まれているcreateinstallmediaコマンドを使ってマウントしたディスクイメージにインストーラーを書き込んでいます。
sudo "/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia" --volume "/Volumes/Catalina" --nointeraction
ディスクイメージをデタッチしています。
hdiutil detach "/volumes/Install macOS Catalina"
ディスクイメージを仮想マシンで使えるiso形式のファイルに変換しています。
hdiutil convert "${SCRIPT_DIR}/Catalina.sparseimage" -format UDTO -o "${SCRIPT_DIR}/Catalina.cdr"
ファイルの拡張子とcdrからisoに変更しています。
mv "${SCRIPT_DIR}/Catalina.cdr" "${SCRIPT_DIR}/Catalina.iso"
不要になったディスクイメージを削除しています。
rm "${SCRIPT_DIR}/Catalina.sparseimage"
VirtualBox上のmacOS Catalinaの仮想マシンの名前を定義しています。
VM_NAME="macOS-Catalina"
VirtualBox上にVM_NAMEに定義されて仮想マシンが存在しないかを判定し、存在しない場合は仮想マシンの構築処理を行っています。
if [ ! "`vboxmanage list vms | grep '"'"${VM_NAME}"'"'`" ]; then
...
fi
VirtualBoxに作成する仮想マシンをvboxmanageコマンドで設定しています。
設定可能なパラメータは、ここを参照してください。
vboxmanage createvm -name "${VM_NAME}" -register
VM_DIR=$(dirname "`vboxmanage showvminfo "${VM_NAME}" --machinereadable | grep -e "^CfgFile=" | sed -e 's/^CfgFile="//' -e 's/"$//'`")
vboxmanage createmedium disk -filename "${VM_DIR}/${VM_NAME}.vdi" -size 100000 --format vdi
vboxmanage storagectl "${VM_NAME}" --name "SATA" --add sata --controller IntelAhci
vboxmanage storageattach "${VM_NAME}" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "${VM_DIR}/${VM_NAME}.vdi"
vboxmanage storageattach "${VM_NAME}" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium "${SCRIPT_DIR}/Catalina.iso"
vboxmanage modifyvm "${VM_NAME}" --ostype MacOS_64
vboxmanage modifyvm "${VM_NAME}" --acpi on
vboxmanage modifyvm "${VM_NAME}" --chipset piix3
vboxmanage modifyvm "${VM_NAME}" --mouse usbtablet
vboxmanage modifyvm "${VM_NAME}" --keyboard usb
vboxmanage modifyvm "${VM_NAME}" --firmware efi
vboxmanage modifyvm "${VM_NAME}" --rtcuseutc on
vboxmanage modifyvm "${VM_NAME}" --cpus 2
vboxmanage modifyvm "${VM_NAME}" --memory 4096
vboxmanage modifyvm "${VM_NAME}" --vram 128
vboxmanage modifyvm "${VM_NAME}" --audiocontroller hda
vboxmanage modifyvm "${VM_NAME}" --audioin on
vboxmanage modifyvm "${VM_NAME}" --audioout on
vboxmanage modifyvm "${VM_NAME}" --usbxhci on
vboxmanage modifyvm "${VM_NAME}" --nic1 nat
vboxmanage modifyvm "${VM_NAME}" --nictype1 virtio
vboxmanage modifyvm "${VM_NAME}" --clipboard bidirectional
vboxmanage modifyvm "${VM_NAME}" --draganddrop bidirectional
vboxmanage setextradata "${VM_NAME}" GUI/ScaleFactor 2.00
VBoxManage startvm "${VM_NAME}"
/host-osx/macOS-Catalina/vm-destroy.command
macOS Catalina仮想マシンを破棄するためのスクリプトです。
スクリプトファイルの場所をカレントディレクトリにしています。
SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"
VirtualBox上のmacOS Catalinaの仮想マシンの名前を定義しています。
VM_NAME="macOS-Catalina"
VirtualBox上にVM_NAMEに定義されて仮想マシンが存在するかを判定し、存在する場合は削除処理を実行しています。
if [ "`vboxmanage list vms | grep '"'"${VM_NAME}"'"'`" ]; then
...
fi
VM_NAMEに定義された仮想マシンを停止しています。
vboxmanage controlvm "${VM_NAME}" poweroff
VM_NAMEに定義された仮想マシンを破棄しています。
vboxmanage unregistervm "${VM_NAME}" --delete
Comment