Improvements to NVIDIA Patch installation
The GitHub servers had a small outage today while I was working. This prevented the containers from being able to start. This change allows for the patch to be re-used between container re-creations and also prevents the failure from stopping boot. If the patch fails to download or install, then it will continue with an unpatched driver.
This commit is contained in:
@@ -101,37 +101,48 @@ function install_nvidia_driver {
|
|||||||
> "${USER_HOME:?}/Downloads/nvidia_gpu_install.log" 2>&1
|
> "${USER_HOME:?}/Downloads/nvidia_gpu_install.log" 2>&1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function patch_nvidia_driver {
|
||||||
# REF: https://github.com/keylase/nvidia-patch#docker-support
|
# REF: https://github.com/keylase/nvidia-patch#docker-support
|
||||||
if [ "${NVIDIA_PATCH_VERSION:-}X" != "X" ]; then
|
if [ "${NVIDIA_PATCH_VERSION:-}X" != "X" ]; then
|
||||||
echo "Patch NVIDIA Driver"
|
# Don't fail boot if something goes wrong here. Set +e
|
||||||
|
(
|
||||||
|
set +e
|
||||||
|
if [ ! -f "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" ]; then
|
||||||
|
echo "Fetch NVIDIA NVENC patch"
|
||||||
|
wget -q --show-progress --progress=bar:force:noscroll \
|
||||||
|
-O "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" \
|
||||||
|
"https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch.sh"
|
||||||
|
fi
|
||||||
|
if [ ! -f "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" ]; then
|
||||||
|
echo "Fetch NVIDIA NvFBC patch"
|
||||||
|
wget -q --show-progress --progress=bar:force:noscroll \
|
||||||
|
-O "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh" \
|
||||||
|
"https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch-fbc.sh"
|
||||||
|
fi
|
||||||
|
chmod +x \
|
||||||
|
"${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh" \
|
||||||
|
"${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh"
|
||||||
|
|
||||||
echo " - Fetch NVIDIA NVENC patch"
|
echo "Install NVIDIA driver patches"
|
||||||
wget -q --show-progress --progress=bar:force:noscroll \
|
echo "/patched-lib" > /etc/ld.so.conf.d/000-patched-lib.conf
|
||||||
-O /usr/local/bin/patch.sh \
|
mkdir -p "/patched-lib"
|
||||||
"https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch.sh"
|
PATCH_OUTPUT_DIR="/patched-lib" "${USER_HOME:?}/Downloads/nvidia-patch.${NVIDIA_PATCH_VERSION:?}.sh"
|
||||||
echo " - Fetch NVIDIA NvFBC patch"
|
PATCH_OUTPUT_DIR="/patched-lib" "${USER_HOME:?}/Downloads/nvidia-patch-fbc.${NVIDIA_PATCH_VERSION:?}.sh"
|
||||||
wget -q --show-progress --progress=bar:force:noscroll \
|
|
||||||
-O /usr/local/bin/patch-fbc.sh \
|
|
||||||
"https://raw.githubusercontent.com/keylase/nvidia-patch/${NVIDIA_PATCH_VERSION:?}/patch-fbc.sh"
|
|
||||||
chmod +x \
|
|
||||||
/usr/local/bin/patch.sh \
|
|
||||||
/usr/local/bin/patch-fbc.sh
|
|
||||||
|
|
||||||
echo " - Install Patches"
|
pushd "/patched-lib" &> /dev/null || { echo "Error: Failed to push directory to /patched-lib"; exit 1; }
|
||||||
echo "/patched-lib" > /etc/ld.so.conf.d/000-patched-lib.conf
|
for f in * ; do
|
||||||
mkdir -p "/patched-lib"
|
suffix="${f##*.so}"
|
||||||
PATCH_OUTPUT_DIR="/patched-lib" /usr/local/bin/patch.sh
|
name="$(basename "$f" "$suffix")"
|
||||||
PATCH_OUTPUT_DIR="/patched-lib" /usr/local/bin/patch-fbc.sh
|
[ -h "$name" ] || ln -sf "$f" "$name"
|
||||||
|
[ -h "$name" ] || ln -sf "$f" "$name.1"
|
||||||
pushd "/patched-lib" &> /dev/null || { echo "Error: Failed to push directory to /patched-lib"; exit 1; }
|
done
|
||||||
for f in * ; do
|
ldconfig
|
||||||
suffix="${f##*.so}"
|
popd &> /dev/null || { echo "Error: Failed to pop directory out of /patched-lib"; exit 1; }
|
||||||
name="$(basename "$f" "$suffix")"
|
)
|
||||||
[ -h "$name" ] || ln -sf "$f" "$name"
|
else
|
||||||
[ -h "$name" ] || ln -sf "$f" "$name.1"
|
echo "Leaving NVIDIA driver stock without patching"
|
||||||
done
|
|
||||||
ldconfig
|
|
||||||
popd &> /dev/null || { echo "Error: Failed to pop directory out of /patched-lib"; exit 1; }
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,6 +205,7 @@ fi
|
|||||||
if [ "${nvidia_pci_address:-}X" != "X" ]; then
|
if [ "${nvidia_pci_address:-}X" != "X" ]; then
|
||||||
echo "**** Found NVIDIA device '${nvidia_gpu_name:?}' ****"
|
echo "**** Found NVIDIA device '${nvidia_gpu_name:?}' ****"
|
||||||
install_nvidia_driver
|
install_nvidia_driver
|
||||||
|
patch_nvidia_driver
|
||||||
else
|
else
|
||||||
echo "**** No NVIDIA device found ****"
|
echo "**** No NVIDIA device found ****"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user