Initial commit: Alpine Zero-OS initramfs build system with cleaned Docker configuration

This commit is contained in:
2025-08-15 22:11:44 +02:00
commit 9b14d94bbe
34 changed files with 12864 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
#!/bin/sh
set -e
INITRAMFS_ROOT="/build/initramfs"
FIRMWARE_DIR="$INITRAMFS_ROOT/lib/firmware"
echo "[+] Installing minimal network firmware (not full 600MB package)..."
# Create firmware directory
mkdir -p "$FIRMWARE_DIR"
# Install full linux-firmware temporarily to extract essentials
echo " Downloading linux-firmware package..."
cd /tmp
apk fetch linux-firmware
tar -xf linux-firmware-*.apk
# Extract only essential network firmware
echo " Extracting essential network drivers..."
# Intel Ethernet (most common)
if [ -d lib/firmware/intel ]; then
mkdir -p "$FIRMWARE_DIR/intel"
# e1000e, ixgbe, i40e, ice drivers
cp -r lib/firmware/intel/*e1000* "$FIRMWARE_DIR/intel/" 2>/dev/null || true
cp -r lib/firmware/intel/*ixgbe* "$FIRMWARE_DIR/intel/" 2>/dev/null || true
cp -r lib/firmware/intel/*i40e* "$FIRMWARE_DIR/intel/" 2>/dev/null || true
cp -r lib/firmware/intel/*ice* "$FIRMWARE_DIR/intel/" 2>/dev/null || true
echo " Intel ethernet firmware: $(du -sh $FIRMWARE_DIR/intel 2>/dev/null | cut -f1)"
fi
# Realtek Ethernet
if [ -d lib/firmware/rtl_nic ]; then
mkdir -p "$FIRMWARE_DIR/rtl_nic"
# r8169 driver
cp -r lib/firmware/rtl_nic/* "$FIRMWARE_DIR/rtl_nic/" 2>/dev/null || true
echo " Realtek ethernet firmware: $(du -sh $FIRMWARE_DIR/rtl_nic 2>/dev/null | cut -f1)"
fi
# Broadcom Ethernet
if [ -d lib/firmware/bnx2 ]; then
mkdir -p "$FIRMWARE_DIR/bnx2"
cp -r lib/firmware/bnx2/* "$FIRMWARE_DIR/bnx2/" 2>/dev/null || true
fi
if [ -d lib/firmware/tigon ]; then
mkdir -p "$FIRMWARE_DIR/tigon"
cp -r lib/firmware/tigon/* "$FIRMWARE_DIR/tigon/" 2>/dev/null || true
fi
# Essential system firmware
if [ -d lib/firmware/regulatory.db ]; then
cp lib/firmware/regulatory.db* "$FIRMWARE_DIR/" 2>/dev/null || true
fi
# Cleanup temporary files
cd /build
rm -rf /tmp/lib /tmp/linux-firmware-*
# Show firmware size
if [ -d "$FIRMWARE_DIR" ]; then
total_size=$(du -sh "$FIRMWARE_DIR" 2>/dev/null | cut -f1)
echo "[+] Essential firmware installed: $total_size (vs 600MB full package)"
else
echo "[-] Warning: No firmware installed"
fi
# Install essential ethernet kernel modules
echo " Installing essential ethernet kernel modules..."
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"
# 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..."
# 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)
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
# Broadcom drivers (bnx2, tg3, b44)
find "$KERNEL_BUILD_DIR" -name "bnx2.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
# Common dependencies (mii, mdio)
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
# Create modules.dep for module loading
if command -v depmod >/dev/null 2>&1; then
depmod -b "$INITRAMFS_ROOT" "${KERNEL_VERSION}-Zero-OS" 2>/dev/null || true
fi
module_count=$(find "$MODULES_DIR" -name "*.ko" | wc -l)
echo " Installed $module_count ethernet driver modules"
else
echo " Warning: Kernel build directory not found, modules may not be available"
fi
# Create essential kernel module directories that eudev expects
mkdir -p "$INITRAMFS_ROOT/lib/modules"
mkdir -p "$INITRAMFS_ROOT/sys/module"
mkdir -p "$INITRAMFS_ROOT/dev"
echo "[+] Minimal firmware and driver installation complete"