自從 Apple 推出使用其新的高效能 ARM 晶片的新 Mac 之後,第三方軟體開發人員就一直不停嘗試,試圖在新硬體上啟動和執行可替代的作業系統。上個月初,一些開發人員在 M1 Mac 上啟動了 Windows 10 和 Fedora Linux 虛擬機器,但是這並不算作業系統的替代使用。在開發 M1 Mac 替代作業系統中,獲得最大突破是專門從事 ARM 裝置虛擬機器的公司 Corellium 的團隊。該團隊設法移植了 Linux,並使其在 M1 Mac Mini 上 “完全可用”。
新的 Linux 埠使得 Ubuntu 首次在 Apple 的 M1 Macs 執行。Corellium 已成功將 Ubuntu 移植到 M1 Macs 上,併發布了一個教程供其他人遵循。修改後的 Ubuntu 版本啟動後會載入到常規使用者介面中,幷包括 USB 支援。
儘管 M1 晶片和 Apple 的其他晶片共享著很多元件,但它是非標準化的,因此建立 Linux 驅動程式以確保 Ubuntu 正常執行並不容易。
蘋果公司在設計 M1 Mac 時並未考慮到雙系統或替代系統。蘋果公司軟體工程高階副總裁 Craig Federighi 此前曾指出官方無意支援以本地方式啟動其他作業系統,例如 Windows 或 Linux。虛擬機器看似是蘋果公司建議使用者使用其它作業系統的唯一方法,但這並沒有阻止人們建立自己的埠。
Hector Martin 是一個常常將 Linux 在各種硬體上執行的開發人員,他也正試圖將 Linux 移植到 M1 Macs 上。這些開發人員大多被蘋果 M1 晶片提供的效能優勢吸引,在基於 ARM 的 MAC 上執行 Linux 想必是無聲的。“可以執行 Linux 的 ARM 膝上型電腦已經讓我期待很久了,” Linux 創造者 Linus Torvalds 在 11 月表示,“除了作業系統外,新版的蘋果 Air 幾乎是完美的。”
Corellium 發文Corellium 首席技術辦公室 Chris Wade 昨天在 Twitter 上宣佈了團隊工作的最新進展。他在部落格上寫道:“研究蘋果 M1,不僅是為了創造新的 Linux 埠,這也是我們安全研究的一部分。”
該部落格文章提供了 Corellium 在此過程中克服的諸多障礙,包括處理 Apple 的 SoC 是如何建立更多 CPU 核心的,處理 Apple 專有的中斷控制器等等。除此之外,Corellium 還添加了預載入器,該預載入器充當 Linux 的包裝程式,並作為啟動處理器核心的緩衝。
這篇文章包括在 M1 Mac 上安裝 Ubuntu 的教程,還有一個 Github 儲存庫(corellium /linux-m1),使用者可以從中下載。按照這些步驟操作,使用者最終可以直接從 USB 啟動作業系統。但是,目前距離 Boot Camp 風格的雙系統還有很長的路要走。即使 Corellium 團隊已經公佈了教程,但其所需的步驟仍比大多數使用者想像的更為複雜,所以不建議普通使用者把它作為日常驅動程式。
“這個新埠在 Mac Mini M1 上 “完全可用”,並且可以透過 USB 啟動完整的 Ubuntu 桌面。”Corellium 的首席技術官 Chris Wade 稱,“但是,使用者將需要一個 USB-C 加密狗才能使網路正常工作,並且執行埠需要對 Linux 和自定義核心有所瞭解。Corellium 近期會發布有關該過程的教程。”
技術細節Corellium 團隊表示,蘋果不使用傳統方式來啟動其 CPU。首先,它引導載入程式執行一種名為 Mach 目標檔案格式(Mach-O)的可執行檔案,該可執行檔案以名為 IMG4 的簽名包裝器格式進行包裝。隨著啟動更多 CPU 核心,情況變得更加複雜,它們將從記憶體對映 I / O(MMIO)暫存器指定的地址開始執行核心。
蘋果公司設計了自己的控制器,該控制器超出了通常的 ARM 通用中斷控制器(GIC)標準。定時器中斷被導向快速中斷請求(FIQ),這不是標準化程式,反映了較舊的 32 位 ARM 系統。Corellium 團隊稱,必須提供一組處理器間中斷(IPI)才能使多個處理器進行通訊。
Corellium 團隊具有處理 FIQ 支援的經驗,並早已為 Apple 的大多數非標準方法做好了準備。它的處理方法之一是,新增一個預載入程式,充當 Linux 的包裝程式,從而導致 OS 在 M1 處理器上啟動。
該小組沒有用於 M1 Mac 的介面,因此不得不尋找替代輸入路線。在藍芽、USB 主機和 PCIe 上的 xHCI USB 主機中,他們選擇了 USB 主機並與 I2C 上的晶片進行互動。
建立正確的 USB 連線後,他們可以連線鍵盤,滑鼠和快閃記憶體驅動器。這為執行正常的桌面 Linux 發行版提供了可能性。
團隊經驗Corellium 在解決 Apple 作業系統保護方面有一些經驗。此前它為安全研究人員提供了虛擬 iPhone,以幫助進行漏洞探索。這一舉動激怒了蘋果,使得它於 2019 年 8 月以版權為由向 Corellium 提起訴訟。蘋果後來在 2020 年 1 月指控 Corellium 違反了數字千年版權法案(DMCA),而法官在 12 月駁回了其侵犯版權的控告。關於其他數字千年版權法案指控的裁決已被推遲。
Corellium 此次利用其開發 Sandcastle 專案的經驗,編寫用於新 Apple SoC 的 Linux 驅動程式。幸運的是,Apple 正式允許在 Apple Silicon Macs 上引導自定義核心,因此替換程式開發者們無需利用漏洞來導向核心。與其他 64 位 ARM SoC 相比,Apple Silicon 的韌體介面和啟動過程非常不同。經過一些工作,Corellium 團隊設法增加了對足夠硬體介面的支援,從而成功在 M1 Mac Mini 上引導 Linux Ubuntu。
安裝教程使用者可以下載 Corellium 共享的有關如何啟動 Ubuntu 的說明。關於此說明,簡單概括,首先需要下載其實時映像(從用於 Raspberry Pi 的 ARM64 Ubuntu 構建中稍作修改),然後將映像複製到外部 USB 驅動器(需要至少 16GB 的容量),將 USB 驅動器連線到 Mac Mini 的 USB-C 埠,啟動進入初始作業系統介面,安裝自定義核心(Corellium 提供了安裝指令碼),最後使用預設憑據登入。
Corellium 也稱,安裝過程不是很友好,因此不建議初學者在 Mac Mini 上使用 Linux。此外,M1 的機器學習核心沒有 GPU 加速或支援,因此不要企圖在新系統上玩遊戲或執行機器學習任務。但對於 PC 硬體和 Linux 的發燒友來說,這仍然是個令人振奮的訊息。此外,Linux 創造者 Linus Torvalds 也稱,Apple Silicon MacBooks 所提供的效能和電池壽命是首屈一指的,因此它們非常適合進行實時程式設計。