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:
@@ -79,98 +79,56 @@ else
|
||||
echo "[-] Warning: No firmware installed"
|
||||
fi
|
||||
|
||||
# Install essential ethernet kernel modules
|
||||
echo " Installing essential ethernet kernel modules..."
|
||||
# Install essential kernel modules using automatic dependency resolution
|
||||
echo " Installing essential kernel modules with automatic dependency resolution..."
|
||||
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"
|
||||
|
||||
# Copy essential ethernet driver modules from the built kernel
|
||||
KERNEL_BUILD_DIR="/build/kernel/linux-${KERNEL_VERSION}"
|
||||
|
||||
if [ -d "$KERNEL_BUILD_DIR" ]; then
|
||||
echo " Copying ethernet drivers from kernel build..."
|
||||
echo " Using modinfo-based dependency resolver..."
|
||||
|
||||
# Intel drivers (e1000, e1000e, igb, ixgbe, i40e, ice)
|
||||
find "$KERNEL_BUILD_DIR" -name "e1000.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "e1000e.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "igb.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "ixgbe.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "i40e.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "ice.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
|
||||
# Realtek drivers (r8169, 8139too, 8139cp)
|
||||
find "$KERNEL_BUILD_DIR" -name "r8169.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "8139too.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "8139cp.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
|
||||
# Broadcom drivers (bnx2, bnx2x, tg3, b44, b43, b43legacy)
|
||||
find "$KERNEL_BUILD_DIR" -name "bnx2.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "bnx2x.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "tg3.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "b44.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
|
||||
# Atheros drivers (atl1, atl1e, atl1c, alx)
|
||||
find "$KERNEL_BUILD_DIR" -name "atl1.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "atl1e.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "atl1c.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "alx.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/ethernet/" \; 2>/dev/null || true
|
||||
|
||||
# VirtIO network driver
|
||||
find "$KERNEL_BUILD_DIR" -name "virtio_net.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "virtio.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "virtio_ring.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "virtio_pci.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/" \; 2>/dev/null || true
|
||||
|
||||
# Common dependencies (mii, mdio, libphy)
|
||||
find "$KERNEL_BUILD_DIR" -name "mii.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "mdio.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "libphy.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
|
||||
# SCSI subsystem dependencies (for virtio_scsi)
|
||||
mkdir -p "$MODULES_DIR/kernel/drivers/scsi"
|
||||
find "$KERNEL_BUILD_DIR" -name "scsi_mod.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/scsi/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "sd_mod.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/scsi/" \; 2>/dev/null || true
|
||||
|
||||
# PTP subsystem dependencies (for e1000e and other ethernet drivers)
|
||||
mkdir -p "$MODULES_DIR/kernel/drivers/ptp"
|
||||
mkdir -p "$MODULES_DIR/kernel/drivers/pps"
|
||||
find "$KERNEL_BUILD_DIR" -name "ptp.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/ptp/" \; 2>/dev/null || true
|
||||
find "$KERNEL_BUILD_DIR" -name "pps_core.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/pps/" \; 2>/dev/null || true
|
||||
|
||||
# Filesystem drivers (overlay for container support)
|
||||
find "$KERNEL_BUILD_DIR" -name "overlay.ko" -exec cp {} "$MODULES_DIR/kernel/fs/" \; 2>/dev/null || true
|
||||
|
||||
# Tunnel drivers (tun for Mycelium networking)
|
||||
find "$KERNEL_BUILD_DIR" -name "tun.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
|
||||
# Create modules directories
|
||||
mkdir -p "$MODULES_DIR/kernel/drivers"
|
||||
mkdir -p "$MODULES_DIR/kernel/fs"
|
||||
|
||||
# Create modules.dep and modules.alias for module loading
|
||||
echo " Creating module dependency files..."
|
||||
if command -v depmod >/dev/null 2>&1; then
|
||||
depmod -b "$INITRAMFS_ROOT" "${KERNEL_VERSION}-Zero-OS" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Create a simple modules.dep file if depmod is not available
|
||||
if [ ! -f "$MODULES_DIR/modules.dep" ]; then
|
||||
touch "$MODULES_DIR/modules.dep"
|
||||
touch "$MODULES_DIR/modules.alias"
|
||||
touch "$MODULES_DIR/modules.symbols"
|
||||
fi
|
||||
|
||||
module_count=$(find "$MODULES_DIR" -name "*.ko" | wc -l)
|
||||
echo " Installed $module_count ethernet driver modules"
|
||||
|
||||
# List installed modules for debugging
|
||||
if [ $module_count -gt 0 ]; then
|
||||
echo " Modules installed:"
|
||||
find "$MODULES_DIR" -name "*.ko" -exec basename {} \; | sort | sed 's/^/ /'
|
||||
# Use the automatic dependency resolver with essential modules list
|
||||
if /build/scripts/resolve-module-dependencies.sh \
|
||||
-k "$KERNEL_BUILD_DIR" \
|
||||
-m "$MODULES_DIR" \
|
||||
-v "${KERNEL_VERSION}-Zero-OS" \
|
||||
/build/configs/modules-essential.list; then
|
||||
|
||||
echo " ✓ Automatic module dependency resolution completed successfully"
|
||||
|
||||
# Count installed modules
|
||||
module_count=$(find "$MODULES_DIR" -name "*.ko" 2>/dev/null | wc -l)
|
||||
echo " Installed $module_count kernel modules with complete dependency chains"
|
||||
|
||||
# Create modules.dep and modules.alias for module loading
|
||||
echo " Creating module dependency files..."
|
||||
if command -v depmod >/dev/null 2>&1; then
|
||||
depmod -b "$INITRAMFS_ROOT" "${KERNEL_VERSION}-Zero-OS" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Create basic module files if depmod failed
|
||||
if [ ! -f "$MODULES_DIR/modules.dep" ]; then
|
||||
touch "$MODULES_DIR/modules.dep"
|
||||
touch "$MODULES_DIR/modules.alias"
|
||||
touch "$MODULES_DIR/modules.symbols"
|
||||
fi
|
||||
|
||||
else
|
||||
echo " Warning: Automatic dependency resolution failed, falling back to manual installation"
|
||||
# Fallback to minimal manual installation
|
||||
mkdir -p "$MODULES_DIR/kernel/drivers/net"
|
||||
|
||||
# Install only the most critical modules manually
|
||||
for module in tun e1000e virtio_net overlay; do
|
||||
find "$KERNEL_BUILD_DIR" -name "${module}.ko" -exec cp {} "$MODULES_DIR/kernel/drivers/net/" \; 2>/dev/null || true
|
||||
done
|
||||
|
||||
module_count=$(find "$MODULES_DIR" -name "*.ko" 2>/dev/null | wc -l)
|
||||
echo " Fallback: Installed $module_count essential modules"
|
||||
fi
|
||||
else
|
||||
echo " Warning: Kernel build directory not found, modules may not be available"
|
||||
echo " Warning: Kernel build directory not found at $KERNEL_BUILD_DIR"
|
||||
fi
|
||||
|
||||
# Create essential kernel module directories that eudev expects
|
||||
|
||||
Reference in New Issue
Block a user