groundwork for generating configs
This commit is contained in:
parent
50e97c7aa2
commit
3b6f09ab59
5 changed files with 203 additions and 4 deletions
39
lib/get_GPU.sh
Executable file
39
lib/get_GPU.sh
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
|
||||
function get_GPU () {
|
||||
printf "These are your graphic cards, they have to be in separate groups.
|
||||
The graphic card you want to passthrough cannot be in a group with other devices that
|
||||
does not belong to itself:
|
||||
|
||||
"
|
||||
echo "#------------------------------------------#"
|
||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "vga" | cut -d " " -f 1-4,9-
|
||||
echo "#------------------------------------------#"
|
||||
|
||||
printf "
|
||||
Press q to quit
|
||||
"
|
||||
|
||||
read -p "Which group number do you want to check?: " IOMMU_GROUP
|
||||
|
||||
case "${IOMMU_GROUP}" in
|
||||
[1-9]*)
|
||||
exec "$SCRIPTDIR/lib/get_GPU_GROUP.sh" $IOMMU_GROUP
|
||||
;;
|
||||
[Qq]*)
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function main () {
|
||||
SCRIPTDIR=$(dirname `which $0`)
|
||||
SCRIPTDIR="$SCRIPTDIR/.."
|
||||
clear
|
||||
get_GPU
|
||||
}
|
||||
|
||||
main
|
54
lib/get_GPU_GROUP.sh
Executable file
54
lib/get_GPU_GROUP.sh
Executable file
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
|
||||
function get_GROUP () {
|
||||
clear
|
||||
printf "
|
||||
For this card to be passthrough-able, it must contain only:
|
||||
* The GPU/Graphic card
|
||||
* The GPU Audio Controller
|
||||
|
||||
Optionally it may also include:
|
||||
* GPU USB Host Controller
|
||||
* GPU Serial Port
|
||||
* GPU USB Type-C UCSI Controller
|
||||
|
||||
"
|
||||
echo "#------------------------------------------#"
|
||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 1-4,8- | perl -pe "s/\[[0-9a-f]{4}\]: //"
|
||||
echo "#------------------------------------------#"
|
||||
|
||||
printf "
|
||||
To use these devices for passthrough please type in ALL their device ids in the format (without brackets or quotes) --> \"xxxx:yyyy,xxxx:yyyy\"
|
||||
NOTE: The device ID is the part inside the last [] brackets, example: [1002:aaf0]
|
||||
|
||||
To return to the previous page just press ENTER without typing in any ids
|
||||
"
|
||||
read -p "Enter the ids for all devices you want to passthrough: " GPU_DEVID
|
||||
|
||||
if [[ $GPU_DEVID =~ : ]];
|
||||
then
|
||||
# Make the directory
|
||||
mkdir "$SCRIPTDIR/config"
|
||||
|
||||
# Get the PCI ids
|
||||
PCI_ID=$($SCRIPTDIR/utils/ls-iommu | grep -i "group $1" | cut -d " " -f 4 | perl -pe "s/\n/ /" | perl -pe "s/\s$//")
|
||||
|
||||
echo "# This is an autogenerated file that stubs your graphic card for use with vfio" > "$SCRIPTDIR/config/vfio.conf"
|
||||
echo "options vfio_pci ids=$GPU_DEVID" >> "$SCRIPTDIR/config/vfio.conf"
|
||||
echo "GPU_PCI_ID=($PCI_ID)" > "$SCRIPTDIR/config/qemu-vfio_vars.conf"
|
||||
echo "USB_CTL_ID=\"\"" >> "$SCRIPTDIR/config/qemu-vfio_vars.conf"
|
||||
|
||||
exec "$SCRIPTDIR/lib/get_USB_CTL.sh"
|
||||
else
|
||||
exec "$SCRIPTDIR/lib/get_GPU.sh"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function main () {
|
||||
SCRIPTDIR=$(dirname `which $0`)
|
||||
SCRIPTDIR="$SCRIPTDIR/.."
|
||||
get_GROUP $1
|
||||
}
|
||||
|
||||
main $1
|
39
lib/get_USB_CTL.sh
Executable file
39
lib/get_USB_CTL.sh
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
|
||||
function get_USB_CTL () {
|
||||
printf "THIS STEP IS OPTIONAL IF YOU DO NOT PLAN TO USE ANYTHING OTHER THAN MOUSE AND KEYBOARD!
|
||||
The USB Controller you want to passthrough cannot be in a group with other devices.
|
||||
Passing through a whole USB Controller (a set of hardwired 1-4 usb ports on the motherboard)
|
||||
is only needed if you intend to use other devices than just mouse and keyboard with the VFIO enabled VM.
|
||||
|
||||
"
|
||||
echo "#------------------------------------------#"
|
||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "usb controller" | cut -d " " -f 1-4,8-
|
||||
echo "#------------------------------------------#"
|
||||
printf "
|
||||
Press q to quit
|
||||
"
|
||||
|
||||
read -p "Which group number do you want to check?: " IOMMU_GROUP
|
||||
|
||||
case "${IOMMU_GROUP}" in
|
||||
[1-9]*)
|
||||
exec "$SCRIPTDIR/lib/get_USB_CTL_GROUP.sh" $IOMMU_GROUP
|
||||
;;
|
||||
[Qq]*)
|
||||
echo ""
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function main () {
|
||||
SCRIPTDIR=$(dirname `which $0`)
|
||||
SCRIPTDIR="$SCRIPTDIR/.."
|
||||
clear
|
||||
get_USB_CTL
|
||||
}
|
||||
|
||||
main
|
39
lib/get_USB_CTL_GROUP.sh
Executable file
39
lib/get_USB_CTL_GROUP.sh
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
|
||||
function get_USB_CTL_GROUP () {
|
||||
clear
|
||||
printf "
|
||||
For this USB controller device to be passthrough-able, it must be the ONLY device in this group!
|
||||
|
||||
"
|
||||
echo "#------------------------------------------#"
|
||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 1-4,8- | perl -pe "s/\[[0-9a-f]{4}\]: //"
|
||||
echo "#------------------------------------------#"
|
||||
|
||||
printf "
|
||||
To use this device for passthrough please type in the device id in the format (without brackets or quotes) --> \"xxxx:yyyy\"
|
||||
NOTE: The device ID is the part inside the last [] brackets, example: [1002:aaf0]
|
||||
|
||||
To return to the previous page just press ENTER without typing in any ids
|
||||
"
|
||||
read -p "Enter the id for the device you want to passthrough: " USB_CTL_DEVID
|
||||
|
||||
if [[ $USB_CTL_DEVID =~ : ]];
|
||||
then
|
||||
# Get the PCI ids
|
||||
PCI_ID=$($SCRIPTDIR/utils/ls-iommu | grep -i "group $1" | cut -d " " -f 4)
|
||||
|
||||
exec perl -pi -e "s/USB_CTL_ID=\"\"/USB_CTL_ID=\"$PCI_ID\"/" "$SCRIPTDIR/config/qemu-vfio_vars.conf"
|
||||
else
|
||||
exec "$SCRIPTDIR/lib/get_USB_CTL.sh"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function main () {
|
||||
SCRIPTDIR=$(dirname `which $0`)
|
||||
SCRIPTDIR="$SCRIPTDIR/.."
|
||||
get_USB_CTL_GROUP $1
|
||||
}
|
||||
|
||||
main $1
|
Loading…
Add table
Add a link
Reference in a new issue