主流CPU架構全適配 OpenCloudOS源社區內核新增RISC-V架構支持

IM2Maker 3年前 (2022-08-25)

OCKS目前已實現對主流CPU架構的全適配。

近日,OpenCloudOS 社區推出 OpenCloudOS Kernel Stream (以下簡稱為 OCKS) 2207.2 內核版本,新版本中增加了對 RISC-V 64 架構的支持。這也意味著,OCKS目前已實現對主流CPU架構的全適配。

作為新一代開源精簡指令集(RISC)架構,近年來RISC-V在半導體領域備受關注。得益于其完全開放、免費授權、低成本研發、精簡靈活等特性,RISC-V生態正逐漸起步,也被視為繼x86、Arm后的第三大CPU架構。

OpenCloudOS 是由操作系統、云平臺、軟硬件廠商與開發者等共同倡議發起的全鏈路國產化開源操作系統,沉淀了騰訊及多家廠商在技術和開源生態方面的優勢。自社區成立以來,OpenCloudOS 一直在積極建設硬件及芯片支持生態。其中,適配國產“芯”的RSIC-V架構,從一開始就列為 OpenCloudOS 硬件支持計劃中的重點項目。

在保持了 L1 (源社區)項目的上游即時性與友好性的同時,OCKS 在 5.18 內核版本基礎上,對上游所欠缺的一些最新的 RISC-V 平臺特性增加了適配和支持。其中,OCKS 特別對 StarFive VisionFive 開發板進行了測試適配,從而讓 OpenCloudOS 社區在提供穩定而可靠的企業級內核的同時,更可以支持體驗到最新的業界開源硬件。

主流CPU架構全適配 OpenCloudOS源社區內核新增RISC-V架構支持

技術實現細節如下

驗證環境

硬件環境:VisionFive RISC-V 開發板

VisionFive 開發板是一塊高性價比的,支持 Linux 系統的 RISC-V 單板計算機。SoC 為 JH7100 芯片,提供了雙核 64 位 1.5 GHz RISC-V CPU,2MB 二級緩存,并帶有深度學習處理引擎及圖像視頻處理系統,為 RISC-V 開源架構生態提供了更高的水平開發套件,讓開發者得到更大的自由及更強的能力去創新和設計行業領先的解決方案。

軟件環境:OCKS 2207,Fedora 33 RISC-V版 runtime,GCC 12

VisionFive 官方鏡像目前以 Fedora 33 為基礎,官方默認使用下游內核 5.10 作為默認版本進行引導。啟動過程為 uboot -> grub2 -> kernel。其中 grub2 會將 device-tree 與 initramfs 加載并傳遞給內核。

我們使用官方鏡像為基礎,并使用上游 GCC 12 進行交叉編譯,進行了 OCKS 2207 的編譯與運行測試。

適配步驟

1、OCKS 2207對 RISC-V 的適配

OpcnCloudOS Kernel Stream 在發布之初,便為多架構、多平臺支持而進行了構建與發布系統的優化設計。在經過了第一個版本的沉淀與積累后,我們正式將 OpenCloudOS Stream 2207 的支持拓展到 RISC-V 架構。從而使得 OCKS 同時支持三大架構:x86_64,aarch64,RISC-V64。

在 2207.2 中,OpenCloudOS Kernel Stream 在上游軟件基礎上,增加了針對 RISC-V 架構進行發布和構建,以及功能支持的相關代碼。針對 StarFive 開發板,我們進行了大量適配工作,增加板級支持,對硬件驅動等,進行了實際驗證和測試。同時最大程度保持了代碼的一致性,在同源的基礎上,異構地發布多個不同軟件包,保持了上游友好的管理風格,易于維護的代碼結構,以及良好的下游支持。

同時為了緩解資源緊張與加速迭代,我們的構建系統提供了完成的開箱即用式交叉編譯支持,可以異構地進行版本發布,管理,kABI 驗證,RPM 打包等過程,將開發,維護,學習成本降到最低。

技術細節

OCKS 2207 現在可以通過單一入口,控制 ARCH 參數來生成不同架構對應的 RPM 包。并且在進行異構構建的時候,自動切換為交叉編譯模式。

OCKS 2207 構建 RISC V 版本內核只需在 Kernel Repo 中調用如下命令即可:

make dist-rpm ARCH=RISC-V64

生成的 RPM 包默認包含所有支持設備的 device tree,vmlinuz,調試信息等,和普通編譯基本無異。

2、在 VisionFive RISC-V 開發板上使用 OCKS 內核

OCKS 針對 RISC-V 會發布標準的 RPM 包裹。其中內核會安裝到標準的路徑中,并且將 Device Tree 與內核捆綁在一起發布。

VisionFive 官方提供了 基于 Fedora 的系統鏡像。OCKS 便是在此基礎上進行了測試與適配。

若要體驗 OCKS,在官方 Fedora 鏡像基礎上安裝 OCKS RPM 包,并對 bootloader 進行手動配置即可。OCKS 安裝路徑均為標準路徑。

由于不同開發板并沒有十分統一的啟動引導機制,在內核安裝后,用戶需要手動配置引導選項。

技術細節

OCKS 2207 由兩個包組成,kernel-core 與 kernel-modules。開發板作為物理邊緣設備,需要安裝兩個包。OCKS 2207 安裝后會在 /boot 下生成對應的 kernel vmlinuz 與 initramfs。與官方內核一樣,用戶需要手動配置 grub.cfg,增加如下引導選項:

menuentry 'OCKS 2207' {

linux /vmlinuz-5.18.15-2207.2.0.ocks

devicetree

initrd /initramfs-5.18.15-2207.2.0.ocks.fc33.img

}

其中 <> 內的內容用戶需酌情填寫。最新的 device tree 也會在 /usr/lib/modules/5.18.15-2207.2.0.ocks/dtbs 中提供,用戶可酌情升級。

3、OCKS RISC-V運行效果

在 Starfive 雙核 8G 系統上,OCKS 可以很好的與官方 Fedora 鏡像一起運行,如下:

主流CPU架構全適配 OpenCloudOS源社區內核新增RISC-V架構支持

發布 OCKS 2207.2,添加針對RISC-V支持

源代碼 Rebase 到上游 5.18.15。

RISC-V 平臺 DMA 相關功能和兼容性問題進行補全和修復。

拓展構建系統,支持 RISC-V 架構。

增加 StarFive VisionFive 開發板原生支持。

修復一些潛在的發行版兼容性問題。

OpenCloudOS Stream 2207.2 相關鏈接

源代碼倉庫:https://gitee.com/OpenCloudOS/OpenCloudOS-Kernel-Stream

RPM Repo:Index of /opencloudos/8/kernel-ocks/2207.2/

RISC-V64版下載地址:Index of /opencloudos/8/kernel-ocks/2207.2/riscv64/

后續規劃

目前 VisionFive 相關外設的大量驅動仍舊在上游討論中,我們暫時使用了 StarFive 的下游版本。我們會持續跟蹤其上游動向,及時同步相關組件代碼。

對于 RISC-V 整體架構框架,上游成熟度也并不高,其中很多細節仍舊需要上游的打磨和開發。我們采用了保留最大兼容的模式適配了 VisionFive 開發板。待上游有進一步進展后,我們會在 rebase 時對現有相關下游代碼進行整理,清理,保持和上游一致。

同時 RISC-V 和其它更多架構生態也在持續豐富中,通過對 RISC-V 進行適配,也更進一步驗證了 OCKS 的跨架構進行開發,發布,構建的系統潛力。日后會對更多架構和硬件提供支持。

最后,記得關注微信公眾號:鎂客網(im2maker),更多干貨在等你!

鎂客網


科技 | 人文 | 行業

微信ID:im2maker
長按識別二維碼關注

硬科技產業媒體

關注技術驅動創新

分享到