大約三個月前,我開始接觸 Fedora Linux 的 RISC-V 版本。這段時間發生了很多事。

我瀏覽了 Fedora RISC-V 的追蹤項目,對其中大部分進行了分類(目前還有 17 個處於 NEW 狀態),並盡力處理所有可能的問題。

我平常的工作方式是取得 Fedora 套件的原始碼(fedpkg clone -a),然後進行建置(fedpkg mockbuild -r fedora-43-riscv64)。過一段時間後,我會檢查是否建置成功,如果沒有,就去查看建置日誌找出原因。

結果是:目前已提交了 86 個 Fedora 套件的提取請求(pull requests)。從「llvm15」這類大型套件到「iyfct」(一個簡單的遊戲)這類小型套件。目前大部分都已合併,而且大多數都已成功建置於 Fedora 43。這樣我們就可以建置它們,並且遵循 Fedora koji 上的「f43-updates」標籤。

處理套件的工作帶來了一個艱難、有時甚至有爭議的主題:速度。或者更確切地說,是速度的缺乏。

您知道,目前的 RISC-V 硬體速度很慢。這導致了糟糕的建置時間——看看我從 koji 取得的 binutils 2.45.1-4.fc43 套件的詳細資訊(Fedora 和 RISC-V Fedora):

那是一塊 StarFive VisionFive 2 開發板,雖然它有其他優勢(例如已合併到主線的驅動程式),但它並非市面上最快的板子。我詢問了一下,其中一位移植者在一台 Milk-V Megrez 上進行了建置——花了 58 分鐘。

還值得一提的是,目前 RISC-V Fedora 的建置是關閉 LTO(鏈接時優化)進行的。這是為了減少記憶體使用量和建置時間。

RISC-V 的建置器配備四或八核心,擁有 8、16 或 32 GB 的 RAM(取決於開發板)。而這些核心通常與 Arm Cortex-A55 核心相比。這是當今 Arm 晶片中最低階的 CPU 核心。

Milk-V Titan 主機板上的 UltraRISC UR-DP1000 SoC 應該會稍微改善情況(並且可以擁有 64 GB RAM)。SpacemiT K3 為基礎的系統也類似(但只有 32 GB RAM)。兩者都會有所改善,但不是最終解決方案。

我們需要硬體能夠在一小時內建置上述的「binutils」套件。並啟用系統級的 LTO 等,才能與其他架構匹敵。這是與速度相關的要求。

沒有意義為了加入而使用速度緩慢的建置器,這會讓套件維護者抱怨。您知道,在 Fedora 中,建置結果只有在所有架構都完成後才會發布到儲存庫。過去我們曾有維護者抱怨 AArch64 建置器的速度太慢。有些開發者可能會開始將 RISC-V 架構排除在他們的套件之外,以免需要等待。

任何未來的建置器都需要像其他普通的伺服器一樣可以機架式安裝和管理(放入機架、連接線纜、安裝、不再觸碰)。因為沒有人會為了手動重新啟動基於 SBC 的建置器而進入資料中心。

沒有滿足這兩項要求的系統,我們甚至無法規劃 RISC-V 64 位元架構成為 Fedora Linux 的官方主要架構之一。

如此長的建置時間讓 QEMU 對我很有用。我的 AArch64 桌上型電腦有 80 個核心,透過使用 QEMU 的使用者空間 riscv64 模擬,我可以在不購買 RISC-V 硬體的情況下建置套件。不過,由於單一執行緒比原生慢,還是會出現測試超時的情況。

有些套件(例如 LLVM)會真正利用所有可用的核心和記憶體。我想知道在 Ampere One 為基礎的系統上,擁有 192/384 個核心會有多快。

不過,我只將 QEMU 用於本地建置/測試。Fedora 和其他一些發行版一樣,只進行原生建置。

我們計劃開始建置 Fedora Linux 44。如果一切順利,我們將在所有建置器上使用相同的核心映像檔(目前的建置器使用混合的核心版本)。LTO 仍將被禁用。

至於速度不足的問題……有計劃引入新的、更快的建置器。並可能會將一些較重的套件分配給它們。