Работа с Apple Silicon - довольно сложная задача для разработчиков, в частности тех, кто пытается перенести Linux для работы на чипе M1. При этом Apple использует специально настроенный процесс для загрузки Mac, который отличается от версий, используемых в других 64-битных системах ARM.
Представляя разработчикам Apple Silicon, Apple оказала помощь разработчикам в переносе их, совместимых с Intel, приложений на M1. Для разработчиков, выполняющих более амбициозные задачи, таких как перенос Linux на Apple Silicon, задача оказалась во много раз сложнее.
В блоге проекта Asahi Linux, его команда обсуждает свои попытки настроить альтернативное загрузочное ядро в системах Apple Silicon. Хотя большая часть этой функции была реализована, отсутствие поддержки команды, которая позволяет установить ядро, отличное от Apple, привело к попытке задокументировать недокументированную систему.
Основное препятствие заключалось в том, что Apple Silicon загружается иначе, чем ПК, и работает "более похоже на встроенные платформы", такие как устройства Android или iOS. Существуют различия и используется "несколько специальных механизмов", хотя Apple, очевидно, сделала процесс загрузки "ближе" к Intel Mac.
Эти различия приводят к некоторым неожиданным действиям, например к тому, как Apple Silicon Mac обрабатывает загрузку с внешнего хранилища. Также было обнаружено, что загрузчик не может отображать графический пользовательский интерфейс и что "Средство выбора загрузки" является "полноэкранным приложением macOS, а не частью загрузчика".
Разработчики считают, что процесс загрузки "не основан на каком-либо существующем стандарте" и вместо этого использует "специальный механизм Apple, который медленно развивался с первых дней iOS".
DeviceTree было выбрано для использования в процессе загрузки, отчасти потому, что оно похоже на Apple Device Tree, которое использует Apple Silicon. И дерево устройств Apple, и открытый стандарт DeviceTree основаны на спецификации Open Firmware, которая использовалась для загрузки старых компьютеров Mac PowerPC.
Однако разница в двоичном формате, который не может быть легко преобразован автоматически без подробных сведений о том, что представляют собой данные, является препятствием для проекта. "Попытка объединить идеи Apple и Linux о том, как должны работать деревья устройств, была бы кошмаром", - утверждает команда проекта.
Иван Ковалев
VIA