- Changed UID/GID to USER_UID/USER_GID to avoid bash readonly variable error
- Updated both build.sh and docker-compose.yml with new variable names
- Fixes 'UID: readonly variable' error during clean build process
Now './build.sh --clean' should work without variable conflicts.
- Added user mapping (UID:GID) to Docker Compose services to prevent root-owned files
- Export current user's UID/GID in build.sh for Docker Compose
- Enhanced clean build to handle permission issues gracefully:
* Try normal cleanup first
* Fallback to container-based cleanup for root-owned files
* Ultimate fallback to sudo if needed
- Added cleanup for all Docker volumes (build, source, kernel, target caches)
Fixes 'Permission denied' errors when cleaning output files created by Docker containers.
- Added upx package to Dockerfile.alpine build dependencies
- Added optimize_binary() function to compile-components.sh
- Automatically strips debug symbols from all Zero-OS binaries
- Applies UPX compression with --best --lzma for maximum size reduction
- Optimizes binaries in both initramfs and output directories
- Shows size reduction stats (original → stripped → compressed)
- Graceful fallback if UPX fails, keeping stripped version
This significantly reduces initramfs size by compressing zinit, rfs, and mycelium binaries.
- Fixed resolve-module-dependencies.sh to handle missing modules gracefully
- Removed destructive 'set -e' behavior that caused immediate exit on missing modules
- Enhanced install-firmware-minimal.sh to handle partial success scenarios
- Fixed install-packages.sh to preserve installed kernel modules (was deleting them)
- Improved setup-initramfs.sh to ensure modules directory always exists
- Now successfully installs 43 essential kernel modules in final initramfs
- Fixes 'depmod: ERROR: could not open directory /lib/modules' boot issue
All kernel modules (.ko files) are now properly included in the final cpio archive.
- Added pps_core.ko module installation for PTP subsystem dependency
- Updated grep patterns in both scripts to include 'pps' modules
- Fixes 'Unknown symbol pps_register_source' errors for PTP functionality
- Ensures complete PTP/PPS dependency chain for e1000e and other drivers
- Added scsi_mod.ko and sd_mod.ko for virtio_scsi dependency resolution
- Added ptp.ko for e1000e and other ethernet driver PTP functionality
- Fixes 'Unknown symbol' errors during module loading at boot
- Ensures all network and storage drivers have proper dependencies
- Added chroot + depmod -a step in setup-initramfs.sh before cpio creation
- Generates module dependencies within the actual initramfs environment
- Includes bind mounting of /proc, /sys, /dev for proper chroot operation
- Ensures TUN module and all network modules have correct dependencies
- Complements existing build-time depmod in install-firmware-minimal.sh
- Added tun.ko module installation to scripts/install-firmware-minimal.sh
- Essential for Mycelium's tunnel networking functionality
- Module will be installed alongside other network drivers during build
- Added depmod.yaml service for rebuilding kernel module dependencies
- Added network.yaml service for DHCP network configuration with proper dependencies
- Cleaned up udev.sh to remove depmod call (now handled by dedicated service)
- Updated udev-trigger.yaml to depend on depmod for proper module loading order
- Ensures overlay.ko and other kernel modules have correct dependencies before hardware detection
- Added overlay.ko module installation for container support in install-firmware-minimal.sh
- Added udevmon service for hardware event monitoring
- Updated udev-trigger dependency to include udevmon
- Added placeholder configurations for mycelium and shm services
- 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
- Update README.md to reflect git subtree + workspace architecture
- Document unified build process with 'cargo build --workspace'
- Add component update instructions using git subtree pull
- Remove references to git submodules and setup-submodules.sh
- Update development workflow with workspace commands
- Document new directory structure with Cargo.toml at root
CRITICAL FIXES:
- Fix build-initramfs.sh early exit preventing zinit installation
- Add binary detection/installation logic to setup-initramfs.sh
- Ensure compiled components are properly installed to initramfs
DOCUMENTATION:
- Update README.md to reflect actual implementation
- Document source compilation approach with git submodules
- Add development workflow and caching documentation
- Remove outdated GitHub releases references
This fixes the 'zinit not found' boot error by ensuring the build
pipeline completes all phases including initramfs assembly.
- Add openssl-libs-static package to both Dockerfiles
- Add pkgconfig for proper SSL library detection
- Fixes mycelium compilation error with missing -lssl and -lcrypto
- Add cargo to PATH in dev-shell service
- Add target-cache volume for Rust build caching
- Use login shell to properly source cargo environment
- Keeps existing build infrastructure and caching strategy
- Add binary detection logic for RFS build to handle different binary names
- Remove non-existent 'vendored-openssl' feature from mycelium build
- Add debugging output to show actual build results