openSUSE:RISC-V

Jump to: navigation, search

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.

Geeko-white.png
Tumbleweed Port Images
https://download.opensuse.org/ports/riscv/tumbleweed/images/
Geeko-white.png
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.

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

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