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}"
|
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)
|
# 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}"
|
NVIDIA_CACHE="${DIST_DIR}/nvidia-${NVIDIA_DRIVER_VERSION}-${KVER}"
|
||||||
|
|
||||||
# Inject .ko files into overlay at /lib/modules/<kver>/extra/nvidia/
|
# 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 "$NVIDIA_VERSION" ] || { echo "usage: $0 <nvidia-version> <dist-dir>"; exit 1; }
|
||||||
[ -n "$DIST_DIR" ] || { 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
|
# Detect kernel version from installed headers (pick highest version if multiple).
|
||||||
KVER=$(ls /usr/src/ 2>/dev/null | grep '^linux-headers-' | sed 's/linux-headers-//' | head -1)
|
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
|
if [ -z "$KVER" ]; then
|
||||||
echo "=== installing linux-lts-dev ==="
|
echo "=== installing linux-lts-dev ==="
|
||||||
apk add --quiet 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
|
fi
|
||||||
KDIR="/usr/src/linux-headers-${KVER}"
|
KDIR="/usr/src/linux-headers-${KVER}"
|
||||||
echo "=== NVIDIA ${NVIDIA_VERSION} (proprietary) for kernel ${KVER} ==="
|
echo "=== NVIDIA ${NVIDIA_VERSION} (proprietary) for kernel ${KVER} ==="
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ done
|
|||||||
# Build and inject NVIDIA proprietary modules + userspace tools.
|
# Build and inject NVIDIA proprietary modules + userspace tools.
|
||||||
echo "=== building NVIDIA modules ==="
|
echo "=== building NVIDIA modules ==="
|
||||||
sh "${BUILDER_DIR}/build-nvidia-module.sh" "${NVIDIA_DRIVER_VERSION}" "${DIST_DIR}"
|
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}"
|
NVIDIA_CACHE="${DIST_DIR}/nvidia-${NVIDIA_DRIVER_VERSION}-${KVER}"
|
||||||
|
|
||||||
mkdir -p "${OVERLAY_DIR}/lib/modules/${KVER}/extra/nvidia"
|
mkdir -p "${OVERLAY_DIR}/lib/modules/${KVER}/extra/nvidia"
|
||||||
|
|||||||
@@ -9,6 +9,15 @@ depend() {
|
|||||||
|
|
||||||
start() {
|
start() {
|
||||||
ebegin "Loading NVIDIA modules"
|
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/
|
# Run depmod so kernel can locate our modules in /lib/modules/.../extra/
|
||||||
depmod -a 2>/dev/null || true
|
depmod -a 2>/dev/null || true
|
||||||
|
|
||||||
@@ -17,6 +26,7 @@ start() {
|
|||||||
einfo "loaded: $mod"
|
einfo "loaded: $mod"
|
||||||
else
|
else
|
||||||
ewarn "failed to load: $mod"
|
ewarn "failed to load: $mod"
|
||||||
|
dmesg | tail -n 5 | sed 's/^/ dmesg: /' || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
eend 0
|
eend 0
|
||||||
|
|||||||
@@ -9,6 +9,15 @@ depend() {
|
|||||||
|
|
||||||
start() {
|
start() {
|
||||||
ebegin "Loading NVIDIA modules"
|
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
|
depmod -a 2>/dev/null || true
|
||||||
|
|
||||||
for mod in nvidia nvidia-modeset nvidia-uvm; do
|
for mod in nvidia nvidia-modeset nvidia-uvm; do
|
||||||
@@ -16,6 +25,7 @@ start() {
|
|||||||
einfo "loaded: $mod"
|
einfo "loaded: $mod"
|
||||||
else
|
else
|
||||||
ewarn "failed to load: $mod"
|
ewarn "failed to load: $mod"
|
||||||
|
dmesg | tail -n 5 | sed 's/^/ dmesg: /' || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user