Fix NVIDIA module version selection and add load diagnostics

This commit is contained in:
Mikhail Chusavitin
2026-03-06 17:30:41 +03:00
parent a55b4108d5
commit f84ec9320c
5 changed files with 33 additions and 5 deletions

View File

@@ -104,7 +104,7 @@ echo "=== building NVIDIA ${NVIDIA_DRIVER_VERSION} modules ==="
sh "${BUILDER_DIR}/build-nvidia-module.sh" "${NVIDIA_DRIVER_VERSION}" "${DIST_DIR}"
# Determine kernel version (same as what goes into the ISO — both use linux-lts from same Alpine)
KVER=$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | head -1)
KVER=$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | sort -V | tail -1)
NVIDIA_CACHE="${DIST_DIR}/nvidia-${NVIDIA_DRIVER_VERSION}-${KVER}"
# Inject .ko files into overlay at /lib/modules/<kver>/extra/nvidia/

View File

@@ -20,12 +20,20 @@ DIST_DIR="$2"
[ -n "$NVIDIA_VERSION" ] || { echo "usage: $0 <nvidia-version> <dist-dir>"; exit 1; }
[ -n "$DIST_DIR" ] || { echo "usage: $0 <nvidia-version> <dist-dir>"; exit 1; }
# Detect kernel version from installed headers
KVER=$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | head -1)
# Detect kernel version from installed headers (pick highest version if multiple).
detect_kver() {
ls /usr/src/ 2>/dev/null \
| grep '^linux-headers-' \
| sed 's/linux-headers-//' \
| sort -V \
| tail -1
}
KVER="$(detect_kver)"
if [ -z "$KVER" ]; then
echo "=== installing linux-lts-dev ==="
apk add --quiet linux-lts-dev
KVER=$(ls /usr/src/ | grep '^linux-headers-' | sed 's/linux-headers-//' | head -1)
KVER="$(detect_kver)"
fi
KDIR="/usr/src/linux-headers-${KVER}"
echo "=== NVIDIA ${NVIDIA_VERSION} (proprietary) for kernel ${KVER} ==="

View File

@@ -43,7 +43,7 @@ done
# Build and inject NVIDIA proprietary modules + userspace tools.
echo "=== building NVIDIA modules ==="
sh "${BUILDER_DIR}/build-nvidia-module.sh" "${NVIDIA_DRIVER_VERSION}" "${DIST_DIR}"
KVER="$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | head -1)"
KVER="$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | sort -V | tail -1)"
NVIDIA_CACHE="${DIST_DIR}/nvidia-${NVIDIA_DRIVER_VERSION}-${KVER}"
mkdir -p "${OVERLAY_DIR}/lib/modules/${KVER}/extra/nvidia"

View File

@@ -9,6 +9,15 @@ depend() {
start() {
ebegin "Loading NVIDIA modules"
kver="$(uname -r)"
einfo "kernel: ${kver}"
if [ -d "/lib/modules/${kver}/extra/nvidia" ]; then
einfo "module dir: /lib/modules/${kver}/extra/nvidia"
ls "/lib/modules/${kver}/extra/nvidia"/*.ko 2>/dev/null | sed 's/^/ /' || true
else
ewarn "module dir missing: /lib/modules/${kver}/extra/nvidia"
fi
# Run depmod so kernel can locate our modules in /lib/modules/.../extra/
depmod -a 2>/dev/null || true
@@ -17,6 +26,7 @@ start() {
einfo "loaded: $mod"
else
ewarn "failed to load: $mod"
dmesg | tail -n 5 | sed 's/^/ dmesg: /' || true
fi
done
eend 0

View File

@@ -9,6 +9,15 @@ depend() {
start() {
ebegin "Loading NVIDIA modules"
kver="$(uname -r)"
einfo "kernel: ${kver}"
if [ -d "/lib/modules/${kver}/extra/nvidia" ]; then
einfo "module dir: /lib/modules/${kver}/extra/nvidia"
ls "/lib/modules/${kver}/extra/nvidia"/*.ko 2>/dev/null | sed 's/^/ /' || true
else
ewarn "module dir missing: /lib/modules/${kver}/extra/nvidia"
fi
depmod -a 2>/dev/null || true
for mod in nvidia nvidia-modeset nvidia-uvm; do
@@ -16,6 +25,7 @@ start() {
einfo "loaded: $mod"
else
ewarn "failed to load: $mod"
dmesg | tail -n 5 | sed 's/^/ dmesg: /' || true
fi
done