Advertisement
Guest User

windows-install

a guest
Aug 22nd, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Check if the script is executed as root
  4. if [ "$EUID" -ne 0 ]
  5. then echo "Please run as root"
  6. exit 1
  7. fi
  8. # END Check if you are sudo
  9.  
  10. source /home/chodetode/Scripts/config
  11.  
  12. # Memory lock limit
  13. if [ $(ulimit -a | grep "max locked memory" | awk '{print $6}') != 12884900 ]; then
  14. ulimit -l 12884900
  15. fi
  16.  
  17. ## Kill X and related
  18. systemctl stop gdm > /dev/null 2>&1
  19. systemctl stop systemd-logind > /dev/null 2>&1
  20. systemctl stop pulseaudio > /dev/null 2>&1
  21. killall gnome-shell
  22. sleep 2
  23.  
  24. # Kill the console to free the GPU
  25. echo 0 > /sys/class/vtconsole/vtcon0/bind
  26. sleep 1
  27. echo 0 > /sys/class/vtconsole/vtcon1/bind
  28. sleep 1
  29. echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
  30. sleep 1
  31.  
  32. # Unload the Kernel Modules that use the GPU
  33. modprobe -r nvidia_drm
  34. sleep 1
  35. modprobe -r nvidia_uvm
  36. sleep 1
  37. modprobe -r nvidia_modeset
  38. sleep 1
  39. modprobe -r nvidia
  40. sleep 1
  41. modprobe -r snd_hda_intel
  42. sleep 2
  43.  
  44. # Load the kernel module
  45. modprobe vfio
  46. sleep 1
  47. modprobe vfio_iommu_type1
  48. sleep 1
  49. modprobe vfio-pci
  50. sleep 1
  51.  
  52. # Detach the GPU from drivers and attach to vfio. Also the usb.
  53. echo $videoid > /sys/bus/pci/drivers/vfio-pci/new_id
  54. sleep 1
  55. echo $videobusid > /sys/bus/pci/devices/$videobusid/driver/unbind
  56. sleep 1
  57. echo $videobusid > /sys/bus/pci/drivers/vfio-pci/bind
  58. sleep 1
  59. echo $videoid > /sys/bus/pci/drivers/vfio-pci/remove_id
  60. sleep 1
  61.  
  62. echo $audioid > /sys/bus/pci/drivers/vfio-pci/new_id
  63. sleep 1
  64. echo $audiobusid > /sys/bus/pci/devices/$audiobusid/driver/unbind
  65. sleep 1
  66. echo $audiobusid > /sys/bus/pci/drivers/vfio-pci/bind
  67. sleep 1
  68. echo $audioid > /sys/bus/pci/drivers/vfio-pci/remove_id
  69. sleep 1
  70.  
  71. echo $usbid > /sys/bus/pci/drivers/vfio-pci/new_id
  72. sleep 1
  73. echo $usbbusid > /sys/bus/pci/devices/$usbbusid/driver/unbind
  74. sleep 1
  75. echo $usbbusid > /sys/bus/pci/drivers/vfio-pci/bind
  76. sleep 1
  77. echo $usbid > /sys/bus/pci/drivers/vfio-pci/remove_id
  78. #ls -la /sys/bus/pci/devices/$usbbusid/
  79. sleep 1
  80.  
  81. # QEMU (VM) command
  82. qemu-system-x86_64 -runas $USER -enable-kvm \
  83. -nographic -vga none -parallel none -serial none \
  84. -enable-kvm \
  85. -m $RAM \
  86. -cpu host,kvm=off,hv_relaxed,hv_spinlocks=0x1fff,hv_time,hv_vapic,hv_vendor_id=0xDEADBEEFFF \
  87. -rtc clock=host,base=localtime \
  88. -smp $CORES,sockets=1,cores=$CORES,threads=0 \
  89. -device vfio-pci,host=$IOMMU_GPU,multifunction=on,x-vga=on,romfile=$VBIOS \
  90. -device vfio-pci,host=$IOMMU_GPU_AUDIO \
  91. -device vfio-pci,host=$IOMMU_USB \
  92. -device virtio-net-pci,netdev=n1 \
  93. -netdev user,id=n1 \
  94. -drive if=pflash,format=raw,readonly,file=$OVMF \
  95. -drive media=cdrom,file=$ISO,id=virtiocd1,if=none \
  96. -device ide-cd,bus=ide.1,drive=virtiocd1 \
  97. -drive media=cdrom,file=$VIRTIO,id=virtiocd2,if=none \
  98. -device ide-cd,bus=ide.1,drive=virtiocd2 \
  99. -device virtio-scsi-pci,id=scsi0 \
  100. -device scsi-hd,bus=scsi0.0,drive=rootfs \
  101. -drive id=rootfs,file=$HDD,media=disk,format=raw,if=none > /dev/null 2>&1 &
  102. # END QEMU (VM) command
  103.  
  104. # Wait for QEMU to finish before continue
  105. wait
  106. sleep 5
  107.  
  108. # Unload the vfio module. I am lazy, this leaves the GPU without drivers
  109. modprobe -r vfio-pci
  110. sleep 2
  111. modprobe -r vfio_iommu_type1
  112. sleep 2
  113. modprobe -r vfio
  114. sleep 2
  115.  
  116. # Reload the kernel modules. This loads the drivers for the GPU
  117. modprobe snd_hda_intel
  118. sleep 5
  119. modprobe nvidia_drm
  120. sleep 2
  121. modprobe nvidia_modeset
  122. sleep 2
  123. modprobe nvidia
  124. sleep 5
  125.  
  126. # Bind the usb
  127. #echo $usbid > /sys/bus/pci/drivers/xhci_hcd/new_id
  128. echo $usbbusid > /sys/bus/pci/devices/$usbbusid/driver/unbind
  129. echo $usbbusid > /sys/bus/pci/drivers/xhci_hcd/bind
  130. sleep 10
  131. #echo $usbid > /sys/bus/pci/drivers/xhci_hcd/remove_id
  132. #ls -la /sys/bus/pci/devices/$usbbusid/
  133.  
  134. # Re-Bind EFI-Framebuffer and Re-bind to virtual consoles
  135. # [Source] [https://github.com/joeknock90/Single-GPU-Passthrough/blob/master/README.md#vm-stop-script]
  136. echo 1 > /sys/class/vtconsole/vtcon0/bind
  137. sleep 1
  138. echo 1 > tee /sys/class/vtconsole/vtcon1/bind
  139. sleep 5
  140. #echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind
  141. #sleep 1
  142.  
  143. # Reload the Display Manager to access X
  144. systemctl start gdm
  145. sleep 5
  146.  
  147. # Restore the Frame Buffer
  148. echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind
  149. sleep 1
  150.  
  151. # Restore ulimit
  152. ulimit -l $ULIMIT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement