Okeu

Okeu

Москва ЮЗАО Нормис, геймер, айтишник, холостяк, эльф 78 уровня, футболист, велосипедист, глист, дрищ, русак, очкарик. Люблю шутки про говно, поэтому я тут.
Пикабушник
Дата рождения: 29 августа 1991
поставил 307 плюсов и 122 минуса
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
2252 рейтинг 3 подписчика 12 подписок 8 постов 0 в горячем

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore)

Всем привет. Делюсь своими изысканиями по запуску виртуальных машин MacOS на процессорах AMD. Возможно кому-то будет полезным:
Предыстория: в наличии несколько виртуалок, с которыми долгое время не было никаких проблем. Версии - от Mojave до Monterey, они даже обновлялись штатно. Далее, при апдейте на Ventura/Sonoma ловим кернел панику - никакие рекомендации из интернета не помогли. Глаз пал в сторону хакинтоша, но как его конфигурировать под вмварь тоже оказалось не совсем понятным, поэтому и напишу этот гайд:
вводные - Ryzen 5950X, Windows 10, VMware Workstation 16.2 (была версия 16.0, пока не столкнулись в проблемой апдейта макоси).


Что понадобится (чем пользовался лично я):
OCAT - графический редактор plist
ProperTree - еще одна редачилка plist'a, мне через нее было удобно копипастить блок с патчем для AMD (удобно открыть patches.plist из репы, и выдернуть оттуда весь блок patch, чтоб вставить его в наш конфиг)
Рекомендация по настройке конфига под амуде
Готовые SSDT для нубасов вроде меня (насколько я понял это таблицы с ID оборудования, которое инициализируется при старте ОС. Что-то подобное можно создавать самому уже на конкретном железе. У меня стоял вопрос - а каким оно должно быть и как его создать на VMware, возможно кто-то из шарящих в теме пояснит в комментах, как это работает, и как это связано с DSDT таблицами)
Гайд по EFI драйверам и кекстам - по кекстам я ниже еще отпишу. А драйвера я оставил все, которые идут с редакцией OpenCore, но не все они обязательны.
Ну и загрузчик OpenCore собственной персоной
Кастомный .vmdk диск, с которого мы будем бутаться. (создаем сами)
Выкладываю свою версию EFI - для ЛЛ, но не факт, что именно с ней у вас все взлетит.

Теперь по OpenCore, что он из себя представляет:
Нас интересует версия X64, внутри есть папка EFI, ее в дальнейшем нужно будет закинуть на наш загрузочный раздел. При включении нашей виртуалки первым делом бутается /EFI/BOOT/BOOTx64.efi, который затем запускает /EFI/OpenCore.efi (если вы будете в firmware виртуалки указывать файл загрузчика, указывайте путь к BOOTx64.efi)
Что еще внутри папки EFI :
EFI/OC/ACPI - тут лежат SSDT/DSDT таблицы оборудования. Если удалять лишнюю, обязательно нужно проверить, чтоб не было ссылок на нее в config.plist иначе будет краш.
EFI/OC/Drivers - тут лежал драйверы .efi. OpenRuntime.efi и HfsPlus.efi обязательны, я не стал удалять лишние драйвера, но ради интереса поигрался и выяснил, что без OpenCanopy.efi, OpenLinuxBoot.efi, OpenLegacyBoot.efi - загрузчик не взлетал. Насколько я понял, эти драйвера не влияют на дальнейшую работу макоси, а сугубо отвечают за работоспособность загрузчика и его возможности.
EFI/OC/Kexts - тут валяются расширения ядра (kext - kernel extension), нужны для успешного запуска самой макоси, а так же для корректной инициализации и работы устройств.
Любой хакинтош начинается с Lilu.kext, затем должен идти фейковый SMC (я заводил тачку с VirtualSMC.kext), потом уже все остальное.
Их последовательность определяется конфигом config.plist, в каком порядке они указаны, в таком они и будут инжектиться при загрузке ОС.
Экспериментальным путем выяснено, что система не бутается без:
AppleMCEReporterDisabler.kext - Required on macOS 12.3 and later on AMD systems, and on macOS 10.15 and later on dual-socket Intel systems. *из доки по OpenCore
CryptexFixup.kext - Я так понял, что это обязательный кекст не только для AMD, но и для Intel до Haswell
NoAVXFSCompressionTypeZlib-AVXpel.kext - возможно избыточно, без него тоже бутается.
На всякий случай оставил:
VoodooHDA.kext - инициализация звука в MacOS
HibernationFixup.kext - на виртуалке проще отключить сон, но если что, возможно это будет фиксить. Дело в том, что под хакинтошами у макоси есть проблемы со сном, вернее с выходом из него)
Whatevergreen.kext - фикс инициализации графики, по идее он не нужен, т.к. есть VMWARE tools


Создаем свой .vmdk:
Для его создания я создавал новую виртуалку, "установлю потом", тип системы other, диск 0.2GB, но вмварь тогда создает диск IDE, поэтому я его удалил, и пересоздал уже как SATA. Размер выбрал с потолка, сам EFI весит около 10-15 МБ. Поэтому можете назначить меньше. Из доп. настроек нужно выбрать store virtual disk as a single file
Далее монтируем этот диск через Daemon Tools. Теперь открываем оснастку управления дисками, для этого жмем WIN+R, вводим diskmgmt.msc и enter, система тут предложит проинициализировать новый диск. Выбираем GPT, жмем ОК. Далее создаем том и форматируем в FAT32, в Label вписываем любой удобный и понятный, я так и назвал OpenCore.
Все, теперь осталось закинуть на диск папку EFI, размонтировать диск и можно с него бутаться.


Несовместимость виртуалки и vmdk диска (если подкидываем к уже готовой машине)

При попытке подсунуть загрузочный vmdk в виртуалку, которая была создана в более старой версии VMware скорее всего вылезет ошибка:

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

Варианта 2: либо пересоздавать новый vmdk для этой виртуалки, форматить его и засовывать туда EFI
либо конвертнуть виртуалку:
жмем по ней правой кнопкой мыши → manage → Change Hardware Compatibility
Мой первый EFI был создан в версии 16.2.x, поэтому выбираю ее, чтоб версия совпадала с той, в которой он создавался. Далее вмварь спросит, хотите склонировать или конвертировать текущую билд-тачку. Тут уже на ваше усмотрение, у меня с конвертацией проблем не возникло, но я не уверен, что их точно не будет.
После конвертации диск подцепится без ошибок)


Что дальше?
Отныне любая макось, будь то инсталлер или уже установленная версия - должны запускаться только через наш кастомный EFI. Иначе в дальнейшем у них будет паника ядра.
С чистой установкой все просто: (не буду останавливаться на том, как создать новую ВМ, как пропатчить ее unlocker'ом, как создать диск, выделить ресурсы и т.д.)
Добавляем в виртуалку наш EFI, в настройках смотрим на какой порт сата он добавился (можно сделать SATA 0:0, а можно забить - на ваше усмотрение.
В виртуальный CD добавляем .iso образ установщика макоси (можно взять с торрента, либо зашить самому, но для этого нужен отдельный гайд).
Далее в VMware выбрать Power on firmware

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

После этого у нас будет возможность бутануться с нужного диска, тут нам и понадобиться номер порта SATA

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

мой пример: 0:0 это EFI, 2:0 это целевой диск с макосью, 1:0 CD дисковод с инсталлером.

Выбираем диск, жмем Enter.
Далее мы попадаем в меню OpenCore:

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

Скрин для примера, тут конфиг с уже установленной системой

Если нажать пробел, появятся дополнительные опции загрузки

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

OpenCore делает ВЖЖ ВЖЖ

Бутаем установщик и далее штатно проходим установку (не забываем запустить дисковую утилиту в установщике и отформатировать наш целевой vmdk в формат APFS).


Для тех, кто хочет обновить свой старенький Monterey
У вас варианта два, либо обновляться штатно, через Software Update, либо обновляться с iso (точно так же, как чистая установка в абзаце выше, но без форматирования целевого диска)
Правило одно в обоих случаях - перед апдейтом, вы должны обязательно бутаться с кастомного загрузчика. Если макось словит Kernel Panic в процессе обновления (она несколько раз рестартится пока идет процесс обновления), то ее попердолит так, что даже с подсунутым EFI она не будет бутаться.
Перед апдейтом можете снять снапшот, откат поможет в случае если что-то пойдет не так.


Какие могут быть проблемы

  • Если макось в процессе рестартов установщика загрузится не через OpenCore, а напрямую, и словит панику - ее уже будет не восстановить. (выше уже писал об этом, но лучше задублирую - это важно!)

  • Если после успешной загрузки макоси не работает мышь/клава, либо у мыши очень высокая чувствительность, что невозможно ею пользоваться - нужно проверить в настройках виртуалки версию USB контроллера. Должна быть 3.1.
    доп. может понадобиться VoodooPS2Controller.kext

  • Проброс Bluetooth лучше убрать (там же, где настройки USB)

  • Перед изменением количества ядер, выделенных виртуалке, лучше править патчи в config.plist на EFI разделе. Иначе тачка будет вставать в фриз: Патчи для AMD
    Без них будут проблемы. У меня зависало, если выделял больше 4х ядер.
    "C:\Program Files (x86)\VMware Workstation\vmrun.exe" -T ws stop "путь к виртуалке.vmx"

  • И НЕ ЗАБЫВАЕМ, ЧТО В VMX конфиг нужно прописать

    cpuid.0.eax = "0000:0000:0000:0000:0000:0000:0000:1011"
    cpuid.0.ebx = "0111:0101:0110:1110:0110:0101:0100:0111"
    cpuid.0.ecx = "0110:1100:0110:0101:0111:0100:0110:1110"
    cpuid.0.edx = "0100:1001:0110:0101:0110:1110:0110:1001"
    cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"
    cpuid.1.ebx = "0000:0010:0000:0001:0000:1000:0000:0000"
    cpuid.1.ecx = "1000:0010:1001:1000:0010:0010:0000:0011"
    cpuid.1.edx = "0000:0111:1000:1011:1111:1011:1111:1111"

    ethernet0.virtualDev = "vmxnet3"


UPD: вынесу отдельно: из непофикшеного есть проблема с рестартами виртуалки. Она успешно останавливает систему и повисает

Виртуальная машина MacOS 13+ на процессорах AMD (OpenCore) Vmware, Mac Os, Hackintosh, Windows, Windows 10, Виртуализация, Администрирование, Xcode, IT, Длиннопост

При этом кнопки Power OFF в VMware неактивны

Прибить ее можно из командной строки (путь до vmrun.exe может отличаться:
"C:\Program Files (x86)\VMware Workstation\vmrun.exe" -T ws stop "путь к виртуалке.vmx"

Показать полностью 6

Ответ на пост «Будни сисадминов: ситуация №4 трагедия в семи действиях»

Тут в комментах отписали про битлокер и я вспомнил реальную ситуацию из будней сисадмина (пишу с мобилы в метро, сорян если слог не ладен и несклален)

Значит, к делу: у удаленщика перестал бутаться ноут на винде 11. Ситуация со слетевшим загрузчиком, достаточно банальная вроде и писать не о чем) Но не тут то было.

Благо была возможность оперативно получить железку на руки. При первой же попытке восстановить EFI раздел я потерпел фиаско. Системный раздел с ОС оказался... зашифрован битлокером.

К слову, включение защиты шифрованием в битлокере, далеко не та операция, которую может сделать пользователь "случайно".

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

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

Но в итоге нам повезло, в корпоративной учетной записи office365 лежал заветный 48-значный ключ. Боже, как же я затрахался вводить его в рекавери режиме вручную, при каждой попытке попердолить загрузчик) В итоге все получилось, вошли в ось, и поставили диск на расшифровку.

По итогу: винда может сама включить битлокер при определенных условиях (по-моему достаточно включенного модуля TPM и привязанной учетки майков)

UPD: случайно опубликовал просто как коммент, поэтому дублирую.

Чет падазрительна...

Чет падазрительна... Яндекс, Пробки, Москва, Навигатор, Подозрительно

Как обычно вечером еду после учебы (учусь на очно-заочном) домой. Двигаюсь в сторону остановки и открываю Яндекс.транспорт, дабы поглядеть - как у нас дела с автобусами, ну и с пробками разумеется. На фото - пересечение МКАД с Киевским Шоссе (Потом читал, что президент Армении ехал) Спасибо святомученикам, стоящим в жесткой пробке за комменты, благодаря этому я поехал объездным путем (все-равно пришлось пересекать перекрытый Ленинский пр-кт) и потратил в пробке всего пол часа, а не полтора. 

Показать полностью 1

Квантовые казаки!

Квантовые казаки! Казаки, Ирина Цезарь, Квантовый скачок

https://www.youtube.com/watch?v=tOi4yILF7no- ссылочка на оригинал.
"...Строительство казачьих станиц нового типа на прорывных информационно-волновых технологий квантового скачка..." - может я дурак? Поясните мне пожалуйста эту фразу

Франция-Исландия

Сборная Африки против сборной Викингов. За кого будете болеть вы?

Франция-Исландия Франция, Исландия, Чемпионат Европы, Футбол

Болеем за чудесного старичка Пахома! Это же чудо во плоти! Он такой самобытный и добрый! в офф группе битвы экстрасенсов тупопездный психоз)

P.S. Кто че думает, насколько он останется в передачке, дабы по-развлекать народ? Само шоу смотрю только из за пахома (да и многие, думаю тоже)
Болеем за чудесного старичка Пахома! Это же чудо во плоти! Он такой самобытный и добрый! в офф группе битвы экстрасенсов тупопездный психоз) P.S. Кто че думает, насколько он останется в передачке, дабы по-развлекать народ?  Само шоу смотрю только из за пахома (да и многие, думаю тоже)

WAT?

Кто знает, в чем соль?
WAT? Кто знает, в чем соль?

Кто неравнодушен к шутерам, да и просто тем, кто хочет поднять себе настроение

Дебют, первый фрагмуви под качающий музон) зацените, строго не судите) http://www.youtube.com/watch?v=jneX9OjoEdU
Кто неравнодушен к шутерам, да и просто тем, кто хочет поднять себе настроение Дебют, первый фрагмуви под качающий музон) зацените, строго не судите)    http://www.youtube.com/watch?v=jneX9OjoEdU
Отличная работа, все прочитано!