Merge pull request #3 from philclifford/small-suggestions

Small bash suggestions, looks good 😄
This commit is contained in:
HikariKnight 2022-03-04 16:12:07 +01:00 committed by GitHub
commit cfde379c5b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 50 additions and 46 deletions

View file

@ -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
} }

View file

@ -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
} }

View file

@ -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
} }

View file

@ -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
} }

View file

@ -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
} }

View file

@ -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
} }

View file

@ -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"

View file

@ -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)

View file

@ -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