@@ -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,27 @@ _shutdown() {
481479 return 1
482480}
483481
482+ _resolve_kernel_type () {
483+ if [ " ${KERNEL_MODULE_TYPE} " == " proprietary" ]; then
484+ KERNEL_TYPE=kernel
485+ return 0
486+ elif [ " ${KERNEL_MODULE_TYPE} " == " open" ]; then
487+ KERNEL_TYPE=kernel-open
488+ return 0
489+ elif [ " ${KERNEL_MODULE_TYPE} " == " auto" ]; then
490+ KERNEL_TYPE=$( gpu-driver-util get-kernel-module-type -b " ${DRIVER_BRANCH} " )
491+ if [ $? -ne 0 ]; then
492+ echo " cannot autodetect the kernel module type, printing error logs from /var/log/gpu-driver-util.log..."
493+ tail -n 3 /var/log/gpu-driver-util.log
494+ return 1
495+ fi
496+ return 0
497+ else
498+ echo " invalid value for the KERNEL_MODULE_TYPE variable: ${KERNEL_MODULE_TYPE} "
499+ return 1
500+ fi
501+ }
502+
484503_find_vgpu_driver_version () {
485504 local count=" "
486505 local version=" "
@@ -524,6 +543,8 @@ init() {
524543 _find_vgpu_driver_version || exit 1
525544 fi
526545
546+ _resolve_kernel_type || exit 1
547+
527548 # Install the userspace components and copy the kernel module sources.
528549 sh NVIDIA-Linux-$DRIVER_ARCH -$DRIVER_VERSION .run -x && \
529550 cd NVIDIA-Linux-$DRIVER_ARCH -$DRIVER_VERSION && \
@@ -596,6 +617,8 @@ update() {
596617 fi
597618 exec 3>& -
598619
620+ _resolve_kernel_type || exit 1
621+
599622 # vgpu driver version is choosen dynamically during runtime, so pre-compile modules for
600623 # only non-vgpu driver types
601624 if [ " ${DRIVER_TYPE} " != " vgpu" ]; then
0 commit comments