乐趣区

关于操作系统:主流CPU架构全适配-OpenCloudOS源社区内核新增RISCV架构支持

近日,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 社区在提供稳固而牢靠的企业级内核的同时,更能够反对体验到最新的业界开源硬件。

技术实现细节如下:

验证环境
硬件环境: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 <original boot param>
devicetree <dtb defaults to jh7100-starfive-visionfive-v1.dtb>
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 镜像一起运行,如下:

公布 OCKS 2207.2,增加针对 RISC- V 反对

  • 源代码 Rebase 到上游 5.18.15。
  • RISC-V 平台 DMA 相干性能和兼容性问题进行补全和修复。
  • 拓展构建零碎,反对 RISC-V 架构。
  • 减少 StarFive VisionFive 开发板原生反对。
  • 修复一些潜在的发行版兼容性问题。

OpenCloudOS Stream 2207.2 相干链接
源代码仓库:https://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 的跨架构进行开发,公布,构建的零碎后劲。日后会对更多架构和硬件提供反对。

退出移动版