Roboto3x

PopOS 20 + VFIO / Simple QEMU scripts

Apr 28th, 2020
4,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 10.46 KB | None | 0 0
  1. Using PopOS 20.04(Beta - Graphics boot is a bit slow with multi-gpus, there are a few systemd commands causing this  so be patient
  2. Vanilla Ubuntu 20.04 is faster with Graphical boot times. For best initial results edit grub to boot to console
  3. sudo systemctl set-default multi-user.target just until things are properly set up. Then reenable
  4. with sudo systemctl set-default graphical.target. Sometimes there is trouble with GDM3 login, quick fix
  5. LIGHTDM and revert back to GDM, or simply reinstall gnome-session. As a fallback desktop use xfce4
  6. Note you will have a clown hand cursor, but its a desktop.
  7.  
  8. Notes from below link (Works great for PopOS)
  9. https://github.com/noizwaves/vfio-popos-nvidia-ga-z370-gaming-5
  10.  
  11.  
  12. ** I prefer native QEMU args over libvirt hosts for sheer simplicity **
  13.  
  14.  
  15. sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf
  16.  
  17. sudo kernelstub -a 'intel_iommu=on' to do ?
  18. $ sudo kernelstub -a 'iommu=pt' to do ?
  19. $ sudo kernelstub -a 'iommu=1' to do ?
  20. $ sudo kernelstub -a "pci=noaer" to fix an issue that prevented the VM from starting when the USB Controller was attached
  21.  
  22. to view current kernel boot options, run $ sudo kernelstub -p
  23. to remove a kernel boot option, run $ sudo kernelstub -d 'key=value'
  24.  
  25. Look up GPU IDs by running $ lspci -nn | grep -i nvidia. The output will look something like:
  26.  
  27. ```
  28. 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1080] [10de:1b80] (rev a1)
  29. 01:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1)
  30. The IDs are 10de:1b80 and 10de:10f0
  31.  
  32.  sudo echo 'vfio-pci' > /etc/modules-load.d/vfio-pci.conf
  33.  
  34. Tell VFIO which devices to run for
  35.  
  36. $ sudo echo 'options vfio-pci ids=10de:1b80,10de:10f0,1b21:2142' > /etc/modprobe.d/vfio.conf
  37.  
  38. Force VFIO drivers to load before the Nvidia drivers by
  39.  
  40. $sudo echo 'softdep nvidia pre: vfio vfio_pci' >> /etc/modprobe.d/vfio.conf
  41. $sudo echo 'softdep nvidia_418 pre: vfio vfio_pci' >> /etc/modprobe.d/vfio.conf
  42. $sudo echo 'softdep nvidia_drm pre: vfio vfio_pci' >> /etc/modprobe.d/vfio.conf
  43.  
  44. Force VFIO drivers to load before the USB drivers by
  45.  
  46. $sudo echo 'softdep xhci_hcd pre: vfio vfio_pci' >> /etc/modprobe.d/vfio.conf
  47. $ sudo update-initramfs -u
  48.  
  49. Step X. Reboot
  50. $ sudo reboot -h now
  51.  
  52. $ lspci -nnk -d 10de:1b80
  53. 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1080] [10de:1b80] (rev a1)
  54.     Subsystem: Micro-Star International Co., Ltd. [MSI] GP104 [GeForce GTX 1080] [1462:3363]
  55.     Kernel driver in use: vfio-pci
  56.     Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
  57.  
  58. On the USB Controller, it doesn't seem to show the vfio-pci driver, but this output results in a successful passthrough:
  59.  
  60. $ lspci -nnk -d 1b21:2142
  61.  
  62. Baked in Kernel drivers can result in VFIO not binding
  63.  
  64. 07:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller [1b21:2142]
  65.     Subsystem: Gigabyte Technology Co., Ltd ASM2142 USB 3.1 Host Controller [1458:5007]
  66.     Kernel driver in use: xhci_hcd
  67.  
  68. Remedy with following. Must be run under root.
  69.  
  70. echo "1b21 2142" > /sys/bus/pci/drivers/vfio-pci/new_id
  71. echo "0000:07:00.0" > /sys/bus/pci/devices/0000:07:00.0/driver/unbind
  72. echo "0000:07:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
  73. echo 1 > /sys/bus/pci/rescan
  74.  
  75. -----------------------------------------------------------------------------------------------------------------------
  76. #!/usr/bin/bash
  77.  
  78. #### For on demand VFIO binding #########################################
  79. #########################################################################
  80. # NVIDIA 2080 rtx
  81. #########################################################################
  82.  
  83. echo "10de 1e87" > /sys/bus/pci/drivers/vfio-pci/new_id
  84. echo "0000:41:00.0" > /sys/bus/pci/devices/0000:41:00.0/driver/unbind
  85. echo "0000:41:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
  86. echo 1 > /sys/bus/pci/rescan
  87. #########################################################################
  88. echo "10de 10f8" > /sys/bus/pci/drivers/vfio-pci/new_id
  89. echo "0000:41:00.1" > /sys/bus/pci/devices/0000:41:00.1/driver/unbind
  90. echo "0000:41:00.1" > /sys/bus/pci/drivers/vfio-pci/bind
  91. echo 1 > /sys/bus/pci/rescan
  92. #########################################################################
  93. echo "10de 1ad8" > /sys/bus/pci/drivers/vfio-pci/new_id
  94. echo "0000:41:00.2" > /sys/bus/pci/devices/0000:41:00.2/driver/unbind
  95. echo "0000:41:00.2" > /sys/bus/pci/drivers/vfio-pci/bind
  96. echo 1 > /sys/bus/pci/rescan
  97. #########################################################################
  98. echo "10de 1ad9" > /sys/bus/pci/drivers/vfio-pci/new_id
  99. echo "0000:41:00.3" > /sys/bus/pci/devices/0000:41:00.3/driver/unbind
  100. echo "0000:41:00.3" > /sys/bus/pci/drivers/vfio-pci/bind
  101. echo 1 > /sys/bus/pci/rescan
  102.  
  103. #########################################################################
  104. # NVIDIA 1050ti
  105. #########################################################################
  106.  
  107. ### Nvidia 1050ti ####
  108. echo "10de 1c82" > /sys/bus/pci/drivers/vfio-pci/new_id
  109. echo "0000:09:00.0" > /sys/bus/pci/devices/0000:09:00.0/driver/unbind
  110. echo "0000:09:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
  111. echo 1 > /sys/bus/pci/rescan
  112. #########################################################################
  113.  
  114. echo "10de 0fb9" > /sys/bus/pci/drivers/vfio-pci/new_id
  115. echo "0000:09:00.1" > /sys/bus/pci/devices/0000:09:00.1/driver/unbind
  116. echo "0000:09:00.1" > /sys/bus/pci/drivers/vfio-pci/bind
  117. echo 1 > /sys/bus/pci/rescan
  118.  
  119. lspci -nnk | grep vfio
  120.  
  121. -----------------------------------------------------------------------------------------------------------------------
  122.  
  123. https://download.qemu.org/qemu-5.0.0-rc1.tar.xz
  124. ./configure --enable-libusb  ** other flags are available **
  125. sudo make && sudo make install
  126.  
  127. -----------------------------------------------------------------------------------------------------------------------
  128. # MacOS Catalina KVM
  129. # -- MAKE SURE LIBVIRTD IS ENABLED AND RUNNING  -- also make sure OVMF_CODE are from kraxel
  130. #!/bin/bash
  131. OSK="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
  132. CLOVER="/home/bot/VM/Clover_Mojave_Kholia.qcow2"
  133. OS="/home/bot/VM/macboot.img"
  134. VMDIR="/home/bot/VM"
  135. INSTALL="/home/bot/VM/BaseSystem.iso"
  136.  
  137. SMP=32
  138. CORES=16
  139. SOCKETS=2
  140. TRHEADS=1
  141. CPU=Penryn
  142. MEM=32G
  143. DEVICE="ide-hd,bus=ide.2,drive=Clover"
  144. DRIVE="id=MacHD,if=none,file=$OS,format=raw"
  145.  
  146. sudo qemu-system-x86_64 -nographic \
  147.    -enable-kvm \
  148.    -m $MEM \
  149.    -machine q35,accel=kvm,kernel_irqchip=on \
  150.    -smp $SMP,cores=$CORES,sockets=$SOCKETS \
  151.    -cpu $CPU,vendor=GenuineIntel,kvm=on,+sse3,+sse4.2,+aes,+xsave,+avx,+xsaveopt,+xsavec,+xgetbv1,+avx2,+bmi2,+smep,+bmi1,+fma,+movbe,+invtsc \
  152.    -device isa-applesmc,osk="$OSK" \
  153.    -smbios type=2 \
  154.    -drive if=pflash,format=raw,readonly,file="$VMDIR/OVMF_CODE.z.fd" \
  155.    -drive if=pflash,format=raw,file="$VMDIR/OVMF_VARS.z.fd" \
  156.    -device vfio-pci,host=42:00.0,bus=pcie.0,multifunction=on \
  157.    -device vfio-pci,host=42:00.1,bus=pcie.0 \
  158.    -vga none \
  159.    -usb -device usb-kbd -device usb-mouse \
  160.    -netdev user,id=net0 \
  161.    -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27 \
  162.    -device ide-hd,bus=ide.0,drive=MacHD \
  163.    -drive id=MacHD,if=none,file=$OS,format=raw \
  164.    -device ide-cd,bus=ide.2,drive=MacDVD \
  165.    -drive id=MacDVD,if=none,snapshot=on,media=cdrom,file=$INSTALL \
  166.    -hdb /dev/sda \
  167.    -device usb-host,vendorid=0x046d,productid=0xc332 \
  168.    -device usb-host,vendorid=0x046d,productid=0xc333 \
  169.    -device usb-host,vendorid=0x0b05,productid=0x17cb \
  170.  
  171.  
  172. --------------------------------------------------------------------------------------------------------------------------------------
  173. # Windows10 Threadripper 1950x - No Issues and smooth as butter, cpu canm be host or EPYC. to use host, remove kernel_irqchip=on
  174. #!/bin/bash
  175. qemu=qemu
  176. VMDIR=/.vm_images/OVMF
  177. F0=$VMDIR/OVMF_CODE.msx.fd
  178. F1=$VMDIR/OVMF_VARS.msx.fd
  179.  
  180. BIOS=$VM/OVMF_CODE.lnx.fd
  181. BIOS_VAR=$VM/OVMF_VARS.lnx.fd
  182.  
  183.  
  184. PATH=/.vmcore/disk-images
  185. DISK1=$PATH/linux_test.img
  186. INSTALLER=/home/dexter/Downloads/Win10_1909_English_x64.iso
  187.  
  188. qemu=/usr/bin/qemu-system-x86_64-spice
  189.  
  190. cpu=EPYC
  191. options=+sse3,+sse4.2,+aes,+xsave,+avx,+xsaveopt,+xsavec,+xgetbv1,+avx2,+bmi2,+smep,+bmi1,+fma,+movbe,+invtsc
  192. mem=24G
  193. smp=16
  194. sockets=1
  195. cores=16
  196.  
  197. name="Windows-10(16-core)"
  198.  
  199. VEND0="0x046d"
  200. VEND1="0x0b05"
  201. VEND2="0x13b1"
  202. MOUSE="0xc332"
  203. KEYBD="0xc333"
  204. BTVEN="0x248a"
  205. BTDEV="0x8367"
  206. USBWF="0x0043"
  207.  
  208.     $qemu \
  209.    -enable-kvm \
  210.    -name $name \
  211.    -m $mem \
  212.    -machine q35,accel=kvm,kernel_irqchip=on \
  213.    -smp $smp,cores=$cores,sockets=$sockets \
  214.    -cpu $cpu,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff,kvm=off,hv_vendor_id=null \
  215.    -drive if=pflash,format=raw,readonly,file=$F0 \
  216.    -drive if=pflash,format=raw,file=$F1 \
  217.    -vga none \
  218.    -display none \
  219.    -device vfio-pci,host=41:00.0,bus=pcie.0,multifunction=on \
  220.    -device vfio-pci,host=41:00.1,bus=pcie.0 \
  221.    -device vfio-pci,host=41:00.2,bus=pcie.0 \
  222.    -device vfio-pci,host=41:00.3,bus=pcie.0 \
  223.    -device virtio-serial-pci \
  224.    -netdev user,id=net2 \
  225.    -device e1000-82545em,netdev=net2,id=net2,mac=52:54:00:26:74:5d \
  226.    -device ich9-usb-uhci3 \
  227.    -device usb-host,vendorid=$VEND0,productid=$KEYBD \
  228.    -device usb-host,vendorid=$VEND0,productid=$MOUSE \
  229.    -device ich9-ahci,id=sata \
  230.    -cdrom $INSTALLER \
  231.    -hda /dev/sdc \
  232.    -hdb /dev/sdd \
  233.    -boot menu=on \
  234.  
  235. -----------------------------------------------------------------------------------------------------------------------
  236. # Basic Win10 Installer
  237. #!/bin/bash
  238. INSTALLDIR="/home/me/Downloads"
  239. VMDIR="/mnt/data/firmware"
  240. OSDIR="/mnt/data/Windows"
  241.  
  242. sudo qemu-system-x86_64 \
  243.    -enable-kvm \
  244.    -m 8192 \
  245.    -machine q35,accel=kvm,kernel_irqchip=on \
  246.    -smp 8,cores=8 \
  247.    -cpu host,hv_time,kvm=off,hv_vendor_id=null \
  248.    -vga virtio \
  249.    -drive if=pflash,format=raw,readonly,file=$VMDIR/OVMF_CODE_.fd \
  250.    -drive if=pflash,format=raw,file=$VMDIR/OVMF_VARS_win02.fd \
  251.    -device vfio-pci,host=09:00.0,bus=pcie.0,multifunction=on \
  252.    -device vfio-pci,host=09:00.1,bus=pcie.0 \
  253.    -usb -device usb-kbd -device usb-mouse \
  254.    -netdev user,id=net0 \
  255.    -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:AB:3A:31 \
  256.    -device ich9-usb-uhci3 \
  257.    -device usb-host,vendorid=0x046d,productid=0xc246 \
  258.    -device usb-host,vendorid=0x046d,productid=0xc333 \
  259.    -hda $OSDIR/WinDisk.img \
  260.    -cdrom $INSTALLDIR/Win10_1903_V2_English_x64.iso \
  261. #    Simpler Guide here - https://linuxhint.com/install_qemu_debian/
Advertisement
Add Comment
Please, Sign In to add comment