近来,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 相关链接

源代码库房:gitee.com/OpenCloudOS…
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 的跨架构进行开发,发布,构建的体系潜力。日后会对更多架构和硬件供给支撑。