MacOS Monterey на Linux — быстро и просто?

Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только, чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого 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:

image

Далее вы увидите юзер-френдли терминал с тысячами строк белого текста на черном фоне — не переживайте, это так и должно быть…

image

Через буквально несколько секунд появится такая менюшка, в которой нужно перейти в Disk Utility:

image

В меню Utility в правой колонке выберем тот диск, который создали командой qemu-img. Самый простой признак — его размер будет больше 100 Гб. Здесь важно не ошибиться и не отформатировать не тот диск. Если это случится, придется начинать установку заново.

image

Переименовав диск и нажав Erase, закроем Disk Utility и вернемся к более раннему меню. После выбора Reinstall macOS Monterey нажимаем Agree и выбираем диск, который переименовали и отформатировали в Disk Utility:

image

image

image

Далее появится прогрессбар установки, заполнение которого может занимать много, очень много времени. Рационально отключить у ноутбука спящий режим и оставить его на ночь для успешной установки. После ее окончания вы еще раз увидите немного бегущего белого текста на черном фоне и затем долгожданный экран первоначальной настройки macOS Monterey:

image

Вот и все, дальнейшие действия — как при обычной настройке macOS. Может быть, существуют еще более простые способы запускать Monterey или даже Ventura из-под линуксового хоста, но этот показался наиболее оптимальным по затратам времени и усилий лично мне.
В заключение упомяну, что при запуске уже установленной виртуальной машины можно столкнуться с такой проблемой:

image

В этой ситуации поможет просто перезапустить хост, причем именно выключить, подождать несколько секунд и включить снова, Restart не спас. К сожалению, ничего конкретного о причинах этой ошибки мне узнать не удалось.

mxuanbovcusqgmqdgugvpnql8vq.jpeg

© Habrahabr.ru