openbsd-riscv64-vm.md - www.codemadness.org - www.codemadness.org saait content files (HTM) git clone git://git.codemadness.org/www.codemadness.org (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- openbsd-riscv64-vm.md (2101B) --- 1 This describes how to setup an OpenBSD RISCV64 VM in QEMU. 2 3 The shellscript below does the following: 4 5 * Set up the disk image (raw format). 6 * Patch the disk image with the OpenBSD miniroot file for the installation. 7 * Downloads the opensbi and u-boot firmware files for qemu. 8 * Run the VM with the supported settings. 9 10 The script is tested on the host GNU/Void Linux and OpenBSD-current. 11 12 **IMPORTANT!: The signature and checksum for the miniroot, u-boot and opensbi 13 files are not verified. If the host is OpenBSD make sure to instead install the 14 packages (pkg_add u-boot-riscv64 opensbi) and adjust the firmware path for the 15 qemu -bios and -kernel options. ** 16 17 18 ## Shellscript 19 20 #!/bin/sh 21 # mirror list: https://www.openbsd.org/ftp.html 22 mirror="https://ftp.bit.nl/pub/OpenBSD/" 23 release="7.0" 24 minirootname="miniroot70.img" 25 26 miniroot() { 27 test -f "${minirootname}" && return # download once 28 29 url="${mirror}/${release}/riscv64/${minirootname}" 30 curl -o "${minirootname}" "${url}" 31 } 32 33 createrootdisk() { 34 test -f disk.raw && return # create once 35 qemu-img create disk.raw 10G # create 10 GB disk 36 dd conv=notrunc if=${minirootname} of=disk.raw # write miniroot to disk 37 } 38 39 opensbi() { 40 f="opensbi.tgz" 41 test -f "${f}" && return # download and extract once. 42 43 url="${mirror}/${release}/packages/amd64/opensbi-0.9p0.tgz" 44 curl -o "${f}" "${url}" 45 46 tar -xzf "${f}" share/opensbi/generic/fw_jump.bin 47 } 48 49 uboot() { 50 f="uboot.tgz" 51 test -f "${f}" && return # download and extract once. 52 53 url="${mirror}/${release}/packages/amd64/u-boot-riscv64-2021.07p0.tgz" 54 curl -o "${f}" "${url}" 55 56 tar -xzf "${f}" share/u-boot/qemu-riscv64_smode/u-boot.bin 57 } 58 59 setup() { 60 miniroot 61 createrootdisk 62 opensbi 63 uboot 64 } 65 66 run() { 67 qemu-system-riscv64 \ 68 -machine virt \ 69 -nographic \ 70 -m 2048M \ 71 -smp 2 \ 72 -bios share/opensbi/generic/fw_jump.bin \ 73 -kernel share/u-boot/qemu-riscv64_smode/u-boot.bin \ 74 -drive file=disk.raw,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 \ 75 -netdev user,id=net0,ipv6=off -device virtio-net-device,netdev=net0 76 } 77 78 setup 79 run