Added vga passthrough notes...
This commit is contained in:
parent
c0a5e1f876
commit
144c110b73
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,30 @@
|
||||||
|
# Passthrough Helper for Manjaro
|
||||||
|
|
||||||
|
Run this script using su instead of sudo. The ">" redirects of echo will not work otherwise.
|
||||||
|
|
||||||
|
|
||||||
|
# Edit /etc/default/grub
|
||||||
|
|
||||||
|
intel_iommu=on (or) amd_iommu=on\
|
||||||
|
rd.driver.pre=vfio-pci\
|
||||||
|
kvm.ignore_msrs=1
|
||||||
|
|
||||||
|
|
||||||
|
# Edit /etc/mkinitcpio.conf
|
||||||
|
|
||||||
|
MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"\
|
||||||
|
FILES="/usr/bin/vfio-pci-override.sh"\
|
||||||
|
Hooks="... vfio ...."
|
||||||
|
|
||||||
|
|
||||||
|
# Tutorial
|
||||||
|
|
||||||
|
* https://www.youtube.com/watch?v=QlGx0XvWuag
|
||||||
|
|
||||||
|
# "Error 43: Driver failed to load" on Nvidia GPUs passed to Windows VMs
|
||||||
|
* https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#%22Error_43:_Driver_failed_to_load%22_on_Nvidia_GPUs_passed_to_Windows_VMs
|
||||||
|
|
||||||
|
# Sources
|
||||||
|
|
||||||
|
* https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Using_identical_guest_and_host_GPUs
|
||||||
|
* https://forum.manjaro.org/t/virt-manager-fails-to-detect-ovmf-uefi-firmware/110072
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# . CONFIG.sh
|
||||||
|
|
||||||
|
# set -o xtrace ## To debug scripts
|
||||||
|
# set -o errexit ## To exit on error
|
||||||
|
# set -o errunset ## To exit if a variable is referenced but not set
|
||||||
|
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
SCRIPTPATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
cd "${SCRIPTPATH}"
|
||||||
|
echo "Working Dir: " $(pwd)
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
for d in /sys/kernel/iommu_groups/*/devices/*; do
|
||||||
|
n=${d#*/iommu_groups/*}; n=${n%%/*}
|
||||||
|
printf 'IOMMU Group %s ' "$n"
|
||||||
|
lspci -nns "${d##*/}"
|
||||||
|
done;
|
||||||
|
}
|
||||||
|
main $@;
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Sources:
|
||||||
|
# https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Using_identical_guest_and_host_GPUs
|
||||||
|
# https://forum.manjaro.org/t/virt-manager-fails-to-detect-ovmf-uefi-firmware/110072
|
||||||
|
|
||||||
|
VERSION=`lsb_release -r | cut -d ' ' -f 2 | cut -d '.' -f 1`
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
|
||||||
|
mkdir Backup
|
||||||
|
chmod +x uninstall.sh
|
||||||
|
|
||||||
|
cp /etc/default/grub Backup
|
||||||
|
cp /etc/mkinitcpio.conf Backup
|
||||||
|
|
||||||
|
# Edit grub amd_iommu=on or intel_iommu=on rd.driver.pre=vfio-pci kvm.ignore_msrs=1
|
||||||
|
|
||||||
|
nano /etc/default/grub
|
||||||
|
update-grub
|
||||||
|
|
||||||
|
# Install required packages
|
||||||
|
|
||||||
|
pacman -S vim qemu virt-manager ovmf dnsmasq ebtables iptables
|
||||||
|
|
||||||
|
# Allow libvirt to autostart
|
||||||
|
|
||||||
|
systemctl enable libvirtd.service
|
||||||
|
|
||||||
|
# Copy necessary files
|
||||||
|
|
||||||
|
cp vfio-pci-override.sh /usr/bin/vfio-pci-override.sh
|
||||||
|
chmod +x /usr/bin/vfio-pci-override.sh
|
||||||
|
cp vfio-install /etc/initcpio/install/vfio
|
||||||
|
cp vfio-hooks /etc/initcpio/hooks/vfio
|
||||||
|
cp vfio.conf /etc/modprobe.d/
|
||||||
|
|
||||||
|
# Edit mkinitcpio.conf
|
||||||
|
|
||||||
|
# MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"
|
||||||
|
# FILES="/usr/bin/vfio-pci-override.sh"
|
||||||
|
# HOOKS="... vfio ...."
|
||||||
|
|
||||||
|
nano /etc/mkinitcpio.conf
|
||||||
|
mkinitcpio -P
|
||||||
|
|
||||||
|
# Workaround libvirt bug in previous versions of Manjaro:
|
||||||
|
# https://forum.manjaro.org/t/virt-manager-fails-to-detect-ovmf-uefi-firmware/110072
|
||||||
|
|
||||||
|
if [ $VERSION -lt 20 ]
|
||||||
|
then
|
||||||
|
echo 'nvram = [ "/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd" ]' >> /etc/libvirt/qemu.conf
|
||||||
|
mkdir -p /etc/qemu/firmware
|
||||||
|
sed 's#qemu/edk2-x86_64-code.fd#ovmf/x64/OVMF_CODE.fd#;s#qemu/edk2-i386-vars.fd#ovmf/x64/OVMF_VARS.fd#' < /usr/share/qemu/firmware/60-edk2-x86_64.json > /etc/qemu/firmware/10-ovmf-workaround.json
|
||||||
|
systemctl restart libvirtd
|
||||||
|
fi
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# . CONFIG.sh
|
||||||
|
|
||||||
|
# set -o xtrace ## To debug scripts
|
||||||
|
# set -o errexit ## To exit on error
|
||||||
|
# set -o errunset ## To exit if a variable is referenced but not set
|
||||||
|
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
SCRIPTPATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
cd "${SCRIPTPATH}"
|
||||||
|
echo "Working Dir: " $(pwd)
|
||||||
|
|
||||||
|
|
||||||
|
rm /usr/bin/vfio-pci-override.sh
|
||||||
|
rm /etc/initcpio/install/vfio
|
||||||
|
rm /etc/initcpio/hooks/vfio
|
||||||
|
rm /etc/modprobe.d/vfio.conf
|
||||||
|
|
||||||
|
|
||||||
|
if [ -a Backup/grub ]
|
||||||
|
then
|
||||||
|
rm /etc/default/grub
|
||||||
|
cp Backup/grub /etc/default/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -a Backup/mkinitcpio.conf ]
|
||||||
|
then
|
||||||
|
rm /etc/mkinitcpio.conf
|
||||||
|
cp Backup/mkinitcpio.conf /etc/
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkinitcpio -P
|
||||||
|
}
|
||||||
|
main $@;
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
run_hook() {
|
||||||
|
msg ":: Triggering vfio-pci override"
|
||||||
|
/bin/sh /usr/bin/vfio-pci-override.sh
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# . CONFIG.sh
|
||||||
|
|
||||||
|
# set -o xtrace ## To debug scripts
|
||||||
|
# set -o errexit ## To exit on error
|
||||||
|
# set -o errunset ## To exit if a variable is referenced but not set
|
||||||
|
|
||||||
|
|
||||||
|
build() {
|
||||||
|
add_file /usr/bin/vfio-pci-override.sh
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
SCRIPTPATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
cd "${SCRIPTPATH}"
|
||||||
|
echo "Working Dir: " $(pwd)
|
||||||
|
|
||||||
|
build
|
||||||
|
|
||||||
|
}
|
||||||
|
main $@;
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# . CONFIG.sh
|
||||||
|
|
||||||
|
# set -o xtrace ## To debug scripts
|
||||||
|
# set -o errexit ## To exit on error
|
||||||
|
# set -o errunset ## To exit if a variable is referenced but not set
|
||||||
|
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
SCRIPTPATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
cd "${SCRIPTPATH}"
|
||||||
|
echo "Working Dir: " $(pwd)
|
||||||
|
|
||||||
|
|
||||||
|
for i in /sys/bus/pci/devices/*/boot_vga; do
|
||||||
|
if [ $(cat "$i") -eq 0 ]; then
|
||||||
|
GPU="${i%/boot_vga}"
|
||||||
|
AUDIO="$(echo "$GPU" | sed -e "s/0$/1/")"
|
||||||
|
echo "vfio-pci" > "$GPU/driver_override"
|
||||||
|
if [ -d "$AUDIO" ]; then
|
||||||
|
echo "vfio-pci" > "$AUDIO/driver_override"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
modprobe -i vfio-pci
|
||||||
|
}
|
||||||
|
main $@;
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
||||||
|
install vfio-pci /usr/bin/vfio-pci-override.sh
|
||||||
|
options vfio-pci disable_vga=1 allow_unsafe_interrupts=1
|
Loading…
Reference in New Issue