unix
March 13, 2023

Виртуальные истории. Часть 1: MacOS в эмуляторе

Как получить быструю виртуальную MacOS Ventura в линуксе. В этот раз через QEMU + KVM + скрипты.

Вот что-то такое должно быть в результате.

Трек для статьи:

Ничего сильно нового или необычного тут нет, тема старая и рабочая. Руководств, наборов скриптов и всяких гайдов в интернете также уже куча, я остановился вот на этом.

Все манипуляции производились на ноутбуке Dell G3, с 32Гб памяти и SSD.

Настоятельно рекомендую также использовать что-то производительное, поскольку MacOS (тем более последняя) чрезвычайно прожорливая.

Еще вам будет нужно ~50Гб свободного места на диске.

Я использовал Mageia Linux, официальный гайд от авторов руководства — для Ubuntu.

Но коль уж вы залезли так далеко, что собираетесь разворачивать виртуальный мак на линуксе — полагаю вам уже глубоко похер на дистрибьютив.

Подготовка

Устанавливаем вот этот параметр:

echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs

В репозитории проекта есть готовая настройка modprobe для постоянной настройки:

sudo cp kvm.conf /etc/modprobe.d/kvm.conf  # for intel boxes only, after cloning the repo below

Устанавливаем пакеты.

Для ubuntu:

sudo apt-get install qemu uml-utilities virt-manager git \
    wget libguestfs-tools p7zip-full make dmg2img -y

Для Mageia:

urpmi qemu git wget virt-manager libguestfs-tools libgu p7zip make dmg2img

Добавляем своего пользователя в группы, для использования KVM:

sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)

Нужно будет выйти из сессии для применения этих изменений.

Клонируем репозиторий со скриптами

cd ~
git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git
cd OSX-KVM

Скачиваем образ:

Конвертируем в RAW-образ, с которым может работать Qemu:

Создаем виртуальный диск, на который виртуальная MacOS будет установлена:

qemu-img create -f qcow2 mac_hdd_ng.img 128G

Запускаем:

./OpenCore-Boot.sh

Выбираем иконку с диском и нажимаем "Enter":

Выбираем «Disk Utility»:

Выбираем созданный выше образ диска и форматируем:

Возвращаемся в меню.

Поскольку MacOS поставляется с оборудованием Apple, чистой пользовательской установки не существует, поэтому в меню оно называется «Reinstall», т. е. «Переустановка».

Соглашаемся и клянемся соблюдать лицензионное соглашение, во славу Луны:

Выбираем отформатированный диск:

Ждем...

Выбираем страну:

Надеюсь вам не не нужно, так что просто пропускаем:

Пропускаем Apple ID, его можно установить позже:

Еще раз соглашаемся и продолжаем:

Создаем учетку:

Выбираем временную зону:

Выбираем цвет:

Ощущаем гордость за страну, прогнувшую даже Apple:

И вот он — ваш виртуальный мак:

Настройка сети

Вот таким скриптом создается виртуальный адаптер:

#!/usr/bin/env bash
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up promisc on
sudo ip link set dev virbr0 up
sudo ip link set dev tap0 master virbr0

Который подцепляется Qemu при запуске.

Для Ventura будет необходимо модифицировать скрипты запуска OpenCore-Boot :

  # убираем вот эту строку:
  # -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
  # добавляем вот эту:
  -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27 

Там же я добавил пару параметров для решения проблем с размером экрана:

 -monitor stdio
 -device VGA,vgamem_mb=128

Работающая сеть: