Fix NVIDIA module version selection and add load diagnostics
This commit is contained in:
@@ -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/
|
||||
|
||||
@@ -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} ==="
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user