Embellishments for module dependencies and initramfs bootup sequence

- add recursive module dependencies based on porper tools (modinfo)
  - fix zinit boot sequences
    - /dev/shm mount for alpine-built haveged
    - mycelium
    - rfs copy fixes
    - better sequencing overall (god I miss 'before:'
This commit is contained in:
2025-08-20 09:35:18 +02:00
parent 4a24580b05
commit 56c3813609
10 changed files with 368 additions and 131 deletions

View File

@@ -129,47 +129,20 @@ if [ "$BINARIES_FOUND" = "false" ]; then
echo "[DEBUG] Make sure to run compile-components.sh before setup-initramfs.sh"
fi
# Install kernel modules for network interfaces
echo " Installing essential network kernel modules..."
# Kernel modules are now installed by install-firmware-minimal.sh using automatic dependency resolution
echo " Kernel modules installed by firmware installation script with automatic dependency resolution"
# Copy essential kernel module metadata files from kernel build if they exist
KERNEL_VERSION=$(cat /build/configs/kernel-version)
MODULES_DIR="$INITRAMFS_ROOT/lib/modules/${KERNEL_VERSION}-Zero-OS"
mkdir -p "$MODULES_DIR/kernel/drivers/net/ethernet"
mkdir -p "$MODULES_DIR/kernel/drivers/net"
mkdir -p "$MODULES_DIR/kernel/drivers"
KERNEL_BUILD_DIR="/build/kernel/linux-${KERNEL_VERSION}"
if [ -d "$KERNEL_BUILD_DIR" ]; then
echo " Copying essential ethernet drivers from kernel build..."
# Copy essential network driver modules and their dependencies
find "$KERNEL_BUILD_DIR" -name "*.ko" | grep -E "(e1000|r8169|bnx2|tg3|virtio|igb|ixgbe|i40e|ice|atl1|alx|8139|b44|mii|mdio|libphy|net_failover|failover|tun|ptp|pps|scsi|overlay)" | while read ko; do
if [ -f "$ko" ]; then
cp "$ko" "$MODULES_DIR/kernel/drivers/net/ethernet/" 2>/dev/null || \
cp "$ko" "$MODULES_DIR/kernel/drivers/net/" 2>/dev/null || \
cp "$ko" "$MODULES_DIR/kernel/drivers/" 2>/dev/null || \
cp "$ko" "$MODULES_DIR/kernel/net/" 2>/dev/null
fi
done
# Also copy any net_failover modules from net/ directory
find "$KERNEL_BUILD_DIR" -path "*/net/*" -name "*failover*.ko" | while read ko; do
if [ -f "$ko" ]; then
mkdir -p "$MODULES_DIR/kernel/net/"
cp "$ko" "$MODULES_DIR/kernel/net/"
fi
done
# Count actual installed modules
actual_modules=$(find "$MODULES_DIR" -name "*.ko" 2>/dev/null | wc -l)
echo " Installed $actual_modules network driver modules"
# Copy essential kernel module metadata files from kernel build
if [ -d "$KERNEL_BUILD_DIR" ] && [ -d "$MODULES_DIR" ]; then
echo " Copying kernel module metadata files..."
if [ -f "$KERNEL_BUILD_DIR/modules.order" ]; then
cp "$KERNEL_BUILD_DIR/modules.order" "$MODULES_DIR/"
echo " ✓ modules.order copied"
else
echo " Warning: modules.order not found in kernel build"
touch "$MODULES_DIR/modules.order"
fi
@@ -177,7 +150,6 @@ if [ -d "$KERNEL_BUILD_DIR" ]; then
cp "$KERNEL_BUILD_DIR/modules.builtin" "$MODULES_DIR/"
echo " ✓ modules.builtin copied"
else
echo " Warning: modules.builtin not found in kernel build"
touch "$MODULES_DIR/modules.builtin"
fi
@@ -185,18 +157,10 @@ if [ -d "$KERNEL_BUILD_DIR" ]; then
cp "$KERNEL_BUILD_DIR/modules.builtin.modinfo" "$MODULES_DIR/"
echo " ✓ modules.builtin.modinfo copied"
else
echo " Warning: modules.builtin.modinfo not found in kernel build"
touch "$MODULES_DIR/modules.builtin.modinfo"
fi
# Create basic module dependency files (these will be updated by depmod)
touch "$MODULES_DIR/modules.dep"
touch "$MODULES_DIR/modules.alias"
touch "$MODULES_DIR/modules.symbols"
echo " Module metadata files installed"
else
echo " Warning: Kernel build directory not found at $KERNEL_BUILD_DIR"
fi
# Copy other system configurations