From d35d66a53af7d55b3f0ef86c42a910e968f754da Mon Sep 17 00:00:00 2001 From: Awnrt Date: Tue, 30 Apr 2024 00:24:08 +0300 Subject: upload --- Hooks/qemu | 34 ++++++++++++++++++++++++ Hooks/revert.sh | 6 ++--- Hooks/start.sh | 6 +++-- gpu_pass.sh | 80 ++++++++++++++++++++++----------------------------------- 4 files changed, 72 insertions(+), 54 deletions(-) create mode 100644 Hooks/qemu diff --git a/Hooks/qemu b/Hooks/qemu new file mode 100644 index 0000000..79203c7 --- /dev/null +++ b/Hooks/qemu @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# +# Author: SharkWipf +# +# Copy this file to /etc/libvirt/hooks, make sure it's called "qemu". +# After this file is installed, restart libvirt. +# From now on, you can easily add per-guest qemu hooks. +# Add your hooks in /etc/libvirt/hooks/qemu.d/vm_name/hook_name/state_name. +# For a list of available hooks, please refer to https://www.libvirt.org/hooks.html +# + +GUEST_NAME="$1" +HOOK_NAME="$2" +STATE_NAME="$3" +MISC="${@:4}" + +BASEDIR="$(dirname $0)" + +HOOKPATH="$BASEDIR/qemu.d/$GUEST_NAME/$HOOK_NAME/$STATE_NAME" + +set -e # If a script exits with an error, we should as well. + +# check if it's a non-empty executable file +if [ -f "$HOOKPATH" ] && [ -s "$HOOKPATH" ] && [ -x "$HOOKPATH" ]; then + eval \"$HOOKPATH\" "$@" +elif [ -d "$HOOKPATH" ]; then + while read file; do + # check for null string + if [ ! -z "$file" ]; then + eval \"$file\" "$@" + fi + done <<< "$(find -L "$HOOKPATH" -maxdepth 1 -type f -executable -print;)" +fi + diff --git a/Hooks/revert.sh b/Hooks/revert.sh index 7d15dfa..eb2b179 100755 --- a/Hooks/revert.sh +++ b/Hooks/revert.sh @@ -23,7 +23,7 @@ modprobe nvidia modprobe drm modprobe nvidia_uvm -systemctl start sddm.service +#systemctl start sddm.service -echo 0000:00:14.0 > /sys/bus/pci/drivers/vfio-pci/unbind -echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind +#echo 0000:00:14.0 > /sys/bus/pci/drivers/vfio-pci/unbind +#echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind diff --git a/Hooks/start.sh b/Hooks/start.sh index be360ac..b20bb55 100755 --- a/Hooks/start.sh +++ b/Hooks/start.sh @@ -3,7 +3,9 @@ set -x source "/etc/libvirt/hooks/kvm.conf" -systemctl stop sddm.service +#systemctl stop sddm.service +killall dwl + echo 0 > /sys/class/vtconsole/vtcon0/bind echo 0 > /sys/class/vtconsole/vtcon1/bind echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind @@ -23,4 +25,4 @@ modprobe vfio modprobe vfio_pci modprobe vfio_iommu_type1 -./usr/share/UnbindUSB/vfio-usb.sh 0000:00:14.0 +#./usr/share/UnbindUSB/vfio-usb.sh 0000:00:14.0 diff --git a/gpu_pass.sh b/gpu_pass.sh index 1f9e383..3bb2059 100755 --- a/gpu_pass.sh +++ b/gpu_pass.sh @@ -1,59 +1,41 @@ -LIGHTGREEN='\033[1;32m' -LIGHTRED='\033[1;91m' -WHITE='\033[1;97m' -MAGENTA='\033[1;35m' -CYAN='\033[1;96m' -NoColor='\033[0m' +WORKDIRECTORY=$PWD +PERMUSER="awy" -sudo mkdir /usr/share/vgabios -sudo cp Hooks/patch.rom /usr/share/vgabios -sudo mkdir /usr/share/UnbindUSB -sudo cp Hooks/vfio-usb.sh /usr/share/UnbindUSB +if [ "$EUID" -ne 0 ] + then printf "The script has to be run as root.\n" + exit +fi -printf ${MAGENTA}"Installing QEMU...\n" -printf ${LIGHTGREEN}"" +sudo -u $PERMUSER mkdir -p /home/$PERMUSER/.local/share/vgabios +sudo -u $PERMUSER cp $WORKDIRECTORY/Hooks/patch.rom /home/$PERMUSER/.local/share/vgabios -sudo pacman -S qemu libvirt edk2-ovmf virt-manager ebtables dnsmasq wget qemu-ui-sdl qemu-ui-gtk -sudo systemctl enable libvirtd.service -sudo systemctl start libvirtd.service -sudo systemctl enable virtlogd.socket -sudo systemctl start virtlogd.socket -sudo virsh net-autostart default -sudo virsh net-start default +# FOR ARCH LINUX vvvv +#pacman -S qemu libvirt edk2-ovmf virt-manager ebtables dnsmasq wget qemu-ui-sdl qemu-ui-gtk +#systemctl enable libvirtd.service +#systemctl start libvirtd.service +#systemctl enable virtlogd.socket +#systemctl start virtlogd.socket +#virsh net-autostart default +#virsh net-start default -clear +# ARTIX LINUX + DINIT +pacman -Sy --noconfirm +pacman -S qemu-full libvirt libvirt-dinit edk2-ovmf virt-manager dnsmasq wget -printf ${MAGENTA}"Installing hooks manager...\n" -printf ${LIGHTGREEN}"" +mkdir /etc/libvirt/hooks -sudo mkdir /etc/libvirt/hooks +#wget 'https://raw.githubusercontent.com/PassthroughPOST/VFIO-Tools/master/libvirt_hooks/qemu' \ +# -O /etc/libvirt/hooks/qemu +cp $WORKDIRECTORY/Hooks/qemu /etc/libvirt/hooks/ -sudo wget 'https://raw.githubusercontent.com/PassthroughPOST/VFIO-Tools/master/libvirt_hooks/qemu' \ - -O /etc/libvirt/hooks/qemu +chmod +x /etc/libvirt/hooks/qemu -sudo chmod +x /etc/libvirt/hooks/qemu +mkdir -p /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin +mkdir -p /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end -clear +cp $WORKDIRECTORY/Hooks/start.sh /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/ +#sudo cp Hooks/isolstart.sh /etc/libvirt/hooks/qemu.d/win10/prepare/begin/ +cp $WORKDIRECTORY/Hooks/revert.sh /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/ +#sudo cp Hooks/isocpurevert.sh /etc/libvirt/hooks/qemu.d/win10/release/end/ +cp Hooks/kvm.conf /etc/libvirt/hooks/ -printf ${MAGENTA}"Copying hooks into root directory...\n" -printf ${LIGHTGREEN}"" - -sudo mkdir /etc/libvirt/hooks/qemu.d -sudo mkdir /etc/libvirt/hooks/qemu.d/win10 -sudo mkdir /etc/libvirt/hooks/qemu.d/win10/prepare -sudo mkdir /etc/libvirt/hooks/qemu.d/win10/prepare/begin -sudo mkdir /etc/libvirt/hooks/qemu.d/win10/release -sudo mkdir /etc/libvirt/hooks/qemu.d/win10/release/end - -sudo cp Hooks/start.sh /etc/libvirt/hooks/qemu.d/win10/prepare/begin/ -sudo cp Hooks/isolstart.sh /etc/libvirt/hooks/qemu.d/win10/prepare/begin/ -sudo cp Hooks/revert.sh /etc/libvirt/hooks/qemu.d/win10/release/end/ -sudo cp Hooks/isocpurevert.sh /etc/libvirt/hooks/qemu.d/win10/release/end/ - -printf ${MAGENTA}"Configuring kvm.conf...\n" -printf ${LIGHTGREEN}"" - -sudo cp Hooks/kvm.conf /etc/libvirt/hooks/ - -printf ${LIGHTGREEN}"\nYou are done!\n" -printf ${LIGHTGREEN}"" -- cgit v1.2.3