Как Linux был перенесен на Apple Silicon M1 Mac mini

linux, apple, silicon, mini

Linux теперь работает на Mac mini с процессором M1, но Apple не упростила для команды перенос ОС с ее собственной прошивкой и уникальными путями к данным. Вот как Кореллиум добился этого.

Теперь, когда Linux полностью совместим с Mac с процессорами M1, команда Corellium подробно описала процесс портирования ОС..

В сообщении в четверг Corellium сообщает, что они изучают кастомные процессоры Apple с момента выпуска iPhone 6 в 2014 году. Компания использовала некоторые эксплойты и предыдущее исследование для создания порта ядра на процессор A10 в начале 2020 года..

Apple выпустила компьютеры Mac с процессором M1 в ноябре 2020 года. Последующее обновление ОС позволило пользователям устанавливать собственные ядра. После добавления этой возможности команда Corellium начала работу над портом Linux..

Corellium утверждает, что M1 имеет много общих компонентов с процессорами Apple серии A. Однако это помогает только в том случае, если Apple не использует стандарты, установленные другими производителями ARM..

Команда Corellium подробно описала проблемы, с которыми они столкнулись при переносе Linux..

READ  Как Поменять Apple ID На iPhone

Технические детали

Команда Corellium заявляет, что Apple не загружает свои процессоры традиционными способами. Сначала загрузчик запускает исполняемый файл, называемый форматом объектного файла Mach (Mach-O), заключенный в подписанный формат-оболочку IMG4. Это становится еще более сложным, когда задействовано больше ядер ЦП, поскольку они начинаются с адреса, указанного в регистре ввода-вывода с отображением памяти (MMIO), а затем запускают ядро..

Apple разработала собственный контроллер, выходящий за рамки обычных стандартов ARM Generic Interrupt Controller (GIC). Прерывания таймера направляются в запрос быстрого прерывания (FIQ), который не является стандартным и отражает старую 32-битную систему ARM. Команда говорит, что вы должны предоставить набор межпроцессорных прерываний (IPI), чтобы несколько процессоров могли взаимодействовать..

Команда Corellium имела опыт работы с поддержкой FIQ и была готова к большинству нестандартных подходов Apple. В конце концов, команда добавила предзагрузчик, который действует как оболочка для Linux, что привело к загрузке ОС на процессоре M1..

У команды не было интерфейсного кабеля для M1 Mac, и ей пришлось искать альтернативный входной маршрут. Из трех вариантов — Bluetooth, USB-хост или USB-хост xHCI на PCIe — они выбрали USB-хост и должны были взаимодействовать с чипом на I2C..

READ  Функция ЭКГ Apple Watch появится на Тайване в декабре

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

Источник