MacOS Monterey на Linux — быстро и просто?
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только, чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.
Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Для начала установим все необходимые пакеты и добавим себя в группу kvm и libvirt:
sudo apt-get install qemu uml-utilities virt-manager git wget libguestfs-tools p7zip-full make dmg2img -y
sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)
Теперь склонируем репозиторий проекта OSX-KVM в домашнюю директорию пользователя:
cd ~
git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git
cd OSX-KVM
git pull --rebase
Приступим к самой установке. Скрипт fetch-macOS-v2.py
позволит скачать образ операционной системы желаемой версии:
./fetch-macOS-v2.py
1. High Sierra (10.13)
2. Mojave (10.14)
3. Catalina (10.15)
4. Big Sur (11.7) - RECOMMENDED
5. Monterey (12.6)
6. Ventura (13)
Скрипт выведет список версий ОС и предложит ввести номер. К сожалению, так и не удалось запустить MacOS Ventura из того образа, который предоставляется репозиторием. Я бы рекомендовал установить Monterey, чтобы пользоваться современными версиями Xcode и других инструментов.
После выбора версии скрипт скачает образ. Подождав завершения скачивания, запустим команду:
dmg2img -i BaseSystem.dmg BaseSystem.img
Следующий, третий, шаг в установке — создадим виртуальный жесткий диск. Желательный объем для установки — не меньше 100 Гб постоянной памяти, чтобы можно было не только установить виртуалку, но и что-то внутри нее.
qemu-img create -f qcow2 mac_hdd_ng.img 128G
Перед тем, как запустить последнюю команду — отредактируем скрипт OpenCore-Boot.sh
.
Строчку:
ALLOCATED_RAM="4096" # MiB
Заменим на:
ALLOCATED_RAM="8192" # MiB
… чтобы использовать 8 Гб при запуске виртуальной машины, а не 4 Гб. При этом желательно, чтобы оперативная память виртуальной машины не превышала половины от общей RAM хоста.
Скорее всего, вам понадобится также закомментировать строку…
-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
… потому что она была нужна в более ранних версиях, а сейчас выдаст ошибку.
Все, теперь мы полностью готовы к финальной стадии. Запускаем скрипт ./OpenCore-Boot.sh
в терминале, который выдаст нам окно Qemu.
Как ни странно, именно на этом этапе что-то может резко пойти не так. Обычно англоязычные туториалы по теме именно в этот момент установки отписываются волшебной фразой «Отлично! Далее следуйте указаниям на экране», но я бы хотел подробно остановиться на основных моментах, на которых сам набил шишки.
Первым появится экран с тремя опциями, из которых выберем macOS Base System:
Далее вы увидите юзер-френдли терминал с тысячами строк белого текста на черном фоне — не переживайте, это так и должно быть…
Через буквально несколько секунд появится такая менюшка, в которой нужно перейти в Disk Utility:
В меню Utility в правой колонке выберем тот диск, который создали командой qemu-img
. Самый простой признак — его размер будет больше 100 Гб. Здесь важно не ошибиться и не отформатировать не тот диск. Если это случится, придется начинать установку заново.
Переименовав диск и нажав Erase, закроем Disk Utility и вернемся к более раннему меню. После выбора Reinstall macOS Monterey нажимаем Agree и выбираем диск, который переименовали и отформатировали в Disk Utility:
Далее появится прогрессбар установки, заполнение которого может занимать много, очень много времени. Рационально отключить у ноутбука спящий режим и оставить его на ночь для успешной установки. После ее окончания вы еще раз увидите немного бегущего белого текста на черном фоне и затем долгожданный экран первоначальной настройки macOS Monterey:
Вот и все, дальнейшие действия — как при обычной настройке macOS. Может быть, существуют еще более простые способы запускать Monterey или даже Ventura из-под линуксового хоста, но этот показался наиболее оптимальным по затратам времени и усилий лично мне.
В заключение упомяну, что при запуске уже установленной виртуальной машины можно столкнуться с такой проблемой:
В этой ситуации поможет просто перезапустить хост, причем именно выключить, подождать несколько секунд и включить снова, Restart не спас. К сожалению, ничего конкретного о причинах этой ошибки мне узнать не удалось.