Merge pull request #3 from philclifford/small-suggestions
Small bash suggestions, looks good 😄
This commit is contained in:
commit
cfde379c5b
9 changed files with 50 additions and 46 deletions
|
@ -33,8 +33,8 @@ DO NOT use any of the files from $SCRIPTDIR/config !
|
||||||
}
|
}
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
get_GPU
|
get_GPU
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ USB_CTL_ID=()
|
||||||
|
|
||||||
# Get the GPU ROM
|
# Get the GPU ROM
|
||||||
"$SCRIPTDIR/lib/get_GPU_ROM.sh" "$ROM_PCI_ID"
|
"$SCRIPTDIR/lib/get_GPU_ROM.sh" "$ROM_PCI_ID"
|
||||||
|
|
||||||
# Start setting up modules
|
# Start setting up modules
|
||||||
exec "$SCRIPTDIR/lib/set_MODULES.sh" $GPU_DEVID
|
exec "$SCRIPTDIR/lib/set_MODULES.sh" $GPU_DEVID
|
||||||
;;
|
;;
|
||||||
|
@ -56,8 +56,8 @@ USB_CTL_ID=()
|
||||||
}
|
}
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
get_GROUP $1
|
get_GROUP $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ function get_GPU_ROM () {
|
||||||
# Get the config paths
|
# Get the config paths
|
||||||
source "$SCRIPTDIR/lib/paths.sh"
|
source "$SCRIPTDIR/lib/paths.sh"
|
||||||
|
|
||||||
VBIOS_PATH=$(find /sys/devices -name rom | grep $1)
|
VBIOS_PATH=$(find /sys/devices -name rom | grep "$1")
|
||||||
printf "We will now attempt to dump the vbios of your selected GPU.
|
printf "We will now attempt to dump the vbios of your selected GPU.
|
||||||
Passing a VBIOS rom to the card used for passthrough is required for some cards, but not all.
|
Passing a VBIOS rom to the card used for passthrough is required for some cards, but not all.
|
||||||
Some cards also requires you to patch your VBIOS romfile, check online if this is neccessary for your card.
|
Some cards also requires you to patch your VBIOS romfile, check online if this is neccessary for your card.
|
||||||
|
@ -20,14 +20,14 @@ echo 0 | sudo tee $VBIOS_PATH
|
||||||
read -p "Do you want to dump the VBIOS, choosing N will skip this step [y/N]: " YESNO
|
read -p "Do you want to dump the VBIOS, choosing N will skip this step [y/N]: " YESNO
|
||||||
case "${YESNO}" in
|
case "${YESNO}" in
|
||||||
[Yy]*)
|
[Yy]*)
|
||||||
echo 1 | sudo tee $VBIOS_PATH
|
echo 1 | sudo tee "$VBIOS_PATH"
|
||||||
sudo cat $VBIOS_PATH > "$SCRIPTDIR/$QUICKEMU/vfio_card.rom"
|
sudo cat "$VBIOS_PATH" > "$SCRIPTDIR/$QUICKEMU/vfio_card.rom"
|
||||||
sudo md5sum $VBIOS_PATH | cut -d " " -f 1 > "$SCRIPTDIR/$QUICKEMU/vfio_card.rom.md5"
|
sudo md5sum "$VBIOS_PATH" | cut -d " " -f 1 > "$SCRIPTDIR/$QUICKEMU/vfio_card.rom.md5"
|
||||||
local ROM_MD5=$(sudo md5sum $VBIOS_PATH | cut -d " " -f 1)
|
local ROM_MD5=$(sudo md5sum "$VBIOS_PATH" | cut -d " " -f 1)
|
||||||
echo 0 | sudo tee $VBIOS_PATH
|
echo 0 | sudo tee "$VBIOS_PATH"
|
||||||
local ROMFILE_MD5=$(md5sum "$SCRIPTDIR/$QUICKEMU/vfio_card.rom" | cut -d " " -f 1)
|
local ROMFILE_MD5=$(md5sum "$SCRIPTDIR/$QUICKEMU/vfio_card.rom" | cut -d " " -f 1)
|
||||||
|
|
||||||
if [ -f $SCRIPTDIR/$QUICKEMU/vfio_card.rom ];
|
if [ -f "$SCRIPTDIR"/$QUICKEMU/vfio_card.rom ];
|
||||||
then
|
then
|
||||||
if [ "$ROM_MD5" == "$ROMFILE_MD5" ];
|
if [ "$ROM_MD5" == "$ROMFILE_MD5" ];
|
||||||
then
|
then
|
||||||
|
@ -59,8 +59,8 @@ echo 0 | sudo tee $VBIOS_PATH
|
||||||
|
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
get_GPU_ROM $1
|
get_GPU_ROM $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ is only needed if you intend to use other devices than just mouse and keyboard w
|
||||||
"
|
"
|
||||||
echo "#------------------------------------------#"
|
echo "#------------------------------------------#"
|
||||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "usb controller" | cut -d " " -f 1-4,8-
|
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "usb controller" | cut -d " " -f 1-4,8-
|
||||||
echo "#------------------------------------------#"
|
echo "#------------------------------------------#"
|
||||||
printf "
|
printf "
|
||||||
Press q to quit
|
Press q to quit
|
||||||
"
|
"
|
||||||
|
@ -31,7 +31,7 @@ Press q to quit
|
||||||
}
|
}
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
get_USB_CTL
|
get_USB_CTL
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ if you do not know what you are doing.
|
||||||
echo "#------------------------------------------#"
|
echo "#------------------------------------------#"
|
||||||
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 1-4,8- | perl -pe "s/\[[0-9a-f]{4}\]: //"
|
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 1-4,8- | perl -pe "s/\[[0-9a-f]{4}\]: //"
|
||||||
echo "#------------------------------------------#"
|
echo "#------------------------------------------#"
|
||||||
|
|
||||||
printf "
|
printf "
|
||||||
To use any of the devices shown for passthrough, all of them have to be passed through
|
To use any of the devices shown for passthrough, all of them have to be passed through
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ To return to the previous page just press ENTER.
|
||||||
[Yy]*)
|
[Yy]*)
|
||||||
# Get the PCI ids
|
# Get the PCI ids
|
||||||
local PCI_ID=$($SCRIPTDIR/utils/ls-iommu | grep -i "group $1" | cut -d " " -f 4 | perl -pe "s/\n/ /" | perl -pe "s/\s$//")
|
local PCI_ID=$($SCRIPTDIR/utils/ls-iommu | grep -i "group $1" | cut -d " " -f 4 | perl -pe "s/\n/ /" | perl -pe "s/\s$//")
|
||||||
|
|
||||||
# Replace the blank USB_CTL_ID with the PCI_ID for the usb controller the user wants to pass through
|
# Replace the blank USB_CTL_ID with the PCI_ID for the usb controller the user wants to pass through
|
||||||
perl -pi -e "s/USB_CTL_ID=\(\)/USB_CTL_ID=\($PCI_ID\)/" "$SCRIPTDIR/$QUICKEMU/qemu-vfio_vars.conf"
|
perl -pi -e "s/USB_CTL_ID=\(\)/USB_CTL_ID=\($PCI_ID\)/" "$SCRIPTDIR/$QUICKEMU/qemu-vfio_vars.conf"
|
||||||
exec "$SCRIPTDIR/lib/set_CMDLINE.sh"
|
exec "$SCRIPTDIR/lib/set_CMDLINE.sh"
|
||||||
|
@ -38,8 +38,8 @@ To return to the previous page just press ENTER.
|
||||||
}
|
}
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
get_USB_CTL_GROUP $1
|
get_USB_CTL_GROUP $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
function set_CMDLINE () {
|
function set_CMDLINE () {
|
||||||
clear
|
clear
|
||||||
# Get the config paths
|
# Get the config paths
|
||||||
source "$SCRIPTDIR/lib/paths.sh"
|
source "${SCRIPTDIR}/lib/paths.sh"
|
||||||
|
|
||||||
local CMDLINE=$(cat "$SCRIPTDIR/config/kernel_args")
|
local CMDLINE=$(cat "${SCRIPTDIR}/config/kernel_args")
|
||||||
|
|
||||||
printf "Configuration is now complete, however no changes have been done to your system.
|
printf "Configuration is now complete, however no changes have been done to your system.
|
||||||
The files needed have just been written to $SCRIPTDIR/config/etc
|
The files needed have just been written to $SCRIPTDIR/config/etc
|
||||||
|
@ -33,8 +33,8 @@ the required information that the QuickEMU project can hook into and use to add
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#### In the future, when I have enough confirmation that this script works for other people.
|
#### In the future, when I have enough confirmation that this script works for other people.
|
||||||
#### This page will get replaced with a prompt asking if you want to apply the changes and make backups
|
#### This page will get replaced with a prompt asking if you want to apply the changes and make backups
|
||||||
#### of your current system config.
|
#### of your current system config.
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
"
|
"
|
||||||
|
@ -42,7 +42,7 @@ the required information that the QuickEMU project can hook into and use to add
|
||||||
|
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
set_CMDLINE
|
set_CMDLINE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,18 @@ function set_MODULES () {
|
||||||
source "$SCRIPTDIR/lib/paths.sh"
|
source "$SCRIPTDIR/lib/paths.sh"
|
||||||
|
|
||||||
# Write "/etc/modules"
|
# Write "/etc/modules"
|
||||||
printf "vfio
|
printf "
|
||||||
|
# Generated by vfio-setup
|
||||||
|
vfio
|
||||||
vfio_iommu_type1
|
vfio_iommu_type1
|
||||||
vfio_pci ids=$1
|
vfio_pci ids=%s
|
||||||
vfio_virqfd
|
vfio_virqfd
|
||||||
" >> "$SCRIPTDIR/$MODULES"
|
" "$1" >> "$SCRIPTDIR/$MODULES"
|
||||||
|
|
||||||
# Write "/etc/initramfs-tools/modules"
|
# Write "/etc/initramfs-tools/modules"
|
||||||
printf "vfio
|
printf "
|
||||||
|
# Generated by vfio-setup
|
||||||
|
vfio
|
||||||
vfio_iommu_type1
|
vfio_iommu_type1
|
||||||
vfio_pci
|
vfio_pci
|
||||||
vfio_virqfd
|
vfio_virqfd
|
||||||
|
@ -23,42 +27,42 @@ vfio_virqfd
|
||||||
|
|
||||||
# Update the kernel_args file
|
# Update the kernel_args file
|
||||||
CMDLINE=$(cat "$SCRIPTDIR/config/kernel_args")
|
CMDLINE=$(cat "$SCRIPTDIR/config/kernel_args")
|
||||||
echo "$CMDLINE vfio_pci.ids=$GPU_DEVID" > "$SCRIPTDIR/config/kernel_args"
|
echo "${CMDLINE} vfio_pci.ids=$GPU_DEVID" > "$SCRIPTDIR/config/kernel_args"
|
||||||
|
|
||||||
# Ask if we shall disable video output on this card
|
# Ask if we shall disable video output on this card
|
||||||
read -p "Do you want to force disable video output in linux on this card? [Y/n]: " DISABLE_VGA
|
read -p "Do you want to force disable video output in linux on this card? [Y/n]: " DISABLE_VGA
|
||||||
case "${DISABLE_VGA}" in
|
case "${DISABLE_VGA}" in
|
||||||
[Yy]*)
|
[Yy]*)
|
||||||
GPU_DEVID="$GPU_DEVID disable_vga=1"
|
GPU_DEVID="${GPU_DEVID} disable_vga=1"
|
||||||
;;
|
;;
|
||||||
[Nn]*)
|
[Nn]*)
|
||||||
echo ""
|
echo ""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
GPU_DEVID="$GPU_DEVID disable_vga=1"
|
GPU_DEVID="${GPU_DEVID} disable_vga=1"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Write the vfio modprobe config
|
# Write the vfio modprobe config
|
||||||
printf "# This is an autogenerated file that stubs your graphic card for use with vfio
|
printf "# This is an autogenerated file that stubs your graphic card for use with vfio
|
||||||
# This file should be placed inside /etc/modprobe.d/
|
# This file should be placed inside /etc/modprobe.d/
|
||||||
options vfio_pci ids=$GPU_DEVID
|
options vfio_pci ids=%s
|
||||||
|
|
||||||
# Make sure vfio_pci is loaded before these modules: nvidia, nouveau, amdgpu and radeon
|
# Make sure vfio_pci is loaded before these modules: nvidia, nouveau, amdgpu and radeon
|
||||||
softdep nvidia pre: vfio vfio_pci
|
softdep nvidia pre: vfio vfio_pci
|
||||||
softdep nouveau pre: vfio vfio_pci
|
softdep nouveau pre: vfio vfio_pci
|
||||||
softdep amdgpu pre: vfio vfio_pci
|
softdep amdgpu pre: vfio vfio_pci
|
||||||
softdep radeon pre: vfio vfio_pci
|
softdep radeon pre: vfio vfio_pci
|
||||||
" > "$SCRIPTDIR/$MODPROBE/vfio.conf"
|
" "${GPU_DEVID}" > "$SCRIPTDIR/$MODPROBE/vfio.conf"
|
||||||
|
|
||||||
exec "$SCRIPTDIR/lib/get_USB_CTL.sh"
|
exec "$SCRIPTDIR/lib/get_USB_CTL.sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function main () {
|
function main () {
|
||||||
SCRIPTDIR=$(dirname `which $0` | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
SCRIPTDIR=$(dirname "$(which $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
||||||
|
|
||||||
set_MODULES $1
|
set_MODULES "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
main $1
|
main "$1"
|
||||||
|
|
10
vfio-setup
10
vfio-setup
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Get the scripts directory
|
# Get the scripts directory
|
||||||
SCRIPTDIR=$(dirname `which $0`)
|
SCRIPTDIR=$(dirname "$(which $0)")
|
||||||
cd $SCRIPTDIR
|
cd "$SCRIPTDIR"
|
||||||
|
|
||||||
# Get the config paths
|
# Get the config paths
|
||||||
source "$SCRIPTDIR/lib/paths.sh"
|
source "$SCRIPTDIR/lib/paths.sh"
|
||||||
|
@ -41,11 +41,11 @@ A full documentation for debian/ubuntu systems can be found here: https://github
|
||||||
Press ENTER to continue once you have made a backup of your system.
|
Press ENTER to continue once you have made a backup of your system.
|
||||||
"
|
"
|
||||||
read ENTER
|
read ENTER
|
||||||
clear
|
clear
|
||||||
|
|
||||||
printf "This script assumes a few things:
|
printf "This script assumes a few things:
|
||||||
* You have already enabled IOMMU, VT-d and/or AMD-v inside your UEFI/BIOS advanced settings.
|
* You have already enabled IOMMU, VT-d and/or AMD-v inside your UEFI/BIOS advanced settings.
|
||||||
* You have already added \"$CMDLINE\" to your
|
* You have already added \"$CMDLINE\" to your
|
||||||
kernel boot arguments and booted your system with these kernel arguments active.
|
kernel boot arguments and booted your system with these kernel arguments active.
|
||||||
* You are comfortable with navigating and changing settings in your UEFI/BIOS.
|
* You are comfortable with navigating and changing settings in your UEFI/BIOS.
|
||||||
* You know how edit your bootloader configuration and kernel arguments.
|
* You know how edit your bootloader configuration and kernel arguments.
|
||||||
|
@ -113,7 +113,7 @@ then
|
||||||
else
|
else
|
||||||
touch "$SCRIPTDIR/$INITRAMFS"
|
touch "$SCRIPTDIR/$INITRAMFS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run ls-iommu so we can verify that IOMMU properly working
|
# Run ls-iommu so we can verify that IOMMU properly working
|
||||||
LS_IOMMU=$($SCRIPTDIR/utils/ls-iommu)
|
LS_IOMMU=$($SCRIPTDIR/utils/ls-iommu)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Get the scripts directory
|
# Get the scripts directory
|
||||||
SCRIPTDIR=$(dirname `which $0`)
|
SCRIPTDIR=$(dirname "$(which $0)")
|
||||||
cd $SCRIPTDIR
|
cd $SCRIPTDIR
|
||||||
|
|
||||||
# If there is a config generated, then $SCRIPTDIR/config/kernel_args
|
# If there is a config generated, then $SCRIPTDIR/config/kernel_args
|
||||||
|
@ -25,4 +25,4 @@ else
|
||||||
# Tell user to run the setup first if the kernel_args file is not found
|
# Tell user to run the setup first if the kernel_args file is not found
|
||||||
echo "Please run \"$SCRIPTDIR/vfio-setup\" first!"
|
echo "Please run \"$SCRIPTDIR/vfio-setup\" first!"
|
||||||
|
|
||||||
fi
|
fi
|
Loading…
Add table
Add a link
Reference in a new issue