從 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 首席技術辦公室 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 所提供的性能和電池壽命是首屈一指的,因此它們非常適合進行實時編程。
色 發自 凹非寺
量子位 | 公眾號 QbitAI
蘋果M1/M2芯片首個符合OpenGL ES 3.1標準的GPU驅動誕生了。
它來自Asahi Linux,就是那個專注于將Linux引入蘋果芯片系統的開源項目。
目前,該驅動已經過數萬次測試,確保穩定性。
值得一提的是,這一號稱“里程碑”的進展僅由兩個程序員大佬完成,他們做到了蘋果自己都沒有辦到的事兒。
(眾所周知,蘋果本身的驅動不兼容任何開放GPU標準)。
我和Asahi Lina是資金最少的兩個人。但我們打敗了大公司,有點尷尬……
消息一出,網友直呼“”,光是在ycombinator上就已有破千的熱度。
你們簡直就是逆向工程領域里的巨頭,我打賭蘋果已經在挖你們的墻腳了吧。
還有人表示:
Mac末代i9機皇哭暈在廁所。
Asahi Linux項目由黑客Hector Martin發起,主要為Apple Silicon系列蘋果電腦做Linux系統移植,也就是讓Mac系統跑上Linux。
2021年1月該項目正式啟動,受到“Linux之父”Linus Torvalds的關注。
去年3月,Asahi Linux成功在M1芯片實現運行Linux,終端一行代碼啟動安裝,也能一鍵刪除卸載。
在此之后,他們便計劃在該系統上推出兼容Apple Silicon的GPU驅動。
當時,Asahi Linux已對原型完成逆向工程工作,證明它“足以運行真正的圖形應用程序和基準測試”。
終于,現在,第一個也是唯一一個可在Apple Silicon上運行的、符合OpenGL ES 3.1標準的成品誕生了。
所謂的OpenGL ES標準,就是一個讓開發者利用設備GPU(包括手機、PDA和游戲主機等嵌入式設備)來繪制圖像、創建虛擬世界,以及實現許多其他與圖形相關功能的統一方法。
它由非營利性技術聯盟Khronos Group于2003年發布第一版,當時就立刻得到了大批游戲商的支持。
但蘋果的芯片自己專門開發了一套API(即Metal),導致無論是適用Vulkan、OpenGL還是OpenGL ES等“主流”標準的程序都沒法在Mac上運行。
Asahi Linux今天發布的這一驅動則改寫了這一格局,把M1、M1 Pro/Max/Ultra、M2和M2 Pro/Max都支持了個遍。
——當然,前提還是得在Linux系統上才行。
所以,如果你想體驗,需要先安裝Asahi Linux。
如果你已經是它的用戶,直接使用dnf upgrade (Fedora) 或pacman -Syu (Arch) 命令升級系統,就可以獲得這一最新驅動程序了。
目前,該驅動也已將測試結果提交給Khronos Group,通過30天的審查期后就可以蓋上官方認定。
如果你對其實現原理感興趣,可以進一步查閱文末官方博客[參考鏈接1]。
不容置疑,Asahi Linux這一發布收獲了網友大量的掌聲。
這對游戲行業很利好(深度學習還差點)。
你們真的是世界上最強的逆向工程大佬。蘋果都想挖你們了吧?是不是沒答應?(手動狗頭)
還有人表示,太強了,唯有捐款才能表達我們的感謝。
(ps.Asahi Linux作為一個非盈利組織,全靠為愛發電,他們自述所做工作光靠業余時間根本完不成,只能全職,確實需要一些外部支持。)
值得一提的是,大家討論最多的方向是蘋果以后會不會改善對OpenGL、Vulkan等這些大眾標準的支持?
畢竟它正在與NVidia、Adobe、Autodesk、Microsoft等圍繞OpenUSD渲染/動畫/CAD/3D場景格式合作。
一位網友列出兩種可能:
(1)蘋果遵守OpenGL和Vulkan的現有標準,讓電影和游戲制作商也獲得足夠大的動力;
(2)蘋果努力發揮自己的影響力,迫使開發者乃至全世界都支持他們的Metal標準;
隨后又自問自答:
我內心希望選擇方案(1),但我的直覺告訴我,蘋果將竭盡全力推動方案(2)。
這一觀點得到了許多人的支持。
如果蘋果能夠兼容所有標準(例如Vulkan),這對整個行業的渲染來說都會更好”。
但其中還是不乏反對之聲:
從游戲開發者的評價來看,Metal比Vulkan更受歡迎。
Apple曾是Vulkan工作組的成員,知道游戲開發者更喜歡什么,這就是他們為什么后面離開并創建了Metal。
言外之意,他認為蘋果應該堅持目前的做法。
你認為蘋果有希望重回這些標準嗎?
參考鏈接:
[1]https://rosenzweig.io/blog/first-conformant-m1-gpu-driver.html
[2]https://news.ycombinator.com/item?id=37224042
[3]https://appleinsider.com/articles/23/08/22/linux-for-apple-silicon-adds-first-conformant-m1-gpu-driver
— 完 —
量子位 QbitAI · 頭條號簽約
關注我們,第一時間獲知前沿科技動態
源:appleinsider
編輯:LQ
周二,Linux內核主要開發者Linus Torvalds宣布候選版本Linux 5.13現在可以進行公開測試。
而這次的最新版本引入了對蘋果 M1系統芯片的支持。
根據commit信息,Linux 5.13對蘋果M1芯片的初始支持已被合并到Linux SoC代碼樹中,預計 Linux Kernel 5.13 將帶來 M1 芯片支持。
從commit信息可以看到,在Linux內核實現對M1初始支持的開發者是Arnd Bergmann和Hector Martin. 他們的commit已在以下設備通過測試:
Mac mini (M1, 2020)
MacBook Pro (13-inch, M1, 2020)
MacBook Air (M1, 2020)
初步的M1支持包含UART、中斷、SMP和設備樹位,以提供基本功能。此外還有一個基于SimpleFB的幀緩沖器,不過要實現良好支持的3D/視頻加速顯然是一項艱巨挑戰。
去年12月, 被稱為「Linux移植專家」的Hector Martin還曾經發起為M1版Mac移植Linux系統的眾籌。
這位自稱Marcan的開發者一直致力于將Linux移植到各種不同的平臺,根據他的介紹:
自2000年代初以來,我一生中有一半以上的時間都在使用逆向工程設備。我曾致力于為一些平臺構建非官方的開放軟件支持,比如任天堂 Wii (我是其中一個最大的硬件文檔、開放庫、“越獄”軟件(The Homebrew Channel)、恢復工具(BootMii)等)、索尼 PS3(我編寫了AsbestOS和一個 Linux補丁集,以便在 PS3 Slim 上運行 Linux,以及在最初的Linux支持被移除之后使用最新的PS3單元)、 PS4(我將 Linux 移植到了 PS4上,以便能夠運行帶有全面OpenGL/Vulkan 圖形支持的Steam游戲) ,以及其他一些較小的平臺。
但是,讓Linux在蘋果M1上運行很難,這也需要全身心的投入,用Marcan的話,這是一份全職工作,所以他就發起了這項眾籌,希望得到每月4000美元的支持。
這個項目沒有得到蘋果的批準,但是只要Marcan不使用 macOS 的代碼來構建Linux支持,他說他向用戶發布是合法的。
蘋果還允許在其自研芯片上引導自定義內核,這為Linux支持鋪平了道路,但是Martin需要對蘋果的驅動程序進行逆向工程。
Linus Torvalds也曾表示,如果M1 Mac運行Linux,他會很喜歡,但他覺得沒有蘋果的合作是不可能的。
Torvalds說: 「對我來說,M1的主要問題是它的GPU和周圍的其他設備,因為這可能會阻礙我使用它,因為除非蘋果公司開放,否則它不會有任何Linux支持。
他還認為蘋果「似乎不太可能」公開其芯片組,但「你總是可以希望」。
萬一有一天實現了呢?
當然Linux 5.13只是初步的,僅僅是能夠啟動,能夠簡單用用而已,GPU部分就還完全不可用。
若需全面支持 M1還要解決許多關鍵問題,特別是讓Mac的圖形系統在Linux下完全正常運行以供日常使用。
Linus Torvlds表示,這需要大量的工作,但還好目前看起來進展比較順利。
除了對蘋果自研芯片的支持,Linux 5.13還引入了大量新的驅動程序,還有此前驅動程序的更新,以及對文件系統、體系架構、工具和進程處理等方面的其他改進。
據外媒9to5Linux消息,Linux 5.13的最終版本將在6月底或7月初向公眾發布。這將取決于Torvalds在開發周期中決定發布多少個候選版本。
參考資料:
https://appleinsider.com/articles/21/05/11/latest-linux-kernel-introduces-preliminary-apple-m1-support?utm_medium=rss
https://www.macrumors.com/2020/11/30/linux-apple-silicon-port-patreon/
https://www.oschina.net/news/136804/initial-m1-support-merged-into-linux-soc-tree