123 lines
3.8 KiB
Bash
Executable File
123 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
name=$(basename -s .sh $0)
|
|
|
|
numberofcores=$(grep -c ^processor /proc/cpuinfo)
|
|
|
|
virt_cpu=$(( $numberofcores/2 ))
|
|
smp=$(( $virt_cpu / 2 ))
|
|
sockets=$(( $virt_cpu / 2 ))
|
|
|
|
mem=$(expr $(cat /proc/meminfo | grep "MemFree" | awk '{print $2}') / 1024 - $(( 2 * 1024 )) )
|
|
|
|
if [[ $mem -lt 4096 ]]; then
|
|
mem=4096
|
|
fi
|
|
|
|
if [[ $mem -gt 8192 ]]; then
|
|
mem=8192
|
|
fi
|
|
|
|
fd="$name-OVMF_VARS.fd"
|
|
|
|
if [ ! -f "./fd/$fd" ]; then
|
|
cp -av -- '/usr/share/edk2-ovmf/x64/OVMF_VARS.fd' "./fd/$fd"
|
|
fi
|
|
|
|
iso=$(find ./iso -name "*.iso" | grep -i "$name" | tail -n 1)
|
|
|
|
qcow2="$name.qcow2"
|
|
|
|
if [ ! -f "./qcow2/$qcow2" ]; then
|
|
qemu-img create -f qcow2 "./qcow2/$qcow2" 200G
|
|
fi
|
|
|
|
echo "CPU: $virt_cpu; MEM: $mem; ISO: $iso; DISK: $qcow2; NVRAM: $fd"
|
|
|
|
random_num=$((1 + $RANDOM % 100))
|
|
|
|
ssh_port=$(shuf -i 60000-61000 -n 1)
|
|
|
|
|
|
sys="spice"
|
|
|
|
if [ $sys == "gtk" ]; then
|
|
display="gtk,full-screen=off,grab-on-hover=on,show-cursor=on,window-close=on"
|
|
audio="pipewire"
|
|
elif [ $sys == "sdl" ]; then
|
|
display="sdl,gl=core,show-cursor=on,window-close=on"
|
|
audio="pipewire"
|
|
elif [ $sys == "spice" ]; then
|
|
display="spice-app,show-cursor=on"
|
|
audio="spice"
|
|
fi
|
|
|
|
vdaagent="spice"
|
|
|
|
if [ $vdaagent == "qemu" ]; then
|
|
vda="-device virtio-serial-pci \
|
|
-device virtio-serial \
|
|
-chardev qemu-vdagent,id=vdagent,name=vdagent,clipboard=on \
|
|
-device virtserialport,chardev=vdagent,id=vdagent,name=com.redhat.spice.0
|
|
-chardev qemu-vdagent,name=usbredir,id=usbredirchardev1 \
|
|
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
|
|
-chardev qemu-vdagent,name=usbredir,id=usbredirchardev2 \
|
|
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
|
|
-chardev qemu-vdagent,name=usbredir,id=usbredirchardev3 \
|
|
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3"
|
|
elif [ $vdaagent == "spice" ]; then
|
|
vda="-device virtio-serial-pci \
|
|
-device virtio-serial \
|
|
-chardev spicevmc,id=vdagent,name=vdagent \
|
|
-device virtserialport,chardev=vdagent,id=vdagent,name=com.redhat.spice.0 \
|
|
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
|
|
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
|
|
-chardev spicevmc,name=usbredir,id=usbredirchardev2 \
|
|
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
|
|
-chardev spicevmc,name=usbredir,id=usbredirchardev3 \
|
|
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3"
|
|
fi
|
|
|
|
title="${name}_MelawyLinux_${random_num}_ssh_port_${ssh_port}"
|
|
|
|
|
|
qemu-system-x86_64 \
|
|
-name ${title},process=${title},guest=${title},debug-threads=on \
|
|
-drive "if=pflash,format=raw,unit=0,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd,read-only=on" \
|
|
-drive "if=pflash,format=raw,unit=1,file=./fd/$fd" \
|
|
-global "driver=cfi.pflash01,property=secure,value=off" \
|
|
-global ICH9-LPC.disable_s3=1 \
|
|
-cdrom ${iso} \
|
|
-drive file="./qcow2/$qcow2,index=0,media=disk,format=qcow2" \
|
|
-boot order=d,menu=on,reboot-timeout=5000 \
|
|
-smbios type=0,uefi=on \
|
|
-smp $smp,sockets=$sockets,cores=1,threads=1 \
|
|
-rtc base=utc,driftfix=slew \
|
|
-cpu host,migratable=on \
|
|
-m "size=$mem,slots=0,maxmem=$(($mem*1024*1024))" \
|
|
-usb \
|
|
-usbdevice tablet \
|
|
-k en-us \
|
|
$vda \
|
|
-vga virtio \
|
|
-display $display \
|
|
-audiodev $audio,id=snd0 \
|
|
-device ich9-intel-hda \
|
|
-device hda-output,audiodev=snd0 \
|
|
-device virtio-net-pci,romfile=,netdev=net0 \
|
|
-netdev user,id=net0,hostfwd=tcp::${ssh_port}-:22 \
|
|
-machine type=pc-q35-8.1,smm=on,accel=kvm,usb=on,vmport=auto,dump-guest-core=off,hpet=off,acpi=on,pcspk-audiodev=snd0 \
|
|
-enable-kvm \
|
|
-msg timestamp=on
|
|
|
|
# -netdev user,id=net0 \
|
|
# -drive file=shared.img,index=1,media=disk,format=raw \
|
|
# -netdev user,id=net0,hostfwd=tcp::60022-:22 \
|
|
# -serial stdio
|
|
# -m 8192 \
|
|
# -display sdl,gl=on,show-cursor=on,window-close=on \
|
|
# -full-screen \
|
|
# -audiodev pa,id=snd0 \
|
|
# -net nic,vlan=0 -net user,vlan=0
|
|
# -net nic,vlan=0 -net user,vlan=0 -netdev user,id=user.0 -device e1000,netdev=user.0
|