diff --git a/readme.md b/readme.md index 60b84aa..f5999a3 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -

QEMU
+

Qemu ARM
diff --git a/src/boot.sh b/src/boot.sh index d866bd3..1e1bee7 100644 --- a/src/boot.sh +++ b/src/boot.sh @@ -40,12 +40,14 @@ DEST="$STORAGE/${BOOT_MODE,,}" if [ ! -f "$DEST.rom" ]; then [ ! -f "$AAVMF/$ROM" ] && error "UEFI boot file ($AAVMF/$ROM) not found!" && exit 44 - cp "$AAVMF/$ROM" "$DEST.rom" + dd if=/dev/zero "of=$DEST.rom" bs=1M count=64 status=none + dd "if=$AAVMF/$ROM" "of=$DEST.rom" conv=notrunc status=none fi if [ ! -f "$DEST.vars" ]; then [ ! -f "$AAVMF/$VARS" ] && error "UEFI vars file ($AAVMF/$VARS) not found!" && exit 45 - cp "$AAVMF/$VARS" "$DEST.vars" + dd if=/dev/zero "of=$DEST.vars" bs=1M count=64 status=none + dd "if=$AAVMF/$VARS" "of=$DEST.vars" conv=notrunc status=none fi BOOT_OPTS="$BOOT_OPTS -drive file=$DEST.rom,if=pflash,unit=0,format=raw,readonly=on" diff --git a/src/config.sh b/src/config.sh index 64da6de..38cd19c 100644 --- a/src/config.sh +++ b/src/config.sh @@ -11,7 +11,7 @@ MON_OPTS="-monitor $MONITOR" USB_OPTS="-device $USB -device usb-kbd -device usb-tablet" RAM_OPTS=$(echo "-m $RAM_SIZE" | sed 's/MB/M/g;s/GB/G/g;s/TB/T/g') CPU_OPTS="-cpu $CPU_FLAGS -smp $CPU_CORES,sockets=1,dies=1,cores=$CPU_CORES,threads=1" -MAC_OPTS="-machine type=${MACHINE},dump-guest-core=off${KVM_OPTS}" +MAC_OPTS="-machine type=${MACHINE},secure=off,gic-version=3,dump-guest-core=off${KVM_OPTS}" DEV_OPTS="-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x4" DEV_OPTS="$DEV_OPTS -object rng-random,id=objrng0,filename=/dev/urandom" DEV_OPTS="$DEV_OPTS -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pcie.0,addr=0x1c" diff --git a/src/proc.sh b/src/proc.sh index 4506129..756b479 100644 --- a/src/proc.sh +++ b/src/proc.sh @@ -7,7 +7,7 @@ set -Eeuo pipefail : "${CPU_FLAGS:=""}" : "${CPU_MODEL:="host"}" -[[ "$ARCH" != "arm64" ]] && KVM="N" +[[ "$ARCH" != "arm"* ]] && KVM="N" if [[ "$KVM" != [Nn]* ]]; then @@ -34,10 +34,11 @@ if [[ "$KVM" != [Nn]* ]]; then CPU_FEATURES="kvm=on" KVM_OPTS=",accel=kvm -enable-kvm" - + if [[ "${BOOT_MODE,,}" == "windows" ]]; then - CPU_FEATURES="kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough" + [ -n "$CPU_FEATURES" ] && CPU_FEATURES="$CPU_FEATURES," + CPU_FEATURES="$CPU_FEATURES+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough" fi @@ -45,23 +46,34 @@ else KVM_OPTS="" CPU_FEATURES="" - MACHINE="$MACHINE,virtualization=on" + + if [[ "${BOOT_MODE,,}" == "windows" ]]; then + MACHINE="$MACHINE,virtualization=on" + fi if [[ "${CPU_MODEL,,}" == "host"* ]]; then if [[ "$ARCH" == "arm"* ]]; then CPU_MODEL="max" else - CPU_MODEL="cortex-a57" + CPU_MODEL="cortex-a53" fi fi fi if [ -z "$CPU_FLAGS" ]; then - CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES" + if [ -z "$CPU_FEATURES" ]; then + CPU_FLAGS="$CPU_MODEL" + else + CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES" + fi else - CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES,$CPU_FLAGS" + if [ -z "$CPU_FEATURES" ]; then + CPU_FLAGS="$CPU_MODEL,$CPU_FLAGS" + else + CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES,$CPU_FLAGS" + fi fi return 0