@@ -15,9 +15,7 @@ NVIDIA_UVM_MODULE_PARAMS=()
1515NVIDIA_MODESET_MODULE_PARAMS=()
1616NVIDIA_PEERMEM_MODULE_PARAMS=()
1717TARGETARCH=${TARGETARCH:? " Missing TARGETARCH env" }
18-
19- OPEN_KERNEL_MODULES_ENABLED=${OPEN_KERNEL_MODULES_ENABLED:- false}
20- [[ " ${OPEN_KERNEL_MODULES_ENABLED} " == " true" ]] && KERNEL_TYPE=kernel-open || KERNEL_TYPE=kernel
18+ KERNEL_MODULE_TYPE=${KERNEL_MODULE_TYPE:- auto}
2119
2220export DEBIAN_FRONTEND=noninteractive
2321
@@ -481,6 +479,24 @@ _shutdown() {
481479 return 1
482480}
483481
482+ _resolve_kernel_type () {
483+ if [ " ${KERNEL_MODULE_TYPE} " == " proprietary" ]; then
484+ KERNEL_TYPE=kernel
485+ elif [ " ${KERNEL_MODULE_TYPE} " == " open" ]; then
486+ KERNEL_TYPE=kernel-open
487+ elif [ " ${KERNEL_MODULE_TYPE} " == " auto" ]; then
488+ KERNEL_TYPE=$( gpu-driver-util get-kernel-module-type -b " ${DRIVER_BRANCH} " )
489+ if [ $? -ne 0 ]; then
490+ echo " cannot autodetect the kernel module type, printing error logs from /var/log/gpu-driver-util.log..."
491+ tail -n 3 /var/log/gpu-driver-util.log
492+ return 1
493+ fi
494+ else
495+ echo " invalid value for the KERNEL_MODULE_TYPE variable: ${KERNEL_MODULE_TYPE} "
496+ return 1
497+ fi
498+ }
499+
484500_find_vgpu_driver_version () {
485501 local count=" "
486502 local version=" "
@@ -524,6 +540,8 @@ init() {
524540 _find_vgpu_driver_version || exit 1
525541 fi
526542
543+ _resolve_kernel_type || exit 1
544+
527545 # Install the userspace components and copy the kernel module sources.
528546 sh NVIDIA-Linux-$DRIVER_ARCH -$DRIVER_VERSION .run -x && \
529547 cd NVIDIA-Linux-$DRIVER_ARCH -$DRIVER_VERSION && \
@@ -596,6 +614,8 @@ update() {
596614 fi
597615 exec 3>& -
598616
617+ _resolve_kernel_type || exit 1
618+
599619 # vgpu driver version is choosen dynamically during runtime, so pre-compile modules for
600620 # only non-vgpu driver types
601621 if [ " ${DRIVER_TYPE} " != " vgpu" ]; then
0 commit comments