Загрузка установщика macOS на самосборном ПК останавливается на строке apfs_module_start или зависает с ошибкой, связанной с AppleACPIPlatform, — одна из самых частых причин этого отсутствует SSDT-EC.aml, таблица, эмулирующая встроенный контроллер (Embedded Controller). Без неё macOS пытается обратиться к реальному EC материнской платы, чьи методы несовместимы с драйверами Apple, и процесс загрузки прерывается.

В этой статье разберём, что представляет собой файл SSDT-EC.aml, почему он обязателен практически для любого десктопного хакинтоша, как сгенерировать его автоматически или написать вручную, и какие ошибки чаще всего допускают при подключении таблицы в OpenCore.

Что такое SSDT и зачем нужен фиктивный EC

SSDT (Secondary System Description Table) — это дополнительная ACPI-таблица, которая загружается поверх основной таблицы DSDT и позволяет добавлять, переименовывать или отключать устройства без перепрошивки BIOS. Файлы с расширением .aml — это скомпилированный байт-код на языке ASL (ACPI Source Language).

Встроенный контроллер (EC, Embedded Controller) на реальных компьютерах Apple управляет питанием, вентиляторами и клавиатурой. macOS при загрузке ищет устройство EC в ACPI-пространстве. Проблема в том, что EC десктопных материнских плат имеет методы, несовместимые с AppleACPIEC, и попытка системы с ним взаимодействовать вызывает kernel panic или зависание.

Решение — подсунуть системе фиктивное устройство EC без реальных методов, «заглушку», которое удовлетворяет проверку macOS, но не выполняет никаких действий с железом. Именно это и делает SSDT-EC.aml.

💡

SSDT-EC.aml не управляет железом — это пустышка, которая лишь сообщает macOS, что устройство EC существует, и отключает конфликтующий реальный контроллер.