Serenity Operating System
at hosted 123 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-smp 2 27-device VGA,vgamem_mb=64 28-hda _disk_image 29-device ich9-ahci 30-debugcon stdio 31-soundhw pcspk 32-soundhw sb16 33" 34 35[ -z "$SERENITY_COMMON_QEMU_Q35_ARGS" ] && SERENITY_COMMON_QEMU_Q35_ARGS=" 36$SERENITY_EXTRA_QEMU_ARGS 37-s -m $SERENITY_RAM_SIZE 38-cpu max 39-machine q35 40-d cpu_reset,guest_errors 41-smp 2 42-device VGA,vgamem_mb=64 43-device piix3-ide 44-drive file=_disk_image,id=disk,if=none 45-device ide-hd,bus=ide.6,drive=disk,unit=0 46-debugcon stdio 47-soundhw pcspk 48-soundhw sb16 49" 50 51export SDL_VIDEO_X11_DGAMOUSE=0 52 53if [ "$1" = "b" ]; then 54 # ./run b: bochs 55 $SERENITY_BOCHS_BIN -q -f .bochsrc 56elif [ "$1" = "qn" ]; then 57 # ./run qn: qemu without network 58 $SERENITY_QEMU_BIN \ 59 $SERENITY_COMMON_QEMU_ARGS \ 60 -device e1000 \ 61 -kernel kernel \ 62 -append "${SERENITY_KERNEL_CMDLINE}" 63elif [ "$1" = "qtap" ]; then 64 # ./run qtap: qemu with tap 65 sudo $SERENITY_QEMU_BIN \ 66 $SERENITY_COMMON_QEMU_ARGS \ 67 $SERENITY_KVM_ARG \ 68 $SERENITY_PACKET_LOGGING_ARG \ 69 -netdev tap,ifname=tap0,id=br0 \ 70 -device e1000,netdev=br0 \ 71 -kernel kernel \ 72 -append "${SERENITY_KERNEL_CMDLINE}" 73elif [ "$1" = "qgrub" ]; then 74 # ./run qgrub: qemu with grub 75 $SERENITY_QEMU_BIN \ 76 $SERENITY_COMMON_QEMU_ARGS \ 77 $SERENITY_KVM_ARG \ 78 $SERENITY_PACKET_LOGGING_ARG \ 79 -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 \ 80 -device e1000,netdev=breh 81elif [ "$1" = "q35_cmd" ]; then 82 SERENITY_KERNEL_CMDLINE="" 83 # FIXME: Someone who knows sh syntax better, please help: 84 for _ in $(seq 2 $#); do 85 shift 86 SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE $1" 87 done 88 echo "Starting SerenityOS, Commandline: ${SERENITY_KERNEL_CMDLINE}" 89 # ./run: qemu with SerenityOS with custom commandline 90 $SERENITY_QEMU_BIN \ 91 $SERENITY_COMMON_QEMU_Q35_ARGS \ 92 $SERENITY_KVM_ARG \ 93 -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 \ 94 -device e1000,netdev=breh \ 95 -kernel kernel \ 96 -append "${SERENITY_KERNEL_CMDLINE}" 97elif [ "$1" = "qcmd" ]; then 98 SERENITY_KERNEL_CMDLINE="" 99 # FIXME: Someone who knows sh syntax better, please help: 100 for _ in $(seq 2 $#); do 101 shift 102 SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE $1" 103 done 104 echo "Starting SerenityOS, Commandline: ${SERENITY_KERNEL_CMDLINE}" 105 # ./run: qemu with SerenityOS with custom commandline 106 $SERENITY_QEMU_BIN \ 107 $SERENITY_COMMON_QEMU_ARGS \ 108 $SERENITY_KVM_ARG \ 109 -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 \ 110 -device e1000,netdev=breh \ 111 -kernel kernel \ 112 -append "${SERENITY_KERNEL_CMDLINE}" 113else 114 # ./run: qemu with user networking 115 $SERENITY_QEMU_BIN \ 116 $SERENITY_COMMON_QEMU_ARGS \ 117 $SERENITY_KVM_ARG \ 118 $SERENITY_PACKET_LOGGING_ARG \ 119 -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 \ 120 -device e1000,netdev=breh \ 121 -kernel kernel \ 122 -append "${SERENITY_KERNEL_CMDLINE}" 123fi