openSUSE:RISC-V

跳转到:导航搜索

RISC-V 是由 RISC-V 基金会开发的免费和开放的 RISC 指令集架构。

openSUSE RISC-V 镜像

有一些 riscv64 板卡受 openSUSE 支持。由于 RISC-V 支持仍在开发中,您在 riscv64 机器上运行 openSUSE 时可能会遇到错误或不稳定情况。如果您发现任何问题,请向 openSUSE Bugzilla邮件列表 报告。

有关更多板卡信息,请参阅 此处

在真实硬件上

以下是支持 RISC-V 板卡的 openSUSE Tumbleweed 镜像。

Geeko-white.png
Tumbleweed 端口镜像
https://download.opensuse.org/ports/riscv/tumbleweed/appliances/
Geeko-white.png
Tumbleweed ISO 镜像
https://download.opensuse.org/ports/riscv/tumbleweed/iso/

使用模拟器

提供的镜像可以在常规 Tumbleweed 安装的普通 PC 上使用,使用 qemu 用户空间 CPU 模拟或 qemu 系统模拟。

QEMU 用户空间模拟

从“端口镜像”链接下载一个 rootfs。

Geeko-white.png
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 镜像。

Geeko-white.png
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。)