Zum Hauptinhalt springen

Blog

Bleiben Sie mit aktuellen Nachrichten vom RuyiSDK-Team auf dem Laufenden

RuyiSDK 0.15 版本更新说明

· 3 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.15 现已发布,对应的包管理器版本也为 0.15.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 为多语言支持做好准备:在需要输出本地化内容,如软件包的手工下载步骤说明等内容时,当用户系统的区域、语言配置与当前内容的可选区域、语言版本不完全匹配时,现在会尽可能地匹配了。

    例如:如果您将系统配置为新加坡英语,而某条内容仅提供美国英语与中国大陆中文两种版本,那么 ruyi 0.15.0 将为您展示美国英语内容,而非崩溃。

  • 支持了不依赖 Docker 的构建方式,以方便发行版打包者,或不使用官方支持架构、系统组合的用户尝鲜 ruyi

    需要注意的是:因为目前 RuyiSDK 官方软件源的内容分发形式以二进制为主,所以想在非官方支持系统上使用 ruyi 的用户将需要组织起来,自行搭建另一套软件源。RuyiSDK 团队无法保证此种情况下的用户体验。

RuyiSDK 软件源

  • 软件源的结构不再与 ruyi 0.7.0 或更低版本兼容。是时候升级到最新版本了。
  • emulator/box64-upstream 已更新到 0.3.0。
  • 用 Box64 运行 WPS Office 的操作文档已更新。
  • Ruyi 设备安装器(ruyi device provision)现已新增支持以下设备型号与系统:
    • Canaan Kendryte K230D:由 RuyiSDK 受权打包的 CanMV Linux SDK 镜像,附带演示程序。提供 LP64 与 RV64ILP32 两种 ABI。

RuyiSDK 0.14 版本更新说明

· 3 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.14 现已发布,对应的包管理器版本也为 0.14.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 正式引入插件架构:ruyi 虚拟环境的 profile 相关处理现在完全由插件负责了。
  • 支持了 Debian 软件包格式 *.deb 的解包操作。
  • 再次完善了对“预发布版本”的判断:先前会对非完全由数字结尾的该类版本号判断错误。 但该潜在问题不会被当前的 RuyiSDK 软件源内容触发。
  • 修复了 riscv64 Python 3.12 环境下 pygit2 的构建失败问题:先前需要在 pygit2 构建开始之后、试图在其虚拟环境中执行 setup.py 前,人工干预,在该环境中安装 setuptools——从 Python 3.12 起该包已经不会被自动安装。

RuyiSDK 软件源

  • 增加了从上游源码打包的 Box64 架构模拟器:emulator/box64-upstream
  • 增加了办公套件 extra/wps-office。请注意:由于是商业软件的缘故,首次运行该软件包时需要操作接受一份《最终用户许可协议》。
  • 您可按照 ruyi news 的指引,在您的 RISC-V 桌面设备上用 Box64 运行 WPS Office 进行办公了。

为了支持刷写方式复杂、需要夹杂人工干预、镜像文件需要手工下载等复杂情况下的设备初始化,我们正在将设备安装器重构为基于插件架构的形式。 由于本开发周期临时加入了 Box64 运行 WPS Office 的 PoC 内容,设备安装器的插件化重构工作暂缓,但仍将在未来的版本上线。届时旧版 ruyi 的设备安装器功能将不可用,请先升级再进行体验。

尝鲜:使用 Box64 在 RISC-V 系统上运行 WPS Office

· 6 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

得益于 Box64 RISC-V 移植工作的进展,在 RISC-V Linux 桌面发行版上运行 WPS Office 等常见 x86 二进制软件已成为可能。RuyiSDK 正在开展此方面的集成工作; 按以下的步骤操作,您将能先行一步感受 RISC-V 办公体验。

我们假定您在进行以下操作之前,已经升级到了 ruyi 0.14.0 或更高的版本, 并执行了 ruyi update 以将软件源信息同步到最新。

操作步骤

为叙述方便,设您的 $HOME/home/foo,架构(uname -m 输出)为 riscv64,使用 sudo 提权。

允许安装预发布版本的软件包

由于 Box64 RISC-V 支持进展迅速,目前(2024 年 7 月初)很多功能改进没有在 其最新稳定版本得到体现。我们打包了 Box64 的开发快照版本;为了能够安装此版本, 您需要配置 ruyi 以使其在安装软件包时考虑预发布版本。

  • 如果 ~/.config/ruyi 目录不存在,则创建之。
  • 编辑 ~/.config/ruyi/config.toml
[packages]
prereleases = true

安装 Box64

按照 RuyiSDK 软件包的命名习惯,从 Box64 的上游(而非 PLCT 或某些厂商的 fork) 构建的 Box64 二进制包,名字叫 box64-upstream

ruyi install box64-upstream
# ...
# info: package box64-upstream-0.2.8-ruyi.20240702 installed to /home/foo/.local/share/ruyi/binaries/riscv64/box64-upstream-0.2.8-ruyi.20240702

记下安装路径。

配置 Linux binfmt_misc 机制

由于 WPS Office 的打包方式特殊,它只能从开发商提供的启动器脚本被间接拉起, 而不能直接交由 Box64 启动。因此您需要确保您的系统支持 binfmt_misc: 如果不支持,接下来的操作会失败。

不同 Linux 发行版的 binfmt_misc 配置方式不尽相同,以下针对采用 systemd 的系统叙述。您可以根据自身情况自行调整。

# 确认 Box64 可执行文件的位置
ls /home/foo/.local/share/ruyi/binaries/riscv64/box64-upstream-0.2.8-ruyi.20240702/bin/box64

# 调整 Box64 `binfmt.d` 配置文件的路径
# 假设您使用 nano 编辑器
nano /home/foo/.local/share/ruyi/binaries/riscv64/box64-upstream-0.2.8-ruyi.20240702/etc/binfmt.d/box64.conf
# 将行尾的 //bin/box64 改为先前验证过的绝对路径

# 将其部署到系统
sudo cp /home/foo/.local/share/ruyi/binaries/riscv64/box64-upstream-0.2.8-ruyi.20240702/etc/binfmt.d/box64.conf /etc/binfmt.d/box64.conf
sudo systemctl restart systemd-binfmt

# 检查部署结果
cat /proc/sys/fs/binfmt_misc/box64

安装 x86 sysroot

由于 Box64 主要面向游戏等软件的模拟,而这些软件基本都自带所有依赖,所以 Box64 本身基本没有自带什么 x86 运行时库。WPS Office 作为一个预期被系统包管理器管理的 桌面应用,Box64 自带的少量 x86 运行时库无法满足它的需求,因此我们需要自行准备 x86 环境。

# 下载预制的 x86 sysroot
# 此为临时性的链接。后续待本功能迭代稳定之后,操作方式将改变,此链接也将失效
# 假设此文件放在了 ~/Downloads 目录下
wget https://mirror.iscas.ac.cn/ruyisdk/dist/temp/debian-bookworm.gui.20240705.amd64.tar.zst

# 假设安装到 /opt/debian-bookworm.amd64
sudo mkdir /opt/debian-bookworm.amd64
pushd /opt/debian-bookworm.amd64
tar -xf ~/Downloads/debian-bookworm.gui.20240705.amd64.tar.zst
popd

安装 WPS Office

强制安装 x86_64 架构的 WPS Office 软件包:

ruyi install --host x86_64 wps-office
# ...
# info: package wps-office-11.1.0-r.11719 installed to /home/foo/.local/share/ruyi/binaries/x86_64/wps-office-11.1.0-r.11719

由于 WPS Office 官方下载页面的限制,ruyi 无法自动下载安装包。 请按照提示信息操作,之后重新执行该命令以安装。

调整 WPS Office 启动器脚本

由于 WPS Office 预期自身被系统包管理器管理,它的启动器脚本假定了自身的安装路径 为 /opt/kingsoft/wps-office,需要为它们打补丁。

pushd /home/foo/.local/share/ruyi/binaries/x86_64/wps-office-11.1.0-r.11719

# 当前工作目录路径中应当不含特殊字符。
# 如果含有,请自行适当调整 sed 命令的参数
sed -i "s@gInstallPath=/@gInstallPath=$(pwd)/@" ./usr/bin/*

popd

运行 WPS Office

准备工作终于完成,现在将所有部分串起来:

# 此动态链接库的原生转发仍有些问题,因此强制以模拟方式执行
export BOX64_EMULATED_LIBS=libsqlite3.so.0
# 配置 Box64 库搜索路径
export BOX64_LD_LIBRARY_PATH=/opt/debian-bookworm.amd64/usr/lib/x86_64-linux-gnu

# 现在可以执行了!
/home/foo/.local/share/ruyi/binaries/x86_64/wps-office-11.1.0-r.11719/usr/bin/wps

结语

以上是 RuyiSDK 对 RISC-V 二进制翻译 x86 软件的初步集成成果。 今后我们仍将迭代这一过程的用户体验,以期用户在 RISC-V 系统上运行需要的应用 更加方便。

RuyiSDK 0.13 版本更新说明

· 2 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.13 现已发布,对应的包管理器版本也为 0.13.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 修复了 issue #158: coremark 包的两个版本,解压后的目录布局不统一。现在都会在当前工作目录下“摊开”了。
  • 修复了 issue #159: 对“预发布版本”判断方式的不统一。
  • 随着 Python 3.12 的正式发布,官方 ruyi 二进制也在 Python 3.12 环境构建了。
  • 为引入插件架构做好准备:引入了 Starlark 语言支持,并支持在 CI 自动化构建。Starlark 是一种极度简化的 Python 方言,被 Bazel、BUCK 等构建系统广泛采用;这是为了让所有了解 Python 语言的开发者都可使用熟悉的语法撰写 RuyiSDK 包管理器插件。

为了支持刷写方式复杂、需要夹杂人工干预、镜像文件需要手工下载等复杂情况下的设备初始化,我们正在将设备安装器重构为基于插件架构的形式,预计将于下个版本付诸测试。届时旧版 ruyi 的设备安装器功能将不可用,请先升级再进行体验。

RuyiSDK 0.12 版本更新说明

· 2 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.12 现已发布,对应的包管理器版本也为 0.12.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 修复了先前 Pine64 Star64 Armbian 镜像无法下载的问题。
  • 对于部分必须由用户手工下载的文件,支持了相应的用户体验:按照当前系统语言设置,渲染相应的提示语。
  • 升级了 pygit2 依赖库版本到 1.5.0,以支持 libgit2 的 1.8 版本。
  • 修复了 XDG_STATE_HOME 环境变量被无视的问题。

为了支持刷写方式复杂、需要夹杂人工干预、镜像文件需要手工下载等复杂情况下的设备初始化,我们正在对设备安装器进行重构,预计将于下个版本付诸测试。届时旧版 ruyi 的设备安装器功能将不可用,请先升级再进行体验。

RuyiSDK 0.11 版本更新说明

· 2 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.11 现已发布,对应的包管理器版本也为 0.11.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 去除了先前唯一的 LGPL 依赖。现在 RuyiSDK 包管理器及其所有依赖都采用宽松开源许可证了,方便下游用户在商业场景取用。

RuyiSDK 软件源

  • Ruyi 设备安装器(ruyi device provision)现已新增支持以下设备型号:
    • Pine64 Star64

请在升级 RuyiSDK 包管理器之后,执行 ruyi update 以拉取软件源更新。

我们注意到越来越多的设备型号,甚至如最新面世的 BananaPi BPI-F3 等等,其系统镜像仅以网盘(百度网盘、Google Drive、MEGA 等服务)方式分发。 对这些设备型号的妥善支持面临挑战;在接下来的版本迭代中,我们将尝试支持此场景,敬请期待或参与进来。

RuyiSDK 0.10 版本更新说明

· 2 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.10 现已发布,对应的包管理器版本也为 0.10.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 支持了全局选项 --porcelain 以方便外部程序与 ruyi 交互。初期为 ruyi listruyi news list 两种操作适配了 porcelain 输出格式。
  • ruyi news 在某条新闻存在当前系统语言翻译版本时,会优先展示此语言版本了。

RuyiSDK 软件源

RuyiSDK 自 0.10 版本开始支持沁恒微电子(WCH)RISC-V 产品。

  • 新增打包了 PLCT 维护的 LLVM 工具链 toolchain/llvm-plct。其主要特色是支持 XTHeadVector 扩展。
  • Ruyi 设备安装器(ruyi device provision)现已新增支持以下设备型号:
    • WCH CH32V103 评估板
    • WCH CH32V203 评估板
    • WCH CH32V208 评估板
    • WCH CH32V303 评估板
    • WCH CH32V305 评估板
    • WCH CH32V307 评估板
    • WCH CH582F 评估板
    • WCH CH592X 评估板

请在升级 RuyiSDK 包管理器之后,执行 ruyi update 以拉取软件源更新。

RuyiSDK 0.9 版本更新说明

· Eine Minute Lesezeit
xen0n
RuyiSDK 技术主管

RuyiSDK 0.9 现已发布,对应的包管理器版本也为 0.9.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 支持了 LZ4 格式压缩文件的解包。

RuyiSDK 软件源

RuyiSDK 自 0.9 版本开始支持矽速(Sipeed)全线 RISC-V 产品。

Ruyi 设备安装器(ruyi device provision)现已新增了以下设备型号:

  • Sipeed LicheeRV Nano
  • Sipeed Lichee Cluster 4A
  • Sipeed Lichee Console 4A
  • Sipeed Maix-I
  • Sipeed Tang Mega 138K Pro

以下设备型号先前已得到 Ruyi 设备安装器支持:

  • Sipeed LicheePi 4A
  • Sipeed LicheeRV

请在升级 RuyiSDK 包管理器之后,执行 ruyi update 以拉取软件源更新。

RV64ILP32 裸机工具链与 profile 现已可用

· 2 Minuten Lesezeit
xen0n
RuyiSDK 技术主管

为了您的跟踪前沿开发动态方便,RuyiSDK 团队现已打包了 RV64ILP32 这一实验性 ABI 的裸机工具链供您使用。 由于是裸机工具链,此工具链不自带 sysroot,且未开启 multilib:可用的 ABI 为 ilp32d

使用示例

给定如下的 C 程序:

// test.c
long long add(long long *a, long long b)
{
return *a + b; // Should be realized with `ld` and `add`
}

void check(int);

void check_sizes(void)
{
check(sizeof(int)); // a0 should be 4
check(sizeof(long)); // a0 should be 4
check(sizeof(long long)); // a0 should be 8
check(sizeof(void *)); // a0 should be 4
}

使用相应的工具链包与 profile,我们将可编译出符合 RV64ILP32 ABI 的目标代码:

$ ruyi update
$ ruyi install gnu-plct-rv64ilp32-elf
$ ruyi venv -t gnu-plct-rv64ilp32-elf --without-sysroot baremetal-rv64ilp32 /tmp/venv
$ source /tmp/venv/bin/ruyi-activate
$ /tmp/venv11/bin/riscv64-plct-elf-gcc -O2 -c -o test.o test.c

检查目标代码是否符合预期:

$ riscv64-plct-elf-readelf -h test.o | grep 32
Class: ELF32
Flags: 0x25, RVC, X32, double-float ABI
$ riscv64-plct-elf-objdump -dw test.o

test.o: file format elf32-littleriscv


Disassembly of section .text:

00000000 <add>:
0: 6108 ld a0,0(a0)
2: 952e add a0,a0,a1
4: 8082 ret

00000006 <check_sizes>:
6: 3141 addiw sp,sp,-16
8: 4511 li a0,4
a: e406 sd ra,8(sp)
c: 00000097 auipc ra,0x0
10: 000080e7 jalr ra # c <check_sizes+0x6>
14: 4511 li a0,4
16: 00000097 auipc ra,0x0
1a: 000080e7 jalr ra # 16 <check_sizes+0x10>
1e: 4521 li a0,8
20: 00000097 auipc ra,0x0
24: 000080e7 jalr ra # 20 <check_sizes+0x1a>
28: 60a2 ld ra,8(sp)
2a: 4511 li a0,4
2c: 2141 addiw sp,sp,16
2e: 00000317 auipc t1,0x0
32: 00030067 jr t1 # 2e <check_sizes+0x28>

可见,此工具链确实生成了指针宽度为 32 位,但利用了 RV64 能力的目标代码。

新增板卡支持 (2024-01-29)

· Eine Minute Lesezeit
xen0n
RuyiSDK 技术主管

现已为以下板卡新增了镜像包。

您可用 RuyiSDK 设备安装向导 ruyi device provision 自动初始化您的设备,或通过 ruyi install 手动安装它们:镜像文件会被自动解压或符号链接到 ~/.local/share/ruyi/blobs/<包名>-<包版本号> 的位置。

感谢您对 RuyiSDK 的支持!

Sipeed LicheeRV & Allwinner 哪吒 D1

此两种型号在硬件层面大体兼容,但也有细微差别,仅体现在设备树层面。

  • board-image/oerv-awol-d1-base: openEuler RISC-V 系统镜像,基础系统
  • board-image/oerv-awol-d1-xfce: openEuler RISC-V 系统镜像,含 XFCE GUI

StarFive VisionFive

  • board-image/oerv-starfive-visionfive-base: openEuler RISC-V 系统镜像,基础系统
  • board-image/oerv-starfive-visionfive-xfce: openEuler RISC-V 系统镜像,含 XFCE GUI

StarFive VisionFive2

  • board-image/oerv-starfive-visionfive2-base: openEuler RISC-V 系统镜像,基础系统
  • board-image/oerv-starfive-visionfive2-xfce: openEuler RISC-V 系统镜像,含 XFCE GUI