Guest User

Untitled

a guest
Jun 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #!/bin/bash
  2. vmname="windows10vm"
  3.  
  4.  
  5. #SET EXTRA DEVICE NAMES
  6. keyboardName="Vengeance K70R"
  7. mouseName="Mouse G300"
  8. storage="/dev/sdc"
  9.  
  10. getbusaddr() {
  11. local OPTIND
  12. local bus=`lsusb | grep "$*" | awk '{ print $2 }' | sed 's/0//g'`
  13. local addr=`lsusb | grep "$*" | awk '{ print $4 }' | sed -r 's/[0|\:| ]//g'`
  14.  
  15. echo -n "-device usb-host,hostbus=$bus,hostaddr=$addr"
  16. }
  17.  
  18.  
  19. echo USB DEVICES:
  20. echo $keyboardName, $mouseName
  21. usbdev="`getbusaddr $keyboardName` `getbusaddr $mouseName`"
  22. echo -e "\"$usbdev\""
  23. echo ""
  24.  
  25.  
  26. #CHECK IF TAP DEVICE EXISTS, CREATE IT IF NOT
  27. checkiface=`ip link show tap0 | wc -l`
  28.  
  29. if [ $checkiface -lt 1 ]; then
  30. echo "creating TAP device and bridge"
  31. ip link add br0 type bridge
  32. ip addr flush dev enp3s0f1
  33. ip link set enp3s0f1 master br0
  34. ip tuntap add dev tap0 mode tap user nat
  35. ip link set tap0 master br0
  36. ip link set dev br0 up
  37. ip link set dev tap0 up
  38. else
  39. echo "TAP device already exists, skipped creation"
  40. fi
  41. echo ""
  42.  
  43. #VFIO BIND CONFIG FILE
  44. echo "Binding VFIO devices"
  45. configfile=/etc/vfio-pci.cfg
  46.  
  47.  
  48. # VFIO BIND
  49. vfiobind() {
  50. if [ -z $1 ]
  51. then
  52. exit 1
  53. else
  54. dev="$1"
  55. vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  56. device=$(cat /sys/bus/pci/devices/$dev/device)
  57. if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  58. echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  59. fi
  60. echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  61. fi
  62. }
  63.  
  64.  
  65. #CHECK IF VM IS RUNNING THEN BIND VFIO DEVICES
  66. if ps -A | grep -q $vmname; then
  67. echo "$vmname is already running." &
  68. exit 1
  69. else
  70. cat $configfile | while read line;do
  71. echo $line | grep ^# > /dev/null 2>&1 && continue
  72. echo $configfile
  73. echo $line
  74. vfiobind $line
  75. done
  76.  
  77. cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd
  78. echo ""
  79.  
  80. #UNCOMMENT FOR DUMMY RUN
  81. #exit 1
  82.  
  83.  
  84. #START VM
  85. echo "Starting Michaelsoft Binbows..."
  86.  
  87. qemu-system-x86_64 \
  88. -name $vmname,process=$vmname -pidfile /run/qemu_ex.pid \
  89. -machine type=q35,accel=kvm -enable-kvm \
  90. -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time \
  91. -smp 3,sockets=1,cores=3 -m 6G -mem-path /dev/hugepages -mem-prealloc -balloon none -rtc clock=host,base=localtime \
  92. -nographic -vga none -serial null -parallel none -usb \
  93. -device vfio-pci,host=06:00.0,multifunction=on \
  94. -device vfio-pci,host=06:00.1 -device vfio-pci,host=05:06.0 -device vfio-pci,host=02:00.0 \
  95. -drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \
  96. -drive if=pflash,format=raw,file=/tmp/my_vars.fd \
  97. -boot order=c \
  98. -device virtio-scsi-pci,id=scsi \
  99. -drive id=disk0,if=virtio,format=raw,file=/dev/sda \
  100. -drive id=disk1,if=virtio,format=raw,file=$storage \
  101. -device e1000,netdev=network0,mac=52:55:00:d1:55:01 \
  102. -netdev tap,id=network0,ifname=tap0,script=no,downscript=no \
  103. $usbdev
  104. exit 0
  105. fi
Add Comment
Please, Sign In to add comment