#!/bin/sh # 30-kernel-modules.sh — Load required kernel modules for K8s MODULES_LIST="/usr/lib/kubesolo-os/modules.list" if [ ! -f "$MODULES_LIST" ]; then log_warn "No modules list found at $MODULES_LIST" return 0 fi LOADED=0 FAILED=0 while IFS= read -r mod; do # Skip comments and blank lines case "$mod" in '#'*|'') continue ;; esac # NOTE: do NOT use tr -d '[:space:]' — Ubuntu's busybox-static 1.30.1 (used # in the ARM64 rootfs override) doesn't parse POSIX char classes and treats # them as a literal set, deleting [, :, s, p, a, c, e, ]. Use explicit # whitespace chars instead so the same script works under any tr. mod="$(printf '%s' "$mod" | tr -d ' \t\r\n')" if modprobe "$mod" 2>/dev/null; then LOADED=$((LOADED + 1)) else log_warn "Failed to load module: $mod (may be built-in)" FAILED=$((FAILED + 1)) fi done < "$MODULES_LIST" log_ok "Loaded $LOADED modules ($FAILED failed/built-in)"