Jan De Landtsheer d94a4829a2 Add cleanup script and remove unused git version variables
- Add comprehensive cleanup script (scripts/cleanup.sh) to remove build artifacts
- Remove unused VERGEN_GIT_* environment variables from Rust build functions
- Cleanup script preserves source code while removing outputs, cache, and temp files
2025-08-16 20:21:51 +02:00
2025-08-16 00:52:30 +02:00
2025-08-16 00:52:30 +02:00

Alpine-based Zero-OS Initramfs

Modern Alpine Linux based approach to building Zero-OS initramfs, replacing the complex build-from-source system with Alpine packages.

Architecture Overview

This system uses:

  • Alpine Linux LTS as base system (latest packages, no building from source)
  • Alpine kernel with embedded essential storage/ethernet modules
  • GitHub components: zinit, core-x, seektime, rfs (only custom builds needed)
  • Same init flow: tmpfs copy approach for compatibility
  • Alpine packages: All standard tools (busybox, openssh, btrfs-progs, etc.)

Directory Structure

alpine-initramfs/
├── build/                     # Build orchestration
│   ├── Dockerfile.alpine      # Alpine build environment
│   ├── docker-compose.yml     # Build orchestration
│   └── build-initramfs.sh     # Main build script
├── configs/                   # Configuration files
│   ├── packages.txt           # Alpine packages to install
│   ├── kernel-modules.txt     # Essential modules to embed
│   ├── init                   # Custom init script (Alpine → zinit)
│   └── zinit/                 # Zinit service configs (from ../config/etc/zinit/)
├── scripts/                   # Build helper scripts
│   ├── fetch-github.sh        # Download zinit, core-x, seektime, rfs
│   ├── install-packages.sh    # Install Alpine packages to initramfs
│   ├── setup-initramfs.sh     # Create initramfs structure
│   └── build-kernel.sh        # Build kernel with embedded initramfs
├── output/                    # Build artifacts
│   ├── initramfs.cpio.xz      # Generated initramfs
│   ├── vmlinuz.efi            # Final bootable kernel
│   └── modules/               # Kernel modules
└── docs/                      # Documentation
    ├── PACKAGES.md            # Package mapping (old build → Alpine)
    ├── MODULES.md             # Kernel modules reference
    └── BUILD.md               # Build process guide

Build Flow

  1. Alpine Environment: Setup Alpine LTS build container
  2. Package Installation: Install all required Alpine packages
  3. GitHub Components: Fetch zinit, core-x, seektime, rfs from releases
  4. Initramfs Assembly: Create filesystem structure with same tmpfs approach
  5. Kernel Build: Compile Alpine kernel with embedded essential modules
  6. Output: Generate bootable vmlinuz.efi with embedded initramfs

Quick Start

cd alpine-initramfs/build
docker compose build
docker compose run --rm builder
# Output: ../output/vmlinuz.efi

Key Advantages

  • No source compilation - Use Alpine's maintained packages
  • Latest versions - Always current with Alpine package updates
  • Faster builds - Minutes vs hours
  • Smaller footprint - Alpine's minimal design
  • Same functionality - Identical init flow and service management
  • Better maintenance - Package updates handled by Alpine team
Description
dockerized/podman-ized build system for zos, based on Alpine pakaging system, zinit and zos-specific binaries
Readme 147 MiB
Languages
Shell 99.5%
Dockerfile 0.5%