Skip to content

Instantly share code, notes, and snippets.

@p4p1
Last active October 29, 2021 00:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save p4p1/f7c8e441c1fc9d06fe5d6434f8b6c307 to your computer and use it in GitHub Desktop.
Save p4p1/f7c8e441c1fc9d06fe5d6434f8b6c307 to your computer and use it in GitHub Desktop.
💻💻💻💻
#!/bin/bash
# dmenu_qemu
# Created on: Sun 28 Jun 2020 01:24:37 AM CEST
#
# ____ __ ____ __
# ( _ \ /. |( _ \/ )
# )___/(_ _))___/ )(
# (__) (_)(__) (__)
#
# Description:
# Script to run virtual machines
DEFAULT_HD_SIZE=20G
CORES=5
#RAM=2048
#RAM=4096
RAM=6096
TEMPORARY_DISK=/tmp/tmp.qcow2
QEMU_SYS_PATH=$HOME/.qemu/
QEMU_DISK_PATH=/run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/
OPTIONS=("Create-New-Machine" "Edit" "android" $(find $QEMU_SYS_PATH -type f) $(find $QEMU_DISK_PATH -type f))
while [ 1 ]; do
FILE_PATH=$(echo ${OPTIONS[*]} | tr ' ' '\n' | dmenu "$@")
if [ ! -f "$TEMPORARY_DISK" ]; then
qemu-img create -f qcow2 $TEMPORARY_DISK 10G
fi
if [ "${FILE_PATH}" = "" ]; then
break
fi
if [ "${FILE_PATH}" = "Edit" ]; then
while [ 1 ]; do
VAL=("cores" "ram" "exit")
notify-send "current settings" "Cores = $CORES\nRam = $RAM\nHD Size = $DEFAULT_HD_SIZE"
PICK=$(echo ${VAL[*]} | tr ' ' '\n' | dmenu "$@")
echo $PIC
if [ "${PICK}" = "exit" ]; then
break
elif [ "${PICK}" = "" ]; then
break
elif [ "${PICK}" = "cores" ]; then
CORES=$(echo '' | dmenu "$@")
elif [ "${PICK}" = "ram" ]; then
RAM=$(echo '' | dmenu "$@")
else
break
fi
done
fi
if [ "${FILE_PATH}" = "Create-New-Machine" ]; then
cd $QEMU_SYS_PATH
while [ 1 ];do
notify-send "PROVIDE A FILE NAME ENDING IN .qcow2"
FILE_NAME=$(echo '' | dmenu "$@")
if [ "${FILE_NAME##*.}" = "qcow2" ]; then
break
fi
done
qemu-img create -f qcow2 $FILE_NAME $DEFAULT_HD_SIZE
while [ 1 ];do
notify-send "PICK THE ISO FOR INSTALLATION"
OPTIONS=($(find $QEMU_SYS_PATH -type f -name "*.iso") $(find $QEMU_DISK_PATH -type f -name "*.iso"))
FILE_IMG=$(echo ${OPTIONS[*]} | tr ' ' '\n' | dmenu "$@")
if [ "${FILE_IMG##*.}" = "iso" ]; then
break
fi
done
qemu-system-x86_64 -m $RAM -enable-kvm -smp $CORES -net nic -rtc base=localtime,clock=host -net user -drive "file=${FILE_NAME},format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on -cdrom $FILE_IMG -drive "file=/run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/virtio-win-0.1.208.iso,media=cdrom"
break
elif [ "${FILE_PATH}" = "android" ]; then
/home/p4p1/Android/Sdk/emulator/emulator @Pixel_4_API_S
break
elif [ "${FILE_PATH##*.}" = "iso" ]; then
qemu-system-x86_64 -m $RAM -enable-kvm -smp $CORES -net nic -rtc base=localtime,clock=host -net user -drive "file=${TEMPORARY_DISK},format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on -cdrom $FILE_PATH
break
elif [ "${FILE_PATH##*.}" = "qcow2" ]; then
qemu-system-x86_64 -m $RAM -enable-kvm -smp $CORES -net nic -rtc base=localtime,clock=host -net user -drive "file=${FILE_PATH},format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on
#qemu-system-x86_64 -m 4096 -enable-kvm -smp 4 -net nic,model=virtio -rtc base=localtime,clock=host -net user -drive "file=/home/p4p1/.qemu/Windows.qcow2,format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on -cdrom /run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/Win10_2004_EnglishInternational_x64.iso -drive "file=/run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/virtio-win-0.1.208.iso,media=cdrom"
#qemu-system-x86_64 -m 4096 -enable-kvm -smp 4 -net nic -rtc base=localtime,clock=host -net user -drive "file=/home/p4p1/.qemu/Windows.qcow2,format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on -cdrom /run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/Win10_2004_EnglishInternational_x64.iso -drive "file=/run/media/p4p1/ea0c4d94-d549-412d-ba12-4c54342ad822/VMs/virtio-win-0.1.208.iso,media=cdrom"
#qemu-system-x86_64 -m 6096 -enable-kvm -smp 4 -net nic -rtc base=localtime,clock=host -net user -drive "file=/home/p4p1/.qemu/Windows.qcow2,format=qcow2,if=virtio,aio=native,cache.direct=on" -cpu host,kvm=on
break
fi
done
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment