fix: update NVIDIA to 590.48.01, add sha256 verification for installer
- 550.54.15 did not exist on NVIDIA CDN (404) - updated to 590.48.01 (latest stable, 396MB) - download sha256sum file first, verify installer before extracting - re-download if file is missing, empty, or sha256 mismatch Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
ALPINE_VERSION=3.21
|
||||
KERNEL_VERSION=6.6
|
||||
NVIDIA_DRIVER_VERSION=550.54.15
|
||||
NVIDIA_DRIVER_VERSION=590.48.01
|
||||
GO_VERSION=1.23.6
|
||||
|
||||
@@ -41,13 +41,29 @@ fi
|
||||
# Install build dependencies
|
||||
apk add --quiet gcc make perl linux-lts-dev wget
|
||||
|
||||
# Download official NVIDIA .run installer (proprietary)
|
||||
# Download official NVIDIA .run installer (proprietary) with sha256 verification
|
||||
BASE_URL="https://download.nvidia.com/XFree86/Linux-x86_64/${NVIDIA_VERSION}"
|
||||
RUN_FILE="/var/tmp/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}.run"
|
||||
if [ ! -f "$RUN_FILE" ]; then
|
||||
SHA_FILE="/var/tmp/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}.run.sha256sum"
|
||||
|
||||
verify_run() {
|
||||
[ -s "$SHA_FILE" ] || return 1
|
||||
[ -s "$RUN_FILE" ] || return 1
|
||||
cd /var/tmp
|
||||
sha256sum -c "$SHA_FILE" --status 2>/dev/null
|
||||
}
|
||||
|
||||
if ! verify_run; then
|
||||
rm -f "$RUN_FILE" "$SHA_FILE"
|
||||
echo "=== downloading NVIDIA ${NVIDIA_VERSION} installer ==="
|
||||
wget -q --show-progress \
|
||||
-O "$RUN_FILE" \
|
||||
"https://download.nvidia.com/XFree86/Linux-x86_64/${NVIDIA_VERSION}/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}.run"
|
||||
wget -q -O "$SHA_FILE" "${BASE_URL}/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}.run.sha256sum"
|
||||
echo "sha256: $(cat "$SHA_FILE")"
|
||||
wget --show-progress -O "$RUN_FILE" "${BASE_URL}/NVIDIA-Linux-x86_64-${NVIDIA_VERSION}.run"
|
||||
echo "=== verifying sha256 ==="
|
||||
cd /var/tmp && sha256sum -c "$SHA_FILE" || { echo "ERROR: sha256 mismatch"; rm -f "$RUN_FILE"; exit 1; }
|
||||
echo "sha256 OK"
|
||||
else
|
||||
echo "=== NVIDIA installer verified from cache ==="
|
||||
fi
|
||||
|
||||
# Extract installer contents
|
||||
@@ -57,9 +73,17 @@ EXTRACT_DIR="/var/tmp/nvidia-extract-${NVIDIA_VERSION}"
|
||||
rm -rf "$EXTRACT_DIR"
|
||||
"$RUN_FILE" --extract-only --target "$EXTRACT_DIR"
|
||||
|
||||
# Find kernel source directory (proprietary: kernel/, open: kernel-open/)
|
||||
KERNEL_SRC=""
|
||||
for d in "$EXTRACT_DIR/kernel" "$EXTRACT_DIR/kernel-modules-sources" "$EXTRACT_DIR/kernel-source"; do
|
||||
[ -f "$d/Makefile" ] && KERNEL_SRC="$d" && break
|
||||
done
|
||||
[ -n "$KERNEL_SRC" ] || { echo "ERROR: kernel source dir not found in:"; ls "$EXTRACT_DIR/"; exit 1; }
|
||||
echo "kernel source: $KERNEL_SRC"
|
||||
|
||||
# Build kernel modules from extracted source
|
||||
echo "=== building kernel modules ($(nproc) cores) ==="
|
||||
cd "$EXTRACT_DIR/kernel"
|
||||
cd "$KERNEL_SRC"
|
||||
make -j$(nproc) KERNEL_UNAME="$KVER" SYSSRC="$KDIR" modules 2>&1 | tail -5
|
||||
|
||||
# Collect outputs
|
||||
|
||||
Reference in New Issue
Block a user