Возникла потребность общения с Mac OS. Несмотря на то, что дистрибутив из семейства Unix, свободного и простого доступа к нему нет. Возможные варианты:
- Покупка Mac.
Качественно, автономно, дорого…
- Установка Hackintosh на x86-совместимый ПК.
Познавательно, нестабильно, муторно…
- Установка Mac OS на виртуальную машину
Непроизводительно, неудобно, универсально…В данный момент решено остановиться именно на этом варианте. Установка производится в Ubuntu 21.10. После завершения установки, планируется использовать ВМ как под Ubuntu, так и под Windows.
Т.к. Mac OS, это точно не про работу в виде сервиса, то установка в VMWare, Hyper-V, Xen, KVM кажется нецелесообразной. Тогда как в VirtualBox требуется минимальный уровень подготовки, а виртуальной машиной можно будет пользоваться в любой ОС, куда способен установиться VirtualBox.
Получение дистрибутива и установка VirtualBox
mkdir ./virtualbox-distrib cd ./virtualbox-distrib wget https://download.virtualbox.org/virtualbox/6.1.26/virtualbox-6.1_6.1.26-145957~Ubuntu~eoan_amd64.deb sudo dpkg -i virtualbox*.deb
Исправление нарушенных зависимостей
sudo apt -f install -y
Получение и установка Extension Pack
wget https://download.virtualbox.org/virtualbox/6.1.26/Oracle_VM_VirtualBox_Extension_Pack-6.1.26-145957.vbox-extpack VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.26-145957.vbox-extpack
Установка необходимых пакетов и создание ВМ с macOS
sudo apt install -y dmg2img mkdir /mnt/DATA/VirtualMachine/macOS cd /mnt/DATA/VirtualMachine/macOS wget https://raw.githubusercontent.com/myspaghetti/macos-guest-virtualbox/master/macos-guest-virtualbox.sh sed -i 's/storage_size=80000/storage_size=100000/' ./macos-guest-virtualbox.sh bash -i ./macos-guest-virtualbox.sh
После запуска скрипта установки следует обратить внимание на сообщение:
The script interacts with the virtual machine twice, please do not interact with the virtual machine manually before the script is finished.
Т.е. когда появятся окна “Language”, “Utilities”, “Terminal” установщика Mac OS, в терминале Ubuntu необходимо нажать Enter для продолжения работы скрипта (2 прохода по 3 окна). Первое взаимодействие с окном ВМ происходит только после завершения работы скрипта.
Удаление временных файлов после выключения ВМ
./macos-guest-virtualbox.sh prompt_delete_temporary_files
Смена разрешения экрана и коэффициента масштабирования ВМ
VBoxManage setextradata macOS VBoxInternal2/EfiGraphicsResolution 1600x900 VBoxManage setextradata macOS GUI/ScaleFactor 2
Включение аудио
VBoxManage modifyvm macOS --audio pulse VBoxManage modifyvm macOS --audioin on VBoxManage modifyvm macOS --audioout on
Создание снимка ВМ
VBoxManage snapshot "macOS" take "pre 10.15.7" --description "Final stage of macOS Catalina installation"
Установка VirtualBox Guest Additions в Mac OS
- После входа в Mac OS необходимо запустить терминал, с помощью которого включить “Recovery Mode” и перезагрузить систему:
sudo nvram "recovery-boot-mode=unused" sudo reboot
- После входа в “Recovery Mode” необходимо запустить терминал из раздела Utilities, с помощью которого отключить “System Integrity Protection”, установить “Developer ID Сertificate”, отключить “Recovery Mode” и перезагрузить систему:
csrutil disable spctl kext-consent add VB5E2TV963 nvram -d recovery-boot-mode reboot
- После входа в Mac OS необходимо запустить терминал, с помощью которого изменить права доступа в каталог с расширениями:
sudo mount -uw / sudo chown :admin /System/Library/Extensions/ sudo chmod 775 /System/Library/Extensions/
- Смониторвать диск с VirtualBox Guest Additions и запустить установщик.
- После завершения установки VirtualBox Guest Additions необходимо запустить терминал, с помощью которого изменить права доступа в каталог с разрешениями, включить “Recovery Mode” и перезагрузить систему:
sudo chown :wheel /System/Library/Extensions/ sudo chmod 755 /System/Library/Extensions/ sudo nvram "recovery-boot-mode=unused" sudo reboot
- После входа в “Recovery Mode” необходимо запустить терминал из раздела Utilities, с помощью которого включить “System Integrity Protection”, отключить “Recovery Mode” и перезагрузить систему:
csrutil enable nvram -d recovery-boot-mode reboot
Включение буфера обмена и Drag and Drop
VBoxManage modifyvm macOS --clipboard-mode bidirectional VBoxManage modifyvm macOS --draganddrop bidirectional
Запуск ВМ в Windows
Несмотря на то, что VirtualBox отлично работает совместно с Hyper-V, Mac OS в такой конфигурации запускаться отказывается – загрузка прерывается с “Kernel Panic”. Чтобы этого избежать, необходимо отключить Hyper-V и перезагрузить систему:
bcdedit /set hypervisorlaunchtype off shutdown -r -f