Building the ISO
Work in progress. The build pipeline runs end-to-end, but live-boot reliability and the Calamares installer are still being stabilized. Expect rough edges.
Requirements
- Arch-based host (Arch, Manjaro, EndeavourOS, CachyOS) —
makepkgandpacmanare required for the kernel build step - 16 GB+ RAM
- 60 GB+ free disk space
- Internet connection (packages are downloaded during build)
- A CachyOS desktop ISO placed in
build-deps/
Step 0 — Get the source ISO
Download the CachyOS desktop ISO and place it in build-deps/:
build-deps/cachyos-desktop-linux-260308.iso
Update scripts/build.config if your filename differs:
ISO_FILE="cachyos-desktop-linux-260308.iso"
PROJECT_ROOT="/absolute/path/to/jarvisos"
Step 1 — Install host build tools
cd scripts
sudo bash 00-install-prereq.sh
This detects your host distro and installs arch-install-scripts, squashfs-tools, xorriso,
p7zip, dosfstools, fakeroot, git, curl, and python3.
Step 2 — Run the full build
cd scripts
make all
Or run steps individually when debugging — see The Build Pipeline for what each one does:
make step1 # Extract CachyOS ISO
make step2 # Unsquash rootfs → build/iso-rootfs/
make step3 # Install KDE Plasma Wayland + all system packages into rootfs
make step3b # Build linux-jarvisos kernel + install into rootfs
make step4 # Install Project-JARVIS daemon
make step5 # Install Calamares installer
make step6 # Repack rootfs into SquashFS
make step7 # Assemble final bootable ISO → build/jarvisos-YYYYMMDD-x86_64.iso
Estimated total time: 60–120 min depending on CPU and network — kernel compilation is the bottleneck (see Building the Kernel for ways to speed this up).
Step 3 — Test in QEMU
./scripts/booter.sh # Boot with UEFI (recommended)
./scripts/booter.sh --bios # Or boot with BIOS
Step 4 — Write to USB
sudo dd if=build/jarvisos-*-x86_64.iso of=/dev/sdX bs=4M status=progress conv=fsync
Boot from USB and use the Calamares installer on the desktop.
Current status
| Area | Status |
|---|---|
| ISO build pipeline | Working — full build completes without errors |
| Live boot (BIOS) | Working — boots to KDE Plasma desktop |
| Live boot (UEFI) | Working — efiboot.img dynamically sized, EFI stub enforced |
| WiFi on live boot | Working — NetworkManager + wpa_supplicant backend |
| Audio on live boot | Working — PipeWire with rtkit-daemon |
| Touchpad on live boot | Working — libinput + psmouse/i2c_hid modules |
| Calamares installer | In progress — installs, but post-install configuration needs work |