openSUSE:RISC-V
RISC-V 是由 RISC-V 基金会开发的免费和开放的 RISC 指令集架构。
openSUSE RISC-V 镜像
有一些 riscv64 板卡受 openSUSE 支持。由于 RISC-V 支持仍在开发中,您在 riscv64 机器上运行 openSUSE 时可能会遇到错误或不稳定情况。如果您发现任何问题,请向 openSUSE Bugzilla 或 邮件列表 报告。
有关更多板卡信息,请参阅 此处。
在真实硬件上
以下是支持 RISC-V 板卡的 openSUSE Tumbleweed 镜像。
![]() |
Tumbleweed 端口镜像
|
https://download.opensuse.org/ports/riscv/tumbleweed/appliances/ |
![]() |
Tumbleweed ISO 镜像
|
https://download.opensuse.org/ports/riscv/tumbleweed/iso/ |
使用模拟器
提供的镜像可以在常规 Tumbleweed 安装的普通 PC 上使用,使用 qemu 用户空间 CPU 模拟或 qemu 系统模拟。
QEMU 用户空间模拟
从“端口镜像”链接下载一个 rootfs。
![]() |
Tumbleweed (Factory)
|
https://download.opensuse.org/ports/riscv/tumbleweed/appliances/openSUSE-Tumbleweed-RISC-V-JeOS.riscv64-rootfs.riscv64.tar.xz |
安装 qemu 和 systemd-machined
# zypper in qemu-linux-user systemd-container
将 qemu 注册为 RISC-V 二进制文件的处理程序
# qemu-binfmt-conf.sh --credential yes
准备 systemd-nspawn 以不使用私有网络 (请参阅 man 5 systemd.nspawn)
# mkdir /etc/systemd/nspawn # cat > /etc/systemd/nspawn/riscv.nspawn << EOF [Network] Private=off [Exec] PrivateUsers=off EOF
下载 RISC-V 容器并注册到 machined
# machinectl pull-tar --verify=no \ http://download.opensuse.org/ports/riscv/tumbleweed/appliances/openSUSE-Tumbleweed-RISC-V-JeOS.riscv64-rootfs.riscv64.tar.xz \ riscv
启动容器
# machinectl start riscv
获取 shell
# machinectl shell riscv
玩得开心...
QEMU 系统模拟
从“端口镜像”链接下载一个 efi 镜像。
![]() |
Tumbleweed (Factory)
|
http://download.opensuse.org/ports/riscv/tumbleweed/appliances/openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.raw.xz |
安装 qemu-extra。
# zypper in qemu-extra guestfs-tools
将 raw 镜像转换为压缩的 qcow2。
# qemu-img convert -f raw -O qcow2 -c openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.raw openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.qcow2
从镜像中提取 /boot。
# virt-copy-out -a openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.qcow2 /boot .
运行 qemu。
# qemu-system-riscv64 -nographic -machine virt -m 4G \
-drive file=${qcow2image},format=qcow2,id=hd0 \
-device virtio-net-device,netdev=usernet -netdev user,id=usernet,hostfwd=tcp::22222-:22 \
-kernel boot/u-boot.bin
通过 SSH 登录。
# ssh localhost -p 22222 # root / linux
构建服务
与最初的 aarch64 移植工作一样,openSUSE 构建服务目前还没有本地 RISC-V 构建工作器。使用交叉编译器仅适用于支持它的软件 (例如 Linux 内核、U-Boot)。
使用本地工具链构建软件 (无论是在真实硬件上还是在虚拟机中) 允许软件包维护者避免更改上游构建系统中 (许多) 不正确支持交叉编译的项目的构建系统。对于 aarch64,SUSE 托管本地 OBS 构建工作器,并且在 x86_64 笔记本电脑上的本地构建使用完整的 QEMU 虚拟机来模拟真实的 aarch64 构建工作器,包括其硬件。
然而,在我们需要构建整个发行版时,模拟完整的硬件堆栈效率低下。因此,openSUSE:Factory:RISCV 目前使用一种略有不同的方法,直到提供本地 RISC-V 构建工作器为止。
在 openSUSE:Factory:RISCV/standard 中,OBS 构建使用 riscv64 用户空间完成,但内核是构建工作器本地的 (即 x86_64)。这是通过在 OBS 中使用 binfmt 模拟来实现的。
构建设置如下
- 将本地 (x86_64) kernel-obs-build 安装到 VM 磁盘镜像中
qemu-linux-user安装到 VM 磁盘镜像中。initvm.x86_64从主机复制到 VM 磁盘镜像中,并用作 init (PID 0)。qemu-system-kvm使用硬件虚拟化执行本地 (x86_64) 内核。x86_64 内核执行initvm.x86_64,后者设置qemu-linux-user以提供 riscv64 用户空间模拟。然后initvm.x86_64执行 (riscv64) systemd init,OBS 从那里接管。
在 x86_64 主机上为 openSUSE:Factory:RISCV/standard 构建时,请确保安装了 build-initvm-x86_64 并使用 --vm-type=kvm
osc co openSUSE:Factory:RISCV/gromox cd openSUSE/Factory/RISCV/gromox/ osc build --vm-type=kvm standard riscv64
有支持使用完整 QEMU 模拟。为此,请针对 openSUSE:Factory:RISCV/native 仓库构建,确保安装了 qemu-extra 并使用 --vm-type=qemu
osc co openSUSE:Factory:RISCV/gromox cd openSUSE/Factory/RISCV/gromox/ osc build --vm-type=qemu native riscv64
如果拥有它,还应将 native 仓库用于 RISC-V 硬件上的本地构建。(在这种情况下,不需要 --vm-type。)
