Serenity Operating System
at portability 121 lines 4.0 kB view raw
1#!/bin/sh 2# shellcheck disable=SC2086 # FIXME: fix these globing warnings 3 4set -e 5 6script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) 7cd "$script_path" 8 9#SERENITY_PACKET_LOGGING_ARG="-object filter-dump,id=hue,netdev=breh,file=e1000.pcap" 10 11[ -e /dev/kvm ] && [ -r /dev/kvm ] && [ -w /dev/kvm ] && SERENITY_KVM_ARG="-enable-kvm" 12 13[ -z "$SERENITY_BOCHS_BIN" ] && SERENITY_BOCHS_BIN="bochs" 14 15[ -z "$SERENITY_QEMU_BIN" ] && SERENITY_QEMU_BIN="qemu-system-i386" 16 17[ -z "$SERENITY_KERNEL_CMDLINE" ] && SERENITY_KERNEL_CMDLINE="hello" 18 19[ -z "$SERENITY_RAM_SIZE" ] && SERENITY_RAM_SIZE=256M 20 21[ -z "$SERENITY_COMMON_QEMU_ARGS" ] && SERENITY_COMMON_QEMU_ARGS=" 22$SERENITY_EXTRA_QEMU_ARGS 23-s -m $SERENITY_RAM_SIZE 24-cpu max 25-d cpu_reset,guest_errors 26-device VGA,vgamem_mb=64 27-hda _disk_image 28-device ich9-ahci 29-debugcon stdio 30-soundhw pcspk 31-soundhw sb16 32" 33 34[ -z "$SERENITY_COMMON_QEMU_Q35_ARGS" ] && SERENITY_COMMON_QEMU_Q35_ARGS=" 35$SERENITY_EXTRA_QEMU_ARGS 36-s -m $SERENITY_RAM_SIZE 37-cpu max 38-machine q35 39-d cpu_reset,guest_errors 40-device VGA,vgamem_mb=64 41-device piix3-ide 42-drive file=_disk_image,id=disk,if=none 43-device ide-hd,bus=ide.6,drive=disk,unit=0 44-debugcon stdio 45-soundhw pcspk 46-soundhw sb16 47" 48 49export SDL_VIDEO_X11_DGAMOUSE=0 50 51if [ "$1" = "b" ]; then 52 # ./run b: bochs 53 $SERENITY_BOCHS_BIN -q -f .bochsrc 54elif [ "$1" = "qn" ]; then 55 # ./run qn: qemu without network 56 $SERENITY_QEMU_BIN \ 57 $SERENITY_COMMON_QEMU_ARGS \ 58 -device e1000 \ 59 -kernel kernel \ 60 -append "${SERENITY_KERNEL_CMDLINE}" 61elif [ "$1" = "qtap" ]; then 62 # ./run qtap: qemu with tap 63 sudo $SERENITY_QEMU_BIN \ 64 $SERENITY_COMMON_QEMU_ARGS \ 65 $SERENITY_KVM_ARG \ 66 $SERENITY_PACKET_LOGGING_ARG \ 67 -netdev tap,ifname=tap0,id=br0 \ 68 -device e1000,netdev=br0 \ 69 -kernel kernel \ 70 -append "${SERENITY_KERNEL_CMDLINE}" 71elif [ "$1" = "qgrub" ]; then 72 # ./run qgrub: qemu with grub 73 $SERENITY_QEMU_BIN \ 74 $SERENITY_COMMON_QEMU_ARGS \ 75 $SERENITY_KVM_ARG \ 76 $SERENITY_PACKET_LOGGING_ARG \ 77 -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23 \ 78 -device e1000,netdev=breh 79elif [ "$1" = "q35_cmd" ]; then 80 SERENITY_KERNEL_CMDLINE="" 81 # FIXME: Someone who knows sh syntax better, please help: 82 for _ in $(seq 2 $#); do 83 shift 84 SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE $1" 85 done 86 echo "Starting SerenityOS, Commandline: ${SERENITY_KERNEL_CMDLINE}" 87 # ./run: qemu with SerenityOS with custom commandline 88 $SERENITY_QEMU_BIN \ 89 $SERENITY_COMMON_QEMU_Q35_ARGS \ 90 $SERENITY_KVM_ARG \ 91 -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23 \ 92 -device e1000,netdev=breh \ 93 -kernel kernel \ 94 -append "${SERENITY_KERNEL_CMDLINE}" 95elif [ "$1" = "qcmd" ]; then 96 SERENITY_KERNEL_CMDLINE="" 97 # FIXME: Someone who knows sh syntax better, please help: 98 for _ in $(seq 2 $#); do 99 shift 100 SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE $1" 101 done 102 echo "Starting SerenityOS, Commandline: ${SERENITY_KERNEL_CMDLINE}" 103 # ./run: qemu with SerenityOS with custom commandline 104 $SERENITY_QEMU_BIN \ 105 $SERENITY_COMMON_QEMU_ARGS \ 106 $SERENITY_KVM_ARG \ 107 -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23 \ 108 -device e1000,netdev=breh \ 109 -kernel kernel \ 110 -append "${SERENITY_KERNEL_CMDLINE}" 111else 112 # ./run: qemu with user networking 113 $SERENITY_QEMU_BIN \ 114 $SERENITY_COMMON_QEMU_ARGS \ 115 $SERENITY_KVM_ARG \ 116 $SERENITY_PACKET_LOGGING_ARG \ 117 -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23,hostfwd=tcp:127.0.0.1:8000-10.0.2.15:8000 \ 118 -device e1000,netdev=breh \ 119 -kernel kernel \ 120 -append "${SERENITY_KERNEL_CMDLINE}" 121fi