LWN:Fedora同意提供預編譯的macOS二進制文件!
共 3384字,需瀏覽 7分鐘
·
2024-06-12 13:21
關注了就能看到更多這么棒的文章哦~
Fedora approves shipping pre-built macOS binaries
By Joe Brockmeier
May 29, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/975445/
Asahi Linux 項目致力于在 Apple Silicon 硬件上支持 Linux。該項目的 旗艦 發(fā)行版是 Fedora Asahi Remix,它擁有自己的 安裝程序(而不是 Anaconda)來滿足在 Apple 硬件上安裝的獨特需求。之前安裝程序是由 Asahi 項目構建的,但它已向 Fedora 工程指導委員會 (FESCo) 申請(并獲得了)豁免,以包含來自上游開源項目的兩個二進制文件,以便安裝程序可以在 Fedora 基礎設施上構建。
pple Silicon 不支持像將 USB 驅動器插入并重新啟動到 Linux 安裝程序那樣簡單的事情。想要在 M1 或更高版本的 Mac 上安裝 Linux 的用戶必須在 macOS 中啟動安裝,調整磁盤大小以便為 Asahi 留出空間,然后重新啟動到 macOS 恢復(recoveryOS)以完成安裝。Asahi Linux 通常與 macOS 一起安裝,因此用戶可以選擇啟動到任一操作系統(tǒng),盡管用戶可以完全刪除 macOS 分區(qū)。作為該過程的一部分,Asahi 將用于系統(tǒng)恢復的 macOS 內核替換為 Asahi 的 m1n1 引導加載程序,用于 Apple 硬件。Apple Silicon 的整個啟動過程在 Asahi 的 2021 年 1 月/2 月進度報告 中有很好的描述。
這意味著安裝程序(用 Python 編寫)需要兩個 macOS 二進制文件才能執(zhí)行安裝:用于 macOS 的 Python 解釋器和 libffi,后者由 Python 在 recoveryOS 中使用,用于從 macOS 內核中提取固件供 Linux 使用。不幸的是,它需要 Xcode 在 macOS 上構建這些文件,因此無法在 Linux 上構建二進制文件,這意味著需要分發(fā)預構建的二進制文件。
根據(jù) Fedora 的 打包指南,所有“程序二進制文件和程序庫”都應該從源代碼構建,以確保安全并確保它們使用標準的 Fedora 編譯器標志。(這并不擴展到 content 二進制文件,如圖像或 PDF 文件,這些文件可以包含在內,無需相應的源代碼。)由于這是不可能的,Asahi 貢獻者 Davide Cavalca 于 5 月 15 日 請求了豁免,用于 macOS 上的 Python 構建和來自 Homebrew 項目的 libffi 構建:
我們特別想這樣做,因為它將使我們能夠向用戶分發(fā)一個也在 Fedora 中構建的 m1n1 階段 1(Asahi Linux 安裝程序會自帶一個預構建的)。
Neal Gompa 回復道“這可能沒問題,因為從我們的角度來看,macOS 是‘固件’”。Tom Stellard 想知道是否可以交叉編譯二進制文件,而不是引入在 macOS 上生成的二進制文件。Cavalca 回答說他不相信這樣做在實際操作上是可行的,除非在 Linux 之上運行帶有 Xcode 的 macOS 虛擬機。在某個時刻,可以使用 Darling,這是一個旨在在 Linux 上運行 macOS 軟件的項目,“但我認為它目前還不能使用(這也是我們目前還沒有打包它的原因)?!?br>
前 FESCo 成員 Miro Hron?ok 表示,他可能會反對允許這種例外情況。他爭辯說,允許為 macOS 預構建二進制文件將打開大門,允許完全放棄從源代碼構建所有內容的要求。他還問“我們如何知道 macOS 二進制文件不包含一些專有的 macOS/Xcode 代碼?”并 建議將該請求在郵件列表或 Fedora 的 Discourse 論壇上進行討論,但討論從未繼續(xù)進行。
Cavalca 說他還沒有審核過這些二進制文件,但它們來自官方的上游來源(分別是 Python 和 Homebrew)并且是可重新分發(fā)的。他以一種迂回的方式回答了 Hron?ok 關于專有代碼的問題,他說使用 Xcode 并不排除重新分發(fā),“否則你將無法將編譯器用于許多事情”。
此事在 FESCo 的 5 月 20 日會議 上被列為新業(yè)務。(不幸的是,F(xiàn)edora 會議的會議日志格式不允許直接鏈接到單個評論或時間戳。討論從 19:11:58 開始。)在會議期間,有人指出,F(xiàn)edora 項目還有另一個程序是在 Fedora 的 Koji 構建系統(tǒng)之外構建的,該程序針對 macOS:Fedora 媒體寫入器。Josh Stone 問了如何處理這個問題,Stephen Gallagher 回復說“處理得不好”。Gompa 接著解釋說,macOS 二進制文件是在其他地方構建的,然后提交給 Fedora 發(fā)布工程進行 公證(由 Apple 數(shù)字簽名),以便 macOS 用戶 不會收到警告在運行程序時。
經(jīng)過一番關于 macOS 工具鏈的奇特之處和問題許可的討論后,Gallagher 說他不明白如果 Fedora 不控制構建系統(tǒng),打包二進制文件的優(yōu)勢。Cavalca 說,讓安裝程序包由 Fedora 構建意味著“我們將從安裝程序是一個隨機的不可信 blob 變?yōu)橐粋€可信的包,它依賴于兩個更小的 blob”。
最終,Zbigniew J?drzejewski-Szmek 說他最初反對該提議,但后來轉而“更積極地看待”。他指出,該代碼不會在 Fedora 上運行,而是在 macOS 上運行,并且接受上游二進制文件是最好的解決方案:
我們不是構建 macOS 東西的專家,因此復制已經(jīng)完成的構建不會給我們帶來太大幫助。它很可能會引入更多問題和錯誤。并且由于該代碼永遠不會在 Linux 系統(tǒng)上執(zhí)行,因此它就像固件一樣,即我們出于實用原因而接受的東西。
在討論該主題約 50 分鐘后,Gallagher 要求進行投票。(會議日志中的時間戳為 19:50:20。)David Cantrell、Kevin Fenzi、Josh Stone 和 Stellard 都投票反對該例外情況。Major Hayden、Tomá? Hr?ka、Gallagher、Gompa 和 J?drzejewski-Szmek 投票支持,以五票對四票的優(yōu)勢批準了該例外情況。投票結束后,Gallagher 說:“這是我一段時間以來看到的最有爭議的投票”。
在會議記錄發(fā)布到 Fedora 開發(fā)郵件列表后,Hron?ok 寫道:“我有點難過,F(xiàn)ESCo 在沒有事先與更廣泛的社區(qū)討論的情況下就批準了這件事?!盕enzi 同意。
對于 Asahi Linux 用戶來說,幾乎不會有任何變化。安裝程序將繼續(xù)與以前一樣工作,但它將使用 Fedora 基礎設施構建??纯催@是否為預構建的二進制文件設定了先例,或者最終成為幫助用戶從專有操作系統(tǒng)遷移的唯一一次讓步,將會很有趣。我們很快就有機會找出答案:FESCo 也被要求批準 一項例外情況,以允許簽署的 SGX enclave 二進制文件用于運行機密虛擬機,并且應該很快就會處理這件事。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關注,關注 LWN 深度文章以及開源社區(qū)的各種新近言論~
