Благодаря тяжелой работе сообщества QEMU/KVM в течении последних лет, стала реальностью возможность комфортного использования операционной системы Mac OS X на виртуальных машинах, работающих на KVM. В результате использование технологии GPU Passthrough(проброс графики в виртуальную машину) мы получили улучшенную производительность в работе пользовательского интерфейса.
В этой статье я покажу вам, как создать Hackintosh-KVM виртуальную машину использующую QEMU i440fx чипсет. Мы настроим эту виртуальную машину как систему «Hackintosh», без использования оригинального ключа OSK (SMC) Apple. Статья написана исключительно в ознакомительных целях, редакция не несет ответственности за то, как вы неправильно используете полученную информацию.
Основная причина, по которой данное руководство сосредоточено на чипсете i440fx, заключается в том, что на q35 чипсете все ещё есть некоторые проблемы с пробросом видеокарт 10 series Nvidia GPU, в то время как i440fx хорошо работает с ними, независимо от оборудования хост-системы. Если вы хотите найти руководства по использованию q35 чипсета, то мы добавим их после проведения тестирования связанного с пробросом видео, обновлением Mac OS X и стабильностью в целом. Мы призываем неравнодушных опытных пользователй присоединиться к нашему серверу Discord и помочь решить другие проблемы.
Синопсис
- В этом руководстве предполагается, что в прошлом у вас уже была установлена виртуальная машина с пробросом GPU, и у вас есть опыт работы с QEMU и libvirt, в этом руководстве не будут указаны шаги по настройке QEMU / libvirt для проброса GPU, настройки сети, привязку ЦП и т. д. Если вам нужна помощь в настройке этих параметров, обратитесь к нашему англоязычному серверу Discord.
- Это руководство было проверено только с процессорами Ryzen. При использовании процессоров Intel могут выявиться некоторые проблемы (хотя мы и не ожидаем каких-либо сложностей). Мы просим наших читателей помогать вносить свой вклад в работу с хостами Intel.
- Автор также рекомендует, чтобы начальная настройка выполнялась с помощью сквозного проброса GPU(GPU pass-through) для упрощения установки, поскольку другие методы отображения могут не работать (QXL, vmwvga и т. д.).
- В этом руководстве мы используем загрузчик Clover для тонкой настройки и не будем поддерживать Enoch или любой другой загрузчик.
- Я рекомендую использовать OVMF файлы из репозитория Hackintosh-KVM. Так-же рекомендую использвать последнюю версию ядра Linux, libvirt, and QEMU. Работа с версиями более старыми, чем тестированные нами в момент написания статьи, не гарантирована.
- Для более старых или патченных версий QEMU и других приложений рекомендую использоать руководство kholia на github.
- Для достижения наилучшей производительности ввода-вывода мы рекомендуем использовать LVM или стандартный файл образа (.img). Использование, во время тестов, образа .qcow2 с эмулированным контроллером SATA QEMU, привело к крайне низкой производительности. Также можно использовать ZFS vdevs, хотя мы и не тестировали его для этого обзора, но считаем, что производительность ввода-вывода должна быть нормальной.
- Автор также рекомендует включить ЦПУ в режим «performance» и/или использовать QEMU hook для достижения максимальной производительности виртуальной машины. Файл xml из репозитория Hackintosh-KVM содержит аргументы для PulseAudio и evdev pass-through.
- С загрузчиком Clover мы будем использовать iMac18,3 SMBIOS, так как другие версии Macintosh включают прошивку Thunderbolt 3, которая после обновления повреждает nvram OVMF, тем самым делая виртуальную машину не загружаемой.
Конфигурация автора
- AMD Ryzen 5 1600 CPU под управлением Gentoo. Видеокарта Nvidia GTX1070 FE GPU для проброса (pass-through). Так же данное руководство было тестировано на AMD Ryzen 7 2700X и EVGA GTX1050 Ti FTW.
- Работоспособность тестировалась с QEMU 2.12 используя патченный OVMF созданный автором, который вы можете найти в Hackintosh-KVM репозитории, и с Linux kernel 4.17 (4.16 тоже проходил тестирование и тоже работает).
ВНИМАНИЕ: работоспособность возможна только с процессорами с SSE4.1 и при использовании macOS High Sierra/Mojave. Intel VT-x / AMD SVM так же обязательны.
Подготовка к установке
- Скачайте macOS High Sierra installer из Apple App Store. Скачайте скрипт
create_highsierra_iso.sh
из Hackintosh-KVM репозитория для создания ISO образа. - Запустите скрипт
create_iso_highsierra.sh
на вашей действующей Macintosh машине. После отработки скрипта образ High Sierra ISO будет находиться на рабочем столе. - Если вы не хотите использовать скрипт Hackintosh-KVM для создания ISO образа, вы можете перейти по ссылке, где вы узнаете как конвертировать dmg в ISO.
- Перенесите созданный ISO образ с рабочего стола на машину с установленным QEMU/KVM используя Samba/NFS или с помощью USB накопителя.
Подготовка Hackintosh-KVM
- Для начала клонируйте репозиторий Hackintosh-KVM
- Файлы содержащиеся в нём необходимы для создания виртуальной машины и будут необходимы во время установки загрузчика Clover в папку EFI вашего Хакинтоша.
git clone https://github.com/PassthroughPOST/Hackintosh-KVM
- Прежде чем приступить к следующему шагу выполните из папки с клоном репозитория от root следующую команду:
# virsh define osx_i440fx.xml
- Далее для добавления GPU, дисков и других устройств воспользуйтесь Virtual Machine Manager. После чего, непосредственно в витуальной машине, откройте для редактирования xml файл и укажите мнстоположение ваших OVMF файлов, CPU pinning, и evdev pass-through. Это всё так же можно сделать используя команду virsh edit osx_i440fx. Если вы не собираетесь использовать PulseAudio или evdev pass-through, удалите соответствующие строки.
- В xml прописан адаптер virtio-net на сетевом интерфейсе bridge, вы можете поменять это, в случае не соответствия вашей топологии сети.
- Для включения pass-through нашего хоста CPU, мы будем подделывать идентификатор поставщика ЦП с помощью аргумента QEMU, показанного ниже. Обратите внимание, что это изменит сделанные ранее настройки в меню CPU в Virtual Machine Manager.
- Не рекомендуем устанавливать многопоточность процессора в этом меню, из-за ошибки Clover, так Mac OS X QUEMU не может работать в многопоточном режиме. Гораздо лучше в тестах себя показала конфигурация состоящая из 2-8 ядер и 1 потока.
qemu:arg value='-cpu'
qemu:arg value='host,vendor=GenuineIntel,kvm=on,vmware-cpuid-freq=on,+invtsc,+hypervisor'
- Создайте виртуальный HDD куда будете устанавливать macOS. Это можно сделать с помощью утилиты Storage которая находится в Edit > Connection Details > Storage > Add-Pool.
- Создайте загрузочный диск Clover , для этого действия необходим пакет
libguestfs
. - Для начала вам нужно отредактировать $HOME/YourFolderHere/config.plist и установить желаемое разрешение экрана (по умолчанию OVMF — 1024 × 768). Обратите внимание, что неверно выставленные значения могут повредить ваш дисплей с высоким разрешением.
sudo ./clover-image.sh --iso Clover-v2.4k-4630-X64.iso --cfg $HOME/YourFolderHere/config.plist --img clover.qcow2
- Затем вам нужно добавить необходимые kext на ваш новый загрузочный диск Clover. Необходимые файлы kexts также находятся в репозитории Hackintosh-KVM. Файлы kext в этом репозитории используются для датчиков GPU, проброса PulseAudio и сетевого устройства Virtio-Net. WhateverGreen.kext также необходим, если вы используете графический процессор AMD, однако он не был протестирован. Далее нам потребуется загрузка модуля ядра NBD:
sudo modprobe nbd sudo qemu-nbd --connect=/dev/nbd0 /$HOME/YourFolderHere/clover.qcow2
fdisk /dev/nbd0 -l
sudo mount /dev/nbd0p1 /mnt/somemntpoint/
- Отключите и отмонтируйте clover.qcow2 образ:
umount /mnt/somemntpoint/
sudo qemu-nbd --disconnect /dev/nbd0
sudo rmmod nbd
- Для облегчения вам задачи, вместо создания собственного загрузочного диска Clover вы можете использовать образ диска clover.qcow2 из репозитория Hackintosh-KVM, он содержит все необходимые файлы kext и предлагает разрешение экрана 1920 × 1080 пикселей. Кроме того, образ clover.qcow2 может быть полезен как резервный загрузчик EFI, если вы испортите загрузчик во время обновления Clover.
- Прежде чем впервые запустить Clover на вашей новой виртуальной машине, следует убедиться, что разрешение OVMF установлено равным разрешению, установленному в вашем файле clover.qcow2. Значение по умолчанию OVMF равно 1024 × 768, а образ clover.qcow2, который вы будете использовать, установлен на 1920 × 1080, что неверно и в самом негативном развитии событий может привести к повреждению дисплея и возможным сбоям при загрузке. Разрешение можно установить через меню загрузки OVMF, которое вызывается нажатием ESC во время демонстрации логотипа OVMF, до появления экрана загрузки Clover.
Установка
- После загрузки увидите меню выбора языка. Выберите нужный язык, затем выберите «Дисковая утилита» и сотрите целевой диск. Вы можете использовать HFS + или APFS, так как образ clover.qcow2, который мы используем, уже имеет драйвера EFI для любой файловой системы. Если вы выбираете APFS, убедитесь, что вы поместили файл apfs.efi в папку EFI при установке Clover на ваш загрузочный диск.
- High Sierra’s (< 10.13.3) не отображает неотформатированные диски пока вы не выполните Вид > Показать все устройства, затем выйдите из дисковой утилиты и запустите её вновь.
- В некоторых редких случаях целевой диск может не отображаться в Disk Utility, для этого вам нужно будет использовать приложение Terminal в установщике и подготовить жесткий диск для установки вручную, используя приведенные ниже команды.
diskutil list
diskutil eraseDisk JHFS+ macOS disk0 # измените диск на тот который у вас будет отображён предыдущей командой
- После выполнения команды закройте Terminal.
- Далее продолжите установку в нормальном режиме.
- По окончании установки виртуальная машина перезагрузится автоматически. Поздравляем вы стали обладателем Hackintosh-KVM виртуальной машины. Остался, последний шаг — выполнить некоторые шаги после установки и поместить загрузчик Clover на диск, на который вы только что установили macOS. Это нужно для того, чтобы вы могли добавить дополнительные файлы kext в будущем, для улучшения работы виртуальной машины.
Пост установка
- Во-первых, необходимо установить Clover на основной диск, где установлена система macOS High Sierra. Далее поместить файл i440fx-acpi-dsdt.aml из репозитория Hackintosh-KVM в папку EFI/CLOVER/ACPI/, и не забудьте необходжимые вам файлы kext в папку EFI/CLOVER/Kexts/Other.
- Вам необходимо убедиться, что эти параметры включены в разделе «Kernel and Kext Patches» утилиты Clover Configurator
Так же вы можете удалить +hypervisor
из аргументов QEMU и выставить настройки в секции CPU в Clover Configurator как можно ближе по параметрам вашей системы.
qemu:arg value='-cpu'
qemu:arg value='host,vendor=GenuineIntel,kvm=on,vmware-cpuid-freq=on,+invtsc'
Для подключения PS/2 мыши и клавиатуры в Mac OS X QUEMU необходим VoodooPS2.kext
, для проброса ICH6 или ICH9 PulseAudio звука нужен VoodooHDA.kext.
Автор обнаружил, что с использованием эмулируемых USB-драйверов мыши и клавиатуры периодически возникает проблема с залипании при длительном нажатии. В вашей конфигурации это может и не повториться. Для эмуляции USB мыши и клавиатуры никаких дополнительных kext’ов не требуется.
Для монтирования других файловых систем (NTFS,EXT, и т.д.) пройдите по ссылке: https://github.com/macOSfuse/macOSfuse
Для Nvidia драйверов: https://github.com/Benjamin-Dobell/nvidia-update/blob/master/README.md
Репозиторий с обновлениями kext’ов Hackintosh kexts
Статья является переводом с английского статьи Daniel Hanson: Hackintosh-KVM Guide: High Sierra+ Using QEMU’s i440fx Chipset
Если кому-то вдруг потребуется iso образ Mac OS X High Sierra или Mojave, пишите в комментариях, подготовлю и пришлю.
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в