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