RISC-V

Revision 8 as of 2020-11-25 18:51:54

Clear message

Ubuntu provides riscv64 architecture for the RISC-V platform since Focal release.

One can boot it on any system with qemu-system, or on bare-metal board such as those built by SiFive.

Booting with qemu

qemu-system-riscv64 is available from qemu-system-misc package (apt install qemu-system-misc)

  • Machine type virt aka -machine virt

  • Bios is OpenSBI (apt install opensbi) -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf

  • "kernel" is qemu smode uboot (apt install u-boot-qemu) -kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf

  • And just the cloud image from http://cloud-images.ubuntu.com/

Working example with all the options is:

qemu-system-riscv64 \
-machine virt -m 2048 -smp 4 \
-bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf \
-kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf \
-device virtio-net-device,netdev=eth0 -netdev user,id=eth0 \
-device virtio-blk-device,drive=vda -drive file=livecd.ubuntu-cpc.img,id=vda 

Adjust to taste as needed. The image has a fallback cloud-init datasource that configures sudo user ubuntu with password ubuntu. Alternatively, you can provide a config drive (or tweak the first partitions /var/lib/cloud/seed/nocloud/* files) to setup anything else using cloud-init. For example ssh keys, disabling interactive login, and so on. See https://cloudinit.readthedocs.io/en/latest

Booting on SiFive HiFive Unleashed board

The above image has U-Boot SPL loader as well as SiFive U-Boot to boot on the board. Possibly one needs to set jumpers to boot from sd-card.

The image is qcow2 however, so convert it to raw first before flashing

qemu-img convert -O raw livecd.ubuntu-cpc.img livecd.ubuntu-cpc.raw
dd if=livecd.ubuntu-cpc.raw of=/dev/disk/by-id/