#!/sbin/openrc-run description="Bee: load NVIDIA kernel modules" NVIDIA_KO_DIR="/usr/local/lib/nvidia" depend() { need localmount before bee-audit } start() { ebegin "Loading NVIDIA modules" einfo "kernel: $(uname -r)" if [ ! -d "$NVIDIA_KO_DIR" ]; then ewarn "NVIDIA module dir missing: $NVIDIA_KO_DIR" eend 1 return 1 fi einfo "module dir: $NVIDIA_KO_DIR" ls "$NVIDIA_KO_DIR"/*.ko 2>/dev/null | sed 's/^/ /' || true # Create libnvidia-ml soname symlinks needed by nvidia-smi (glibc binary on Alpine/musl) for lib in libnvidia-ml libcuda; do versioned=$(ls /usr/lib/${lib}.so.[0-9]* 2>/dev/null | head -1) [ -n "$versioned" ] || continue base=$(basename "$versioned") ln -sf "$base" "/usr/lib/${lib}.so.1" 2>/dev/null || true ln -sf "${lib}.so.1" "/usr/lib/${lib}.so" 2>/dev/null || true done # Load modules via insmod (bypasses modules.dep — modloop squashfs is read-only) for mod in nvidia nvidia-modeset nvidia-uvm; do ko="$NVIDIA_KO_DIR/${mod}.ko" [ -f "$ko" ] || ko="$NVIDIA_KO_DIR/${mod//-/_}.ko" if [ -f "$ko" ]; then if insmod "$ko" 2>/dev/null; then einfo "loaded: $mod" else ewarn "failed to load: $mod" dmesg | tail -n 5 | sed 's/^/ dmesg: /' || true fi else ewarn "not found: $ko" fi done eend 0 }