Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/f18/65c/3aa/f1865c3aa59cb587698fd49dfdcc4e97.png)
Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Для начала установим все необходимые пакеты и добавим себя в группу kvm и libvirt:
Теперь склонируем репозиторий проекта OSX-KVM в домашнюю директорию пользователя:
Приступим к самой установке. Скрипт
Скрипт выведет список версий ОС и предложит ввести номер. К сожалению, так и не удалось запустить MacOS Ventura из того образа, который предоставляется репозиторием. Я бы рекомендовал установить Monterey, чтобы пользоваться современными версиями Xcode и других инструментов.
После выбора версии скрипт скачает образ. Подождав завершения скачивания, запустим команду:
Следующий, третий, шаг в установке — создадим виртуальный жесткий диск. Желательный объем для установки — не меньше 100 Гб постоянной памяти, чтобы можно было не только установить виртуалку, но и что-то внутри нее.
Перед тем, как запустить последнюю команду — отредактируем скрипт
Строчку:
Заменим на:
… чтобы использовать 8 Гб при запуске виртуальной машины, а не 4 Гб. При этом желательно, чтобы оперативная память виртуальной машины не превышала половины от общей RAM хоста.
Скорее всего, вам понадобится также закомментировать строку…
… потому что она была нужна в более ранних версиях, а сейчас выдаст ошибку.
Все, теперь мы полностью готовы к финальной стадии. Запускаем скрипт
Как ни странно, именно на этом этапе что-то может резко пойти не так. Обычно англоязычные туториалы по теме именно в этот момент установки отписываются волшебной фразой «Отлично! Далее следуйте указаниям на экране», но я бы хотел подробно остановиться на основных моментах, на которых сам набил шишки.
Первым появится экран с тремя опциями, из которых выберем macOS Base System:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/4b5/842/941/4b5842941cbfe1a520bbbac6cf52a2ff.png)
Далее вы увидите юзер-френдли терминал с тысячами строк белого текста на черном фоне — не переживайте, это так и должно быть…
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/5c8/ca4/dd7/5c8ca4dd781841984e5b8b42a107dc81.png)
Через буквально несколько секунд появится такая менюшка, в которой нужно перейти в Disk Utility:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/389/a23/175/389a23175b6ebc38d9961ec570045662.png)
В меню Utility в правой колонке выберем тот диск, который создали командой
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/c64/594/397/c6459439711ba43605eee50032dcdf9d.png)
Переименовав диск и нажав Erase, закроем Disk Utility и вернемся к более раннему меню. После выбора Reinstall macOS Monterey нажимаем Agree и выбираем диск, который переименовали и отформатировали в Disk Utility:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/0da/533/8f5/0da5338f5c957387fe3c30b56a21e0f7.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/da3/0ff/9f1/da30ff9f1aaf5db319e0a69f50e7c441.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/9eb/b1e/afc/9ebb1eafcadea2437c617ebcc20c5f1b.png)
Далее появится прогрессбар установки, заполнение которого может занимать много, очень много времени. Рационально отключить у ноутбука спящий режим и оставить его на ночь для успешной установки. После ее окончания вы еще раз увидите немного бегущего белого текста на черном фоне и затем долгожданный экран первоначальной настройки macOS Monterey:
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/967/3c9/91a/9673c991a8d687f0a21d72dfea0e4d3f.jpg)
Вот и все, дальнейшие действия — как при обычной настройке macOS. Может быть, существуют еще более простые способы запускать Monterey или даже Ventura из-под линуксового хоста, но этот показался наиболее оптимальным по затратам времени и усилий лично мне.
В заключение упомяну, что при запуске уже установленной виртуальной машины можно столкнуться с такой проблемой:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/29e/21e/283/29e21e283f7d43e99133d62006515900.png)
В этой ситуации поможет просто перезапустить хост, причем именно выключить, подождать несколько секунд и включить снова, Restart не спас. К сожалению, ничего конкретного о причинах этой ошибки мне узнать не удалось.
![](https://habrastorage.org/r/w1560/webt/b5/pj/of/b5pjofdoxth14ro-rjsrn7sbmiy.png)
![image](https://habrastorage.org/getpro/habr/post_images/f18/65c/3aa/f1865c3aa59cb587698fd49dfdcc4e97.png)
Никакого 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](https://habrastorage.org/getpro/habr/post_images/4b5/842/941/4b5842941cbfe1a520bbbac6cf52a2ff.png)
Далее вы увидите юзер-френдли терминал с тысячами строк белого текста на черном фоне — не переживайте, это так и должно быть…
![image](https://habrastorage.org/getpro/habr/post_images/5c8/ca4/dd7/5c8ca4dd781841984e5b8b42a107dc81.png)
Через буквально несколько секунд появится такая менюшка, в которой нужно перейти в Disk Utility:
![image](https://habrastorage.org/getpro/habr/post_images/389/a23/175/389a23175b6ebc38d9961ec570045662.png)
В меню Utility в правой колонке выберем тот диск, который создали командой
qemu-img
. Самый простой признак — его размер будет больше 100 Гб. Здесь важно не ошибиться и не отформатировать не тот диск. Если это случится, придется начинать установку заново.![image](https://habrastorage.org/getpro/habr/post_images/c64/594/397/c6459439711ba43605eee50032dcdf9d.png)
Переименовав диск и нажав Erase, закроем Disk Utility и вернемся к более раннему меню. После выбора Reinstall macOS Monterey нажимаем Agree и выбираем диск, который переименовали и отформатировали в Disk Utility:
![image](https://habrastorage.org/getpro/habr/post_images/0da/533/8f5/0da5338f5c957387fe3c30b56a21e0f7.png)
![image](https://habrastorage.org/getpro/habr/post_images/da3/0ff/9f1/da30ff9f1aaf5db319e0a69f50e7c441.png)
![image](https://habrastorage.org/getpro/habr/post_images/9eb/b1e/afc/9ebb1eafcadea2437c617ebcc20c5f1b.png)
Далее появится прогрессбар установки, заполнение которого может занимать много, очень много времени. Рационально отключить у ноутбука спящий режим и оставить его на ночь для успешной установки. После ее окончания вы еще раз увидите немного бегущего белого текста на черном фоне и затем долгожданный экран первоначальной настройки macOS Monterey:
![image](https://habrastorage.org/getpro/habr/post_images/967/3c9/91a/9673c991a8d687f0a21d72dfea0e4d3f.jpg)
Вот и все, дальнейшие действия — как при обычной настройке macOS. Может быть, существуют еще более простые способы запускать Monterey или даже Ventura из-под линуксового хоста, но этот показался наиболее оптимальным по затратам времени и усилий лично мне.
В заключение упомяну, что при запуске уже установленной виртуальной машины можно столкнуться с такой проблемой:
![image](https://habrastorage.org/getpro/habr/post_images/29e/21e/283/29e21e283f7d43e99133d62006515900.png)
В этой ситуации поможет просто перезапустить хост, причем именно выключить, подождать несколько секунд и включить снова, Restart не спас. К сожалению, ничего конкретного о причинах этой ошибки мне узнать не удалось.
![](https://habrastorage.org/webt/b5/pj/of/b5pjofdoxth14ro-rjsrn7sbmiy.png)