diff --git a/iso/builder/build-debug.sh b/iso/builder/build-debug.sh index 69b43d4..ae4be33 100644 --- a/iso/builder/build-debug.sh +++ b/iso/builder/build-debug.sh @@ -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//extra/nvidia/ diff --git a/iso/builder/build-nvidia-module.sh b/iso/builder/build-nvidia-module.sh index b9b3dc3..dd6994a 100644 --- a/iso/builder/build-nvidia-module.sh +++ b/iso/builder/build-nvidia-module.sh @@ -20,12 +20,20 @@ DIST_DIR="$2" [ -n "$NVIDIA_VERSION" ] || { echo "usage: $0 "; exit 1; } [ -n "$DIST_DIR" ] || { echo "usage: $0 "; 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} ===" diff --git a/iso/builder/build.sh b/iso/builder/build.sh index 69d1e0d..265a6a5 100755 --- a/iso/builder/build.sh +++ b/iso/builder/build.sh @@ -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" diff --git a/iso/overlay-debug/etc/init.d/bee-nvidia b/iso/overlay-debug/etc/init.d/bee-nvidia index f4f6fe3..0cc4914 100755 --- a/iso/overlay-debug/etc/init.d/bee-nvidia +++ b/iso/overlay-debug/etc/init.d/bee-nvidia @@ -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 diff --git a/iso/overlay/etc/init.d/bee-nvidia b/iso/overlay/etc/init.d/bee-nvidia index c250f02..62b9e62 100755 --- a/iso/overlay/etc/init.d/bee-nvidia +++ b/iso/overlay/etc/init.d/bee-nvidia @@ -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