Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions ubuntu22.04/nvidia-driver
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,13 @@ trap 'echo "ERROR: Failed to update the NVIDIA driver" >&2; exit 0' ERR

NVIDIA_DRIVER_PID=$(< /run/nvidia/nvidia-driver.pid)

export "$(grep -z DRIVER_VERSION /proc/${NVIDIA_DRIVER_PID}/environ)"
# Mirror the driver container's environment; the update command is started by
# the host kernel postinst context and would otherwise lack required variables
# such as TARGETARCH and KERNEL_TYPE.
while IFS= read -r -d '' var; do
[[ -n "${var}" ]] && export "${var}"
done < /proc/${NVIDIA_DRIVER_PID}/environ

nsenter -t "${NVIDIA_DRIVER_PID}" -m -- nvidia-driver update --kernel "$1"
EOF
chmod +x ${KERNEL_UPDATE_HOOK}
Expand All @@ -592,25 +598,25 @@ _shutdown() {
# When 'auto' is configured, we use the nvidia-installer to recommend the module type to install.
_resolve_kernel_type() {
if [ "${KERNEL_MODULE_TYPE}" == "proprietary" ]; then
KERNEL_TYPE=kernel
export KERNEL_TYPE=kernel
elif [ "${KERNEL_MODULE_TYPE}" == "open" ]; then
KERNEL_TYPE=kernel-open
export KERNEL_TYPE=kernel-open
elif [ "${KERNEL_MODULE_TYPE}" == "auto" ]; then
kernel_module_type=$(nvidia-installer --print-recommended-kernel-module-type)
if [ $? -ne 0 ]; then
echo "failed to retrieve the recommended kernel module type from nvidia-installer, falling back to using the driver branch"
_resolve_kernel_type_from_driver_branch
return 0
fi
[[ "${kernel_module_type}" == "open" ]] && KERNEL_TYPE=kernel-open || KERNEL_TYPE=kernel
[[ "${kernel_module_type}" == "open" ]] && export KERNEL_TYPE=kernel-open || export KERNEL_TYPE=kernel
else
echo "invalid value for the KERNEL_MODULE_TYPE variable: ${KERNEL_MODULE_TYPE}"
return 1
fi
}

_resolve_kernel_type_from_driver_branch() {
[[ "${DRIVER_BRANCH}" -lt 560 ]] && KERNEL_TYPE=kernel || KERNEL_TYPE=kernel-open
[[ "${DRIVER_BRANCH}" -lt 560 ]] && export KERNEL_TYPE=kernel || export KERNEL_TYPE=kernel-open
}

_find_vgpu_driver_version() {
Expand Down