fix: Complete Zero-OS initramfs networking and script permissions

- Add net_failover and failover modules for virtio_net dependency resolution
- Copy modules from both drivers/net and net/ kernel directories
- Fixes 'Unknown symbol net_failover_destroy/create' errors when loading virtio_net
- Set execute permissions on all zinit init scripts (*.sh files)
- Include proper kernel module metadata files (modules.order, modules.builtin, modules.builtin.modinfo)
- Expanded module search to include failover-related networking modules
- Now includes 77 network driver modules with complete dependency chain
- Ensures depmod -a works correctly without warnings
- Complete VirtIO network stack functionality with proper script execution
This commit is contained in:
2025-08-16 23:46:45 +02:00
parent bf62e887e8
commit 7c4ab9dd7b
8 changed files with 41 additions and 4 deletions

0
configs/zinit/init/ashloging.sh Normal file → Executable file
View File

0
configs/zinit/init/cgroup.sh Normal file → Executable file
View File

0
configs/zinit/init/modprobe.sh Normal file → Executable file
View File

0
configs/zinit/init/ntpd.sh Normal file → Executable file
View File

0
configs/zinit/init/routing.sh Normal file → Executable file
View File

0
configs/zinit/init/sshd-setup.sh Normal file → Executable file
View File

0
configs/zinit/init/udev.sh Normal file → Executable file
View File

View File

@@ -141,12 +141,21 @@ 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 using a more reliable method
find "$KERNEL_BUILD_DIR" -name "*.ko" | grep -E "(e1000|r8169|bnx2|tg3|virtio|igb|ixgbe|i40e|ice|atl1|alx|8139|b44|mii|mdio|libphy)" | while read ko; do
# 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)" | 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/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
@@ -154,10 +163,38 @@ if [ -d "$KERNEL_BUILD_DIR" ]; then
actual_modules=$(find "$MODULES_DIR" -name "*.ko" 2>/dev/null | wc -l)
echo " Installed $actual_modules network driver modules"
# Create basic module dependency files
# Copy essential kernel module metadata files from kernel build
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
if [ -f "$KERNEL_BUILD_DIR/modules.builtin" ]; 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
if [ -f "$KERNEL_BUILD_DIR/modules.builtin.modinfo" ]; 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