LINUX.ORG.RU

Как получить быструю виртуальную macOS Ventura в линуксе

 , ,


7

2

В этот раз через 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

Устанавливаем пакеты. Для убунты:

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)

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

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

cd OSX-KVM

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

./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)

Choose a product to download (1-6): 4

Нужно будет выбрать Ventura.

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

dmg2img -i BaseSystem.dmg BaseSystem.img

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

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

Запускаем:

./OpenCore-Boot.sh

Установка

Дальше запускается уже графический инсталлятор, пошаговые картинки из которого есть в оригинальной статье. Тут привожу лишь текстовое описание.

Выбираем иконку с диском и нажимаем «Enter». Выбираем «Disk Utility».

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

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

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

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

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

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

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

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

#!/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
★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Только в следующий раз обрати внимание, что теги разделяются запятыми. Если поставить пробелы, движок ЛОРа попытается эту конструкцию воспринять как один тег (разумеется, несуществующий).

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Ок, я буду тогда текстовые версии выкладывать дальше, как в свежем скрине про сборку дотнета.

alex0x08 ★★★
() автор топика

Ничего про проброс видео( Баловство.

dumauz ★★
()

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

А есть инструкция для AMD? Или если у тебя AMD ты просто не запускаешь эту инструкцию?

Unixson
()
Последнее исправление: Unixson (всего исправлений: 1)

эмм, такой вопрос.
то что скачивается BaseSystem.dmg ~650mb это нормально?
просто со времен пика популярности hackintosh"ей, ванильная весила как минимум ~5гб, а уж всякие iAtkos'ы и того более.
вероятно, оно в процессе докачает что необходимо?-.-

etwrq ★★★★★
()
Ответ на: комментарий от Unixson

Да, это настройка специфичная для процессоров Intel.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от etwrq

то что скачивается BaseSystem.dmg ~650mb это нормально?

Да, после конвертации dmg2img будет больше.

оно в процессе докачает что необходимо?

да.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от kknight

За наводку спасибо, но оно внутри на том же самом OSX-KVM:

quickemu will automatically download the required OpenCore bootloader and OVMF firmware from OSX-KVM.

Optimised by default, but no GPU acceleration is available. Host CPU vendor is detected and guest CPU is optimised >accordingly. VirtIO Block Media is used for the system disk where supported. VirtIO usb-tablet is used for the mouse. VirtIO Network (virtio-net) is supported and enabled on macOS >Big Sur and newer but previous releases use vmxnet3. VirtIO Memory Ballooning is supported and enabled on macOS Big >Sur and newer but disabled for other support macOS releases. USB host and SPICE pass-through is: UHCI (USB 2.0) on macOS Catalina and earlier. XHCI (USB 3.0) on macOS Big Sur and newer. Display resolution can only be changed via macOS System >Preferences. Full Duplex audio requires VoodooHDA OC or pass-through a USB >audio-device to the macOS guest VM. NOTE! Gatekeeper and System Integrity Protection (SIP) need to be disabled to install VoodooHDA OC File sharing between guest and host is available via virtio-9p >and SPICE webdavd. Copy/paste via SPICE agent is not available on macOS.

macOS App Store

If you see «Your device or computer could not be verified» when you try to login to the App Store, make sure that your wired ethernet device is en0. Use ifconfig in a terminal to verify this.

If the wired ethernet device is not en0, then then go to System Preferences -> Network, delete all the network devices and apply the changes. Next, open a terminal and run the following:

sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist Now reboot, and the App Store should work.

Про аппстор видимо надо добавить в статью.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от intel

Нет, надо пробрасывать GPU. Время будет - сделаю.

Если есть интерес то вот тут про то как это сделать. Тут про выбор карты для проброса.

alex0x08 ★★★
() автор топика

Можно на этой виртуалке разрабатывать и выкладывать полученное в эплплей?

foror ★★★★★
()
Ответ на: комментарий от foror

По идее да, но лично не пробовал, да и наверное уже не получится проверить. По очевидным причинам.

alex0x08 ★★★
() автор топика

Как же мне нравится когда в репе лежит что то бинарное и проприетарное. Модификации лучших васянов

DumLemming ★★
()
Ответ на: комментарий от DumLemming

Да я тоже люблю по git ядра линукса лазить. Такой-то набор блобов.

alex0x08 ★★★
() автор топика
20 мая 2023 г.

быстрая она только если пробрасывать поддерживаемый gpu в неё

если ставить на ноут с одним gpu - qe/ci там не будет

smilessss ★★★★★
()
Ответ на: комментарий от smilessss

хотя нет

есть такая штука как Intel GVT-g

можно и один гпу интеловский раздать и на вируталку

smilessss ★★★★★
()

Оно работает быстрее, чем через VirtualBox? В нём отрисовка GUI местами очень тормозит, как слайдшоу.

alex1101
()
Ответ на: комментарий от alex1101

KVM абсолютно точно всегда быстрее чем полная эмуляция как в VirtualBox. Если отрисовка тормозит то на уровне клиента - Xorg или Wayland. Проблема там а не в эмуляторе.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

полная эмуляция как в VirtualBox

VB юзает абсолютно ту же процессорную виртуализацию, что и KVM. Но графика внутри макоси там софтовая, как и в KVM - потому тормозит абсолютно идентично.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

VB юзает абсолютно ту же процессорную виртуализацию

Нет, много лет гонял MacOS в виртуалке и KVM во всех случаях быстрее - а я гонял XCode и эмулятор iPhone. Проброс видеокарты влияет на рендер но не на общую производительность ОС.

alex0x08 ★★★
() автор топика
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от alex0x08

Нет, много лет гонял MacOS в виртуалке и KVM даже визуально быстрее

Давай бенчмарки. Учитывая, что VB это вообще форк QEMU, вообще разница сомнительна.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Блин да вбей в гугол: kvm vs virtualbox и получишь свои бенчмарки.

Какой же я все-таки старый, еще помню времена когда пять звезд что-то значили и предполагалось что старожилы ЛОРа как минимум чето понимают.

https://superuser.com/questions/1663164/performance-issues-with-kvm-versus-virtualbox https://blog.purestorage.com/purely-informational/kvm-vs-virtualbox-which-one-should-you-use/ https://cyanogenmods.org/kvm-vs-virtualbox/

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Цитирую прямо из твоих ссылок.

For graphical performance, KVM doesn't support 3D acceleration (VirtualBox sort of almost does to a usable extent), but for 2D it is pretty decent if you install the paravirtualized QXL driver and use Spice instead of VNC protocol for accessing it.

То есть ровным счетом то, о чем я тебе говорю. В случае макоси - думаю, пофигу - потому что драйверов все равно нет ни на что.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Слушай ну не позорься уж так: сравнивать «KVM is a type 1 or “bare metal” hypervisor, meaning it runs directly on the host machine’s physical hardware.» и userland эмулятор? Серьезно?

Из моих же ссылок:

KVM is massively better than VirtualBox. Windows takes a lot of hand holding to get the best performance when virtualizing, and KVM probably doesn’t care about pandering to it by default.

Если у тебя фетиш на 3D-ускорение интерфейса и кровь из носа как нужна отзывчивость MacOS - сделай проброс видеокарты. Гайдов тьма, в статье есть ссылки. Мне лично просто это не было надо тк занимаюсь работой а не онанизмом.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Слушай ну не позорься уж так

Вот и действительно, тебе лучше иногда молчать. Потому что технически между QEMU-KVM (никакого KVM не существует, потому что KVM - это ядерный модуль с интерфейсом к аппаратной виртуализации), и VirtualBox начала образовываться после форка QEMU. В случае с VB - у него просто свой модуль для доступа к процессорной виртуализации, и до недавнего времени эти два модуля даже вместе быть загружены не могли, т.к. дрались за один ресурс.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Госспади да сколько можно ) VirtualBox появился в 2007м году, 16 мать его лет назад. Уже девушки выросли, готовые к любви за это время а ты все херню несешь про:

VirtualBox начала образовываться после форка QEMU

16 лет назад! 16! Это было бы смешно если бы не было печально. Сама возможность запуска MacOS через Qemu и KVM появилась лет 5 назад, возможность проброса видеокарты - ну не старше. Это все новые технологии, со всеми вытекающими.

А ты ноешь и придираешься, вместо того чтобы улучшать и восхищаться.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

VirtualBox появился в 2007м году, 16 мать его лет назад

Какое отношение это имеет к тому, что он основан на кодовой базе QEMU?

Сама возможность запуска MacOS через Qemu и KVM появилась лет 5 назад

Больше. Как и в VB. Но ты продолжай держать нас в курсе.

А ты ноешь и придираешься, вместо того чтобы улучшать и восхищаться.

Пока что ноешь только ты, и то - потому что тебе известно чем поводили по губам за твой агрессивный дилетантизм, сиречь ламерство обыкновенное.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Да тут даже обсуждать нечего (кроме твоих гомосексуальных фантазий): не имеет VirtualBox к QEMU отношения от слова совсем.

VirtualBox появился на публике лишь когда его Оракл начал спонсировать как альтернативу VWare. Скоростью он никогда не отличался и как что-то быстрое не позиционировался. Архитектурно VirtualBox всегда был другим - это всегда было user-friendly приложение с гуем, сразу в комплекте были утилиты для создания образов дисков и сразу был модуль ядра. В том числе под FreeBSD, например. В отличие от Qemu, который до сих пор представляет собой горку консольных утилит.

Я пользовался и пользуюсь VirtualBox под кучей разных ОС фактически с момента его появления (минимум с 2010 года), пользуюсь для работы, в том числе гоняю там MacOS на регулярной основе.

Я патчил VirtualBox вручную в исходниках, чтобы запускать гостевую MacOS под FreeBSD: https://img2.teletype.in/files/d5/3e/d53e6106-b932-42aa-99a6-62fefa23e681.png

Вообщем рассказывать мне про VirtualBox и производительность, тем более с гостевым MacOS - примерно как своего папу учить детей делать. Не уверен только что он у тебя есть.

То что ты откопал факт форка из Qemu в мохнатых годах ради срача - чистая шиза, в лоровском стиле, никакого отношения к реальности не имеющая.

Хочешь поспорить по делу - вперед: пиши свою статью, делай замеры производительности и тд. Но мы же все знаем что ты скажешь да?
Нет времени ко-ко-ко, некогда и так далее.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Да тут даже обсуждать нечего (кроме твоих гомосексуальных фантазий): не имеет VirtualBox к QEMU отношения от слова совсем.

У кого что болит. VB - форк QEMU, это медицинский факт. Они тащат часть вещей QEMU по-прежнему (а почему бы и нет), хотя и не являются «одним и тем же» продуктом.

Оракл начал спонсировать как альтернативу VWare

Во-первых, Sun. Во-вторых, VMware. Учи матчасть.

Я пользовался и пользуюсь VirtualBox под кучей разных ОС фактически с момента его появления (минимум с 2010 года)

Мальчик, 2010 год - это то время, когда я уже забыл больше, чем ты знаешь сейчас. Про сейчас - и говорить нечего.

в том числе гоняю там MacOS на регулярной основе.

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

Я патчил VirtualBox вручную в исходниках, чтобы запускать гостевую MacOS под FreeBSD

Какими ты извращениями занимался, пока никто не видит - оставь при себе. VB на FreeBSD - это вообще очень забавно и стоит отдельной порки.

Хочешь поспорить по делу - вперед: пиши свою статью, делай замеры производительности и тд.

Бремя доказательства лежит на утверждающем. Вперед, на мины.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

2010 год - это то время, когда я уже забыл больше, чем ты знаешь сейчас. Про сейчас - и говорить нечего.

Ок, из уважения к твоему возрасту еще раз, последний раз.

KVM is a type 1 or “bare metal” hypervisor, meaning it runs directly on the host machine’s physical hardware.

Да, VirtualBox поддерживает KVM:

kvm - recommended for Linux guests

Как нетрудно догадаться, MacOS это ни разу не линукс, поэтому VirtualBox просто не может его использовать, соответственно оно тормозит.

QEMU + KVM и MacOS - относительно новый солюшн, он быстрый именно за счет использования KVM с гостевым MacOS.

Вот это я готов обсуждать, а хрень про историю и кто кого форкнул - нет. Ни времени ни желания в этом ковыряться у меня нет.

Если есть что сказать по делу - велкам, нет - не засирай комменты. Подумай о своем возрасте, общение двух взрослых людей абсолютно точно не должно выглядеть как срач.

alex0x08 ★★★
() автор топика
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от alex0x08

KVM is a type 1 or “bare metal” hypervisor, meaning it runs directly on the host machine’s physical hardware.

Ламера видно издалека по применению слов, значения которых он не понимает.

Да, VirtualBox поддерживает KVM:

VB поддерживает аппаратную виртуализацию (VT-x, AMD-V). KVM - это ядерный модуль Linux.

kvm - recommended for Linux guests

Это относится к паравиртуализованным устройствам (даже не их драйверам внутри гостя. Точно так же, VB может прикинуться Hyper-V с точки зрения паравиртуализации, остаться собой или вообще сделать вид, что его тут нет.

Но это не для средних умов.

QEMU + KVM и MacOS - относительно новый солюшн

Я этот «солюшн» (это не солюшн, тебе просто слово нравится) - использовал более четырех лет назад. И сейчас, бывает, использую. Новости тут никакой нет. Запустить его можно было и ранее, просто лично мне это было не нужно.

он быстрый именно за счет использования KVM с гостевым MacOS

Он не «быстрый» и не «медленный», он ровно такой же, как и другие варианты с применением аппаратной виртуализации.

Если есть что сказать по делу - велкам

Я по делу и говорю, ты - балаболка картонная, потому что ни одно свое слово ничем, кроме типичного для ламеров апломба и невежества подтвердить не в состоянии.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Понятно, вообщем дальнейшую дискуссию можешь продолжить с ближайшей стеной.

Общение не по делу в моем возрасте уже откровенно не интересно, а по делу я ничего не услышал.

Долгих лет.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Слив засчитан. Статус ламера-балаболки подтвержден.

pekmop1024 ★★★★★
()

Где-то там же рекомендовали snap-пакет sosumi - попробовал, макось поставилась, понять бы ещё зачем она мне

overmind88 ★★★★★
()
Ответ на: комментарий от alex0x08

QEMU + KVM и MacOS - относительно новый солюшн

Прошло уже примерно 7 лет с тех пор, как Linux/KVM научился эмулировать инструкцию rdmsr MSR_IA32_PERF_CTL, и это было сделано специально для запуска Mac OS X 10.10 в QEMU + KVM. До этого макось тоже запускалась, но приходилось на свой страх и риск включать ignore_msrs.

Так что новым это решение точно назвать нельзя.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

как Linux/KVM научился эмулировать инструкцию rdmsr MSR_IA32_PERF_CTL, и это было сделано специально для запуска Mac OS X 10.10 в QEMU + KVM.

Не очень верю если честно в такую постановку вопроса. Команды ядра Линукса и QEMU - разные, их спонсоры, приоритеты и план работ тоже разные.

Был бы рад прочитать про эту историю в первоисточнике.

А насчет «новое-старое» - самой статье уже два месяца, время сейчас быстро летит. 7 лет назад это практически вчера.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от overmind88

Речь про вот это ? Не очень понимаю зачем было запихивать в SNAP образ виртуалку с настройкой - а если виртуалки с маком будет нужно две? Или два диска? Глупое решение, видимо поэтому 3 года как репозиторий в архиве.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Был бы рад прочитать про эту историю в первоисточнике.

Это мой патч, 0c2df2a1affd влит в torvalds/linux.git в 2016.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

KVM’s vCPU model behaves exactly as a real CPU in this case by injecting a fault when MSR_IA32_PERF_CTL is called (which KVM does not support). However, some operating systems use this register during an early boot stage in which their kernel is not capable of handling #GP correctly, causing #DP and finally a triple fault effectively resetting the vCPU.

Ну понятно, полагаю реальная проблема в другом месте была? Ради которой патч делался? Или действительно ради одного мака в виртуалке все затевалось?

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Именно ради макоси патч делался. Другие популярные ОС не пытались трогать те MSR, которые на тот момент не эмулировались в KVM.

Сначала пытался сделать это com32-модулем в syslinux (чтобы IDT была уже настроена на момент #GP), чтобы не трогать ядро, но потом понял, что поправить KVM сильно проще, чем научить загрузчик обходить эту проблему.

Проблема была в том, что Apple предполагает, что их систему запускают на том оборудовании, для которого она предназначается, и это оборудование существует даже на ранних этапах загрузки.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

Интересная история, респект ) Не каждый день встретишь человека с подтвержденными коммитами в такой-то проект ) Удивило что так быстро и просто приняли, думал это сильно дольше и сложнее.

alex0x08 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.