From b76ba5ec0eef1961de6efdba39e380f0bb13d613 Mon Sep 17 00:00:00 2001 From: Travis Geiselbrecht Date: Thu, 12 May 2022 20:23:22 -0700 Subject: [PATCH] [scripts][do-qemuriscv] synchronize with options available from arm version Most notably the ability to specify the disk image --- scripts/do-qemuriscv | 63 +++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/scripts/do-qemuriscv b/scripts/do-qemuriscv index 21b4dcb2..acf60555 100755 --- a/scripts/do-qemuriscv +++ b/scripts/do-qemuriscv @@ -4,19 +4,22 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" function HELP { echo "help:" - echo "-b a virtio block device" - echo "-c cmpctmalloc instead of dlmalloc" - echo "-M miniheap instead of dlmalloc" - echo "-n a virtio network device" - echo "-t a virtio tap network device" - echo "-d a virtio display" - echo "-e sifive e platform" - echo "-u sifive u platform" - echo "-6 64bit" - echo "-S supervisor mode (using OpenSBI)" - echo " currently only works in 64bit mode" + echo "-6 : 64bit" + echo "-S : supervisor mode (using OpenSBI)" + echo " currently only works in 64bit mode" + echo "-e : sifive e platform" + echo "-u : sifive u platform" echo "-m " echo "-s " + echo + echo "-c : cmpctmalloc instead of dlmalloc" + echo "-M : miniheap instead of dlmalloc" + echo + echo "-d : a virtio block device" + echo "-n : a virtio network device" + echo "-t : a virtio tap network device" + echo "-g : a virtio display" + echo echo "-h for help" echo "all arguments after -- are passed to qemu directly" exit 1 @@ -24,7 +27,8 @@ function HELP { DO_NET=0 DO_NET_TAP=0 -DO_BLOCK=0 +DO_DISK=0 +DO_DISK_IMAGE="" DO_64BIT=0 DO_EMBEDDED=0 DO_UNLEASHED=0 @@ -37,11 +41,11 @@ MEMSIZE=512 SUDO="" PROJECT="" -while getopts bdhm:cMmnteu6p:s:S FLAG; do +while getopts cd:ghm:Mmnteu6p:s:S FLAG; do case $FLAG in - b) DO_BLOCK=1;; c) DO_CMPCTMALLOC=1;; - d) DO_DISPLAY=1;; + d) DO_DISK=1; DISK_IMAGE=$OPTARG;; + g) DO_DISPLAY=1;; M) DO_MINIHEAP=1;; n) DO_NET=1;; t) DO_NET_TAP=1;; @@ -102,12 +106,6 @@ if [[ -z "$PROJECT" ]]; then PROJECT=$_PROJECT fi -BLOCK_ARGS=" -drive if=none,file=blk.bin,id=blk,format=raw -device virtio-blk-device,drive=blk" -NET_ARGS=" -netdev user,id=vmnic,hostname=qemu -device virtio-net-device,netdev=vmnic" -NET_TAP_ARGS=" -netdev tap,id=vmnic,ifname=qemu0,script=no -device virtio-net-device,netdev=vmnic" -NO_DISPLAY_ARGS=" -nographic" -DISPLAY_ARGS=" -device virtio-gpu-device -serial stdio" - # construct a list of args based on previous variables ARGS=" -machine $MACHINE -kernel build-${PROJECT}/lk.elf" if [[ ! -z "$CPU" ]]; then @@ -122,20 +120,31 @@ fi if [[ ! -z "$BIOS" ]]; then ARGS+=" -bios $BIOS" fi -if (( $DO_BLOCK )); then - ARGS+=$BLOCK_ARGS +if (( $DO_DISK )); then + ARGS+=" -drive if=none,file=${DISK_IMAGE},id=blk,format=raw" + ARGS+=" -device virtio-blk-device,drive=blk" fi if (( $DO_NET )); then - ARGS+=$NET_ARGS + ARGS+=" -netdev user,id=vmnic,hostname=qemu" + ARGS+=" -device virtio-net-device,netdev=vmnic" fi if (( $DO_NET_TAP )); then - ARGS+=$NET_TAP_ARGS + # quick note to enable tap interface + # IFNAME=qemu0 + # BRIDGE=bridge0 + # sudo tunctl -u $(whoami) -t ${IFNAME} + # sudo ifconfig ${IFNAME} up + # sudo ip link set ${IFNAME} master ${BRIDGE} + ARGS+=" -netdev tap,id=vmnic,ifname=qemu0,script=no,downscript=no" + ARGS+=" -device virtio-net-device,netdev=vmnic" #SUDO="sudo " fi if (( $DO_DISPLAY )); then - ARGS+=$DISPLAY_ARGS + ARGS+=" -device virtio-gpu-device -serial stdio" + ARGS+=" -device virtio-keyboard-device" + ARGS+=" -device virtio-mouse-device" else - ARGS+=$NO_DISPLAY_ARGS + ARGS+=" -nographic" fi MAKE_VARS=""