openSUSE:RISC-V
RISC-V is the free and open RISC instruction set architecture developed by the RISC-V Foundation.
openSUSE images for RISC-V
There are some riscv64 boards supported by openSUSE. Since the RISC-V support is still under development, you may run into bugs or unstable circumstances while running openSUSE on riscv64 machines. Please report to openSUSE Bugzilla or the mailing list if you find any issues. See here for more board information.
On real hardware
Here are openSUSE Tumbleweed images for supporting RISC-V boards.
![]() |
Tumbleweed Port Images
|
https://download.opensuse.org/ports/riscv/tumbleweed/images/ |
![]() |
Tumbleweed ISO Images
|
https://download.opensuse.org/ports/riscv/tumbleweed/iso/ |
Using an emulator
The provided images can be used on normal PCs on a regular Tumbleweed installation, using either the qemu userspace CPU emulation, or the qemu system emulation.
QEMU user-space emulation
Download a rootfs from the "Port Images" link.
![]() |
Tumbleweed (Factory)
|
https://download.opensuse.org/ports/riscv/tumbleweed/images/openSUSE-Tumbleweed-RISC-V-JeOS.riscv64-rootfs.riscv64.tar.xz |
Install qemu and systemd-machined:
# zypper in qemu-linux-user systemd-container
Register qemu as handler for RISC-V binaries:
# qemu-binfmt-conf.sh --credential yes
Prepare systemd-nspawn to not use private networking (see man 5 systemd.nspawn):
# mkdir /etc/systemd/nspawn # cat > /etc/systemd/nspawn/riscv.nspawn << EOF [Network] Private=off [Exec] PrivateUsers=off EOF
Download a RISC-V container and register in machined:
# machinectl pull-tar --verify=no \ http://download.opensuse.org/ports/riscv/tumbleweed/images/openSUSE-Tumbleweed-RISC-V-JeOS.riscv64-rootfs.riscv64.tar.xz \ riscv
Boot the container:
# machinectl start riscv
Get a shell:
# machinectl shell riscv
Have a lot of fun...
QEMU system emulation
Download an efi image from the "Port Images" link.
![]() |
Tumbleweed (Factory)
|
http://download.opensuse.org/ports/riscv/tumbleweed/images/openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.raw.xz |
Install qemu-extra.
# zypper in qemu-extra guestfs-tools
Convert the raw image to compressed 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
Extract /boot from the image.
# virt-copy-out -a openSUSE-Tumbleweed-RISC-V-JeOS-efi.riscv64.qcow2 /boot .
Run qemu.
# qemu-system-riscv64 -nographic -machine virt -m 4G \ -device virtio-blk-device,drive=hd0 -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
Log in via SSH.
# ssh localhost -p 22222 # root / linux
Build Service
The default "chroot" build type is not wired up enough to use binfmt emulation. It is necessary to use --vm-type=qemu or =kvm.
osc co openSUSE:Factory:RISCV/gromox cd openSUSE/Factory/RISCV/gromox/ osc build --vm-type=kvm standard riscv64
If you run an instance of obs-server, check that the worker config (/etc/sysconfig/obs-server) has it too:
OBS_VM_TYPE="kvm"