09.11.2019
Софт
macOS
Making Off

Захотелось поднять macOS на основной текущей конфигурации PC. Эксперимент ради эксперимента. Платформа подходит для операционной системы от яблочной компании. Попробуем провести установку и настройку macOS Mojave с помощью загрузчика Clover.

Конфигурация платформы:

  • Процессор: Intel Xeon E5-2650 v2
  • Материнская плата: X79Z 2.4F
  • Оперативная память: Samsung 4 x 8 GB DDR3 1600 ECC
  • Видеокарта: Asus Strix Radeon RX 470 4 GB

CPU от компании Intel как и чипсет С602. LAN, USB, Audio на своих контроллерах подтянем кекстами. Видеокарта AMD серии Radeon с нативной поддержкой macOS Mojave. Конфигурация для установки ОС подходит.

Создание загрузочной флешки

Для установки macOS нам понадобится флешка с загрузчиком Clover. Под Windows создать её поможет хороший инструмент Bootdisk Utility. Утилита довольно проста и понятна в применении. Автоматически проверяет, скачивает, создаёт нужные разделы и устанавливает последнею версию Clover.

devstratum - Bootdisk Utility

Запускаем BDU, при наличии флешки, видим текущий носитель. В меню, если есть сеть, видим строчку проверки загручика кловера Latest Clover: Check It! Первым делом жмём кнопку Format, пройдёт форматирование флешки и создание двух разделов.

devstratum - Bootdisk Utility - Format

После форматирования видим два раздела. Первый раздел - это загрузчик Сlover под файловую систему FAT32 со своим набором папок и файлов, о нём позже. Второй раздел без разметки - это оставшийся объём накопителя, под Windows он не виден в проводнике, на него развернём образ macOS Mojave. Для этого выделяем раздел, жмём кнопку Restore и в диалоговом окне выбираем файл образа macOS Mojave в формате яблочной файловой системы hsf. Образ вполне можно найти на просторах сети.

devstratum - Bootdisk Utility - Restoredevstratum - Bootdisk Utility - Restore Process

После выбора файла образа Mojave в формате hsf, даём согласие. Ждём окончания операций. Когда запись успешно завершится, закрываем BDU, утилита нам больше не понадобится. Дальше поработаем с папками и файлами на созданной флешке.

Драйверы и кексты на флешке с Clover

Открываем созданную флешку. Нас интересует папка EFI, а в ней папка загрузчика CLOVER. Здесь и будем добавлять нужное для установки и настройки macOS Mojave. Удаляем папки drivers и drivers32UEFI, система будет под 64 разряда, эти папки не понадобятся. Создаём папку drivers64UEFI, куда и будем складывать драйверы.

devstratum - Clover

Драйверы

Посмотрим на набор драйверов кловера необходимых для установки и запуска macOS Mojave под текущею конфигурацию. Для других конфигураций железа набор может меняться. Но в данном случае такого варианта оказалось достаточно.

devstratum - Clover - drivers64UEFI

ApfsDriverLoader-64.efi
Драйвер, для поддержки новой яблочной файловой системы APFS. Собственно накопитель будет отформатирован под APFS, на который будем ставить Mojave.

AppleImageCodec-64.efi
Декодер PNG и BMP файлов, нужен для технологии FileVault2.

AppleKeyAggregator-64.efi
Создает специальный протокол для ввода пароля в интерфейсе FileVault2.

AppleUITheme-64.efi
Создает протокол, по которому FileVault2 рисует фоновое изображение экрана.

AptioMemoryFix-64.efi
Драйвер коррекции карты памяти для успешного запуска OS. AptioMemoryFix пришёл на смену OsxAptioFix.

DataHubDxe-64.efi
Драйвер, ответственный за предварительную загрузку концентратора данных с информацией о состоянии, нужен для некоторых BIOS.

FirmwareVolume-64.efi
Создает протокол FirmwareVolume, нужен для FileVault2.

FSInject-64.efi
Драйвер для перехвата операций в файловой системе, чтобы была возможность внедрять сторонние кексты в систему.

HFSPlus.efi
Драйвер файловой системы HFS+, необходим для запуска macOS.

Ps2MouseDxe-64.efi
Драйвер для поддержки работы устройств ввода PS/2 в интерфейсе Clover GUI. На операционную систему этот драйвер не влияет.

SMCHelper-64.efi
Эмулятор протокола AppleSMCProtocol для обмена данными с закрытым яблочным SMC чипом, которого в кловере подменяет FakeSMC кекст.

UsbKbDxe-64.efi
Драйвер для поддержки работы USB клавиатуры в интерфейсе Clover GUI. На операционную систему этот драйвер не влияет.

UsbMouseDxe-64.efi
Драйвер для поддержки работы USB мыши в интерфейсе Clover GUI. На операционную систему этот драйвер не влияет.

VBoxHfs-64.efi
Альтернатива драйвера HFSPlus.efi файловой системы HFS+ с расширенными возможностями.

Кексты

Kext (kernel extension) - это расширения ядра macOS. Необходимы для корректной работы железа. Создадим папку 10.14 по номеру версии Mojave, туда закинем нужные кексты. В папке Other содержится FakeSMC.kext (подмена яблочного чипа SMC) без которого запуск операционной системы не возможен.

devstratum - Clover - kextsdevstratum - Clover - kexts

AHCIInjector.kext
Кекст для поддержки дисковых устройств в режиме AHCI в зависимости от чипсета или контроллера.

CodecCommander.kext
Кекст для вывода звука из спящего режима на некоторых конфигурациях.

NullCPUPowerManagement.kext
Отключает AppleIntelCPUPowerManagement.kext в системе macOS, чтобы предотвратить панику ядра без правильных изменений HPED DSDT.

RealtekRTL8111.kext
Кекст для работы сетевых карт на основе чипов Realtek.

USBInjectAll.kext
Кекст для работы USB портов.

VoodooHDA.kext
Универсальный звуковой драйвер.

VoodooPS2Controller.kext
Кекст для работы PS/2 периферии, клавиатуры, мыши, тачпада.

VoodooTSCSync.kext
Кекст для синхронизации счётчика TSC (Time Stamp Counter) на любых CPU Intel.

Настройка config.plist

Следующим этапом надо подготовить конфиг кловера для запуска macOS. Файл config.plist лежит в корне папки CLOVER. Редактировать его будем через облачный сервис Cloud Clover Editor. Жмём Open configuration, выбираем наш config.plist на флешке. Откроется файл конфига для редактирования.

devstratum - Config

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

ACPI

В этом разделе в секции DSDT -> Patches нужно будет добавить три строки для инициализации и корректной работы USB портов, в том числе и USB 3.0 интерфейса.

devstratum - Config - ACPI

Значения строк в формате полей: Comment | Find (Hex/Base64) | Replace (Hex/Base64)

USB Port limit patch 10.14.1 — 10.14.3
00 00 83 FB 0F 0F 83 8F 04 00 00
00 00 83 FB 19 0F 83 8F 04 00 00

change EUSB to EH01
RVVTQg==
RUgwMQ==

change USBE to EH02
VVNCRQ==
RUgwMg==

Без прописанных строк для патча, USB порты работать не будут, с последствием для всех устройств USB при установке.

Upgrade

Редактор Cloud Clover Editor вывел тревожный значок. Говорит, для кловера выше версии 4427 надо сделать апгрейд. Upgrade так апгрейд.

devstratum - Config - Upgrade

Boot

Секция ключей для загрузки операционной системы очень важна. Иначе загрузка стопорит работу по поводу и без повода. Ядро уходит в панику, все расстроены.

devstratum - Config - Boot

-v - Данный ключ отключает графический интерфейс во время загрузки и выводит лог процессов в текстовом режиме.

keepsyms=1 - Этот параметр служит для вывода более подробной информации в момент загрузки системы совместно с ключом -v.

debug=0x100 - Ключ для предотвращения перезагрузки, если произошла паника ядра. Можно посмотреть на чём зависла система.

npci=0x2000 - Такой ключ предотвращает зависание во время загрузки системы при наличии шины PCI на материнской плате. А в текущей конфигурации она есть.

darkwake=0 - Ключ режима пробуждения оборудования из спящего режима. По идее не даёт никому засыпать.

kext-dev-mode=1 - Параметр для активации изменений расширений ядра (kernel extension) операционной системы.

Devices

В данной секции пара параметров. Для корректного определения видеокарты Radeon RX 470 подсовываем идентификатор 0x67EF1002 в поле ATI. В разделе USB ставим галку на Inject, чтобы все порты завелись и работали без проблем. Строки патча для инициализации USB были прописаны выше в разделе ACPI.

devstratum - Config - Devices

GUI

В разделе настроек графического интерфейса загрузчика поставим разрешение монитора 1920x1080 в поле Screen Resolution. Clover будет работать в родном разрешении для монитора, если монитор Full HD.

devstratum - Config - GUI

Graphics

В этом разделе отмечаем два параметра. Внедрение ATI для инициализации видеокарты Radeon RX 470. Параметр Radeon De-init служит для пробуждения видеокарт одноименной серии от режима сна, это встроенный патч в загрузчик.

devstratum - Config - Graphics

SMBIOS

Раздел про вопрос - какой платформе соответствует текущее железо? Данная конфигурация ближе всего походит под Mac Pro 6.1, выбираем яблочный SMBIOS под соответствующее оборудование.

devstratum - Config - SMBIOS

После всех изменений жмём на скачивание нашего файла конфигурации.  Можно сделать резервную копию config.plist без изменений, а потом подменить на сохраненный.

Установка macOS Mojave

Перед установкой сбрасываем BIOS на заводские настройки. Флешку втыкаем в USB 2.0 порт. Протокол работы дисковых накопителей выбираем - AHCI. Отключаем в настройках CPU опцию Virtualization Technology (VT-x), ибо с этим пунктом происходило зависание на этапе вывода окна Утилиты macOS. После инсталляции OS, технологию виртуализации можно будет включить обратно.

devstratum - macOS - Install

Загружаемся с флешки в Clover. Для начала инсталляции выбираем раздел Boot macOS Install from Install macOS Mojave. Видим как идёт отладочная информация. Ждём  появления окна Утилиты macOS. Здесь надо будет через дисковую утилиту подготовить диск для установки. В моём случае не размеченный HDD был отформатирован под файловую систему APFS. Дальше можно запускать установку. После двух перезагрузок, процесс дойдет до предварительных настроек операционной системы. Регион, учётная запись и т.д. И наконец финальный запуск!

devstratum - macOS - Final

Заключение

Эксперимент прошёл успешно. Сеть, звук, USB порты работают без нареканий. Есть нативная поддержка видеокарты, а значит и ускорение всех приложений, которые используют OpenCL, OpenGL и прочее. Обновления работают. В итоге получился вариант Mac Pro 6.1, то самое ведро конца 2013 года.