Corellium пусна версия на Linux, адаптирана за работа на новите компютри Apple, оборудвани с чип M1 . Вариантът на ядрото на Linux, съвместим с чипа Apple M1, е издаден под лиценз GPLv2 и са подадени пачове за включване в основното ядро.
Corellium има богат опит в мигрирането на Linux към чипове на Apple, използвани в мобилни устройства като iPhone. В началната фаза на миграция тестерите бяха насърчени да научат, че много от компонентите на Apple M1 са базирани на технологии, които вече се използват от Apple в други SoC.
Но по време на процеса на разработване на драйвера стана ясно, че нещата не са толкова прости и чипът Apple M1 включва много нестандартни решения. Поддръжката на Linux за 64-битови ARM SoCs разчита на общи градивни блокове и интерфейси на фърмуера, но Apple M1 почти не използва типични решения.
Например, в конвенционалните ARM SoC, активирането на процесорните ядра се извършва чрез PSCI (Power State Coordination Interface), предоставен от фърмуера, а в Apple M1 това изисква манипулиране на MMIO регистъра.
На този етап разработчиците на Corellium са изпреварили проекта Asahi Linux , основан от Ектор Мартин, за да пренесе Linux към системи с чип Apple M1, който досега се е ограничавал до обратно инженерство и експерименти с bootloader. Основната цел на Asahi Linux обаче е не само да стартира Linux, но и да осигури пълна поддръжка за механизми за управление на захранването и да използва възможностите на графичния процесор Apple M1, който използва специфичен набор от инструкции.
Пачовете на Corellium са ограничени до осигуряване на зареждане и поддръжка за специфични функции на M1 чипа, свързани с SMP режим, таймери, прекъсвания, обработка на състояние на готовност и инициализация.
Представители на Asahi Linux приветстваха пускането на пачовете за Corellium и изразиха готовността си да предоставят съдействие за експертна оценка, за да ускорят масовото приемане на ядрото на Linux.
Освен това се казва, че Alyssa Rosenzweig (от Collabora, която разработва драйвера Panfrost GPU Mali) също е публикувала втори доклад за обратното инженерство и разработването на драйвери с отворен код за графичния процесор Apple M1.
На текущия етап е подготвен първоначален прототип на контролера, който може да рисува триъгълници с помощта на графичния процесор. За графичните процесори M1 първите шейдъри на върхове и фрагменти също са ръчно кодирани. Драйверът на ядрото IOKit се използва за взаимодействие с графичния процесор.
Apple M1 използва и собствен контролер за прекъсвания на Apple (AIC), който е до голяма степен несъвместим със стандартните ARM графични интегрални схеми (GIC) , както и различен механизъм за свързване на прекъсвания от таймер. Освен това, отделни регистри, които контролират IPI (междупроцесорни прекъсвания), се използват за управление на взаимодействието между множество процесори.
За зареждане на Mac Mini M1 компютър с Apple M1 чип е подготвен готов за употреба rootfs образ , изграден на базата на Ubuntu компилацията за Raspberry Pi.
За да инсталирате, копирайте образа на USB устройство, свържете устройството към USB-C порта и стартирайте компютъра в режим 1TR (възстановяване на операционната система), като задържите бутона за захранване по време на стартиране. След като се появи командният ред, изпълнете скрипта linuxsetup.sh, който ще инсталира ядрото и ще конфигурира средата.
Тогава Linux ще започне да работи, докато за да върнете macOS, трябва да изпълните командата "bputil -n" в режим 1TR.
Ready build поддържа USB, I2C и DART, препоръчва се да се използва външен USB адаптер за мрежа, докато графичното хардуерно ускорение и разширените периферни устройства все още не се поддържат. Поддръжката на Bluetooth изисква писане на нов драйвер поради използването на нестандартен PCIe-базиран протокол.
Източник: https://corellium.com