Corelliumは、Linuxに適合したバージョンを発表しました チップを搭載した新しいAppleコンピュータで実行する M1、Apple M1チップと互換性のあるLinuxカーネルバリアントはGPLv2ライセンスの下でリリースされており、メインカーネルに含めるためのパッチが出荷されています。
Corelliumは、LinuxからAppleチップへの移行に豊富な経験があります iPhoneなどのモバイルデバイスで使用されます。 移行の初期段階で、テスターは、AppleM1のコンポーネントの多くが他のSoCでAppleによってすでに使用されているテクノロジーに基づいていることを奨励されました。
しかし、ドライバーを作成する過程で、すべてがそれほど単純ではないことが明らかになりました Apple M1チップには、多くの非標準ソリューションが含まれています。 ARM 64ビットSoCのLinuxサポートは、一般的なブロックに基づいています およびファームウェアインターフェイスですが、AppleM1は一般的なソリューションをほとんど使用していません。
たとえば、従来のARM SoCでは、CPUコアのアクティブ化は、ファームウェアによって提供されるPSCI(Power State Coordination Interface)を介して行われます。 Apple M1では、MMIOレジスタの操作が必要です。
この段階では、 Corellium開発者は朝日Linuxプロジェクトに先んじました、これまでリバースエンジニアリングとブートローダーの実験に限定されていたAppleM1チップを搭載したシステムにLinuxを移植するためにHéctorMartinによって設立されました。 ただし、Asahi Linuxの主な目標は、Linuxを起動するだけでなく、電源管理メカニズムを完全にサポートし、特定の命令セットを使用するApple M1GPUの機能を使用することです。
Corelliumパッチは、特定の機能の起動とサポートの提供に限定されています SMPモード、タイマー、割り込み、アイドル状態の処理および初期化に関連するM1チップの数。
たくさん Asahi Linuxの代表者は、Corelliumパッチのリリースを歓迎しました そして彼らは、Linuxカーネルの主流の採用を加速するためにピアレビュー支援を提供する意思を表明しました。
さらに、Alyssa Rosenzweig(Panfrost GPU Maliドライバーを開発しているCollaboraから)は、Apple M1GPUのリバースエンジニアリングとオープンソースドライバーの開発に関するXNUMX番目のレポートを公開したとも言われています。
現段階では、GPUを使用して三角形を描くことができるコントローラーの初期プロトタイプが準備されています。 M1 GPUの場合、最初の頂点シェーダーとフラグメントシェーダーも手動でコーディングされます。 カーネルドライバーIOKitは、GPUとの対話に使用されます。
AppleM1も独自のAIC割り込みコントローラーを使用しています (Apple割り込みコントローラー)、 ほとんどの場合、標準のARMGICとは互換性がありません。 タイマーからの割り込みをバインドするための別のメカニズム。 さらに、複数のプロセッサ間の相互作用を整理するために、IPI(プロセッサ間割り込み)を制御する個別のレジスタが使用されます。
AppleM1チップを搭載したMacMini M1コンピュータを起動するには、 すぐに使用できるrootfsイメージが準備されます, RaspberryPi用のUbuntuビルドに基づいてビルドされています。
インストールするには、イメージをドライブにコピーする必要があります USB、本機をUSB-Cポートに接続し、コンピューターを1TRモードで起動します (リカバリOS)起動中に電源ボタンを長押しします。 コマンドラインが表示されたら、linuxsetup.shスクリプトを実行する必要があります。これにより、カーネルがインストールされ、環境が構成されます。
Linuxが実行を開始するのはこのときです。 一方、macOSを返すには、1TRモードでコマンド「bputil-n」を実行する必要があります。
Ready buildはUSB、I2C、DARTをサポートしています。ネットワークには外部USBアダプターを使用することをお勧めしますが、グラフィックハードウェアアクセラレーションと拡張周辺機器はまだサポートされていません。 非標準のPCIeベースのプロトコルを使用しているため、Bluetoothサポートでは新しいドライバーを作成する必要があります。