ISO builder for LevitateOS. Downloads Rocky Linux 10, extracts packages, builds EROFS rootfs, outputs bootable ISO.
Alpha. Boots in QEMU. Limited bare metal testing.
| Works | Doesn't work / Not tested |
|---|---|
| QEMU boot (UEFI + BIOS) | Most bare metal hardware |
| EROFS live root | Custom kernel (uses Rocky's) |
| busybox initramfs | Secure boot |
| Rocky package extraction | Non-x86_64 architectures |
Rocky Linux 10 ISO → extract packages → EROFS rootfs → initramfs → bootable ISO
- Downloads Rocky Linux 10 ISO (9.3GB)
- Extracts rootfs via
unsquashfs - Copies binaries + library dependencies
- Builds EROFS live filesystem
- Creates busybox initramfs (~1MB)
- Packages ISO with xorriso
| File | Size | Description |
|---|---|---|
output/levitateos-x86_64.iso |
~800MB | Bootable ISO (UEFI + BIOS) |
output/filesystem.erofs |
~700MB | EROFS compressed root filesystem |
output/initramfs-tiny.cpio.gz |
~1MB | Busybox init + kernel modules |
Sizes are approximate. Actual sizes depend on package selection.
cargo run -- build # Full build (downloads 9.3GB Rocky ISO on first run)
cargo run -- run # Boot in QEMU (GUI, UEFI)
cargo run -- preflight # Check dependencies before buildingcargo run -- build rootfs # Build EROFS rootfs only
cargo run -- build initramfs # Build initramfs only
cargo run -- build iso # Build ISO only
cargo run -- build kernel # Build kernel onlycargo run -- download rocky # Fetch Rocky ISO
cargo run -- download linux # Fetch Linux kernel source
cargo run -- download tools # Build/fetch recstrap, recfstab, recchroot
cargo run -- extract rocky # Extract Rocky ISO contents
cargo run -- extract rootfs # Extract rootfs for inspectioncargo run -- clean # Remove build outputs (preserves downloads)
cargo run -- clean all # Remove everything including downloads
cargo run -- show config # Show current configuration
cargo run -- show rootfs # List rootfs contents- systemd-boot loads UKI from /EFI/Linux/
- UKI contains kernel + initramfs + cmdline
- Busybox init mounts ISO, finds EROFS rootfs
- Creates overlay: EROFS (ro) + tmpfs (rw)
switch_rootto overlay- systemd starts as PID 1
Boot entries:
levitateos-live.efi- Normal bootlevitateos-emergency.efi- Emergency shelllevitateos-debug.efi- Debug mode
downloads/ # Cached downloads (gitignored)
├── Rocky-10.1-x86_64-dvd1.iso # 9.3GB
├── rootfs/ # Extracted squashfs from Rocky
├── iso-contents/ # EFI files, kernel, etc.
├── linux/ # Kernel source (git clone)
└── busybox-static # Static busybox binary
output/ # Build artifacts (gitignored)
├── filesystem.erofs # EROFS compressed rootfs
├── initramfs-tiny.cpio.gz
├── initramfs-tiny-root/ # Initramfs staging directory
├── rootfs-staging/ # Rootfs staging directory
└── levitateos-x86_64.iso
profile/ # Live system customization
├── init_tiny # Busybox init script
├── etc/ # Config file overlays
├── live-overlay/ # Files overlaid on rootfs
└── root/ # Root home directory overlay
- Rust (edition 2021)
- unsquashfs (squashfs-tools)
- xorriso
- mkfs.erofs (erofs-utils 1.8+)
- ukify (systemd-ukify)
- systemd-boot
- 20GB free disk space
- Uses Rocky's kernel, not custom-built
- No secure boot support
- Kernel module selection is hardcoded
- WiFi firmware included but not tested on real hardware
MIT