| .. | ||
| calamares-config | ||
| scripts | ||
| Containerfile | ||
| create-vm.sh | ||
| justfile | ||
| README.md | ||
| test-container-vm.sh | ||
| test-vm.sh | ||
Debian Atomic Desktop - Bootc Installer (Phase 2 Alternative)
This is an alternative approach to Phase 2 that uses bootc + Calamares instead of live-build. This approach is more modern and consistent with our atomic architecture.
Architecture Overview
Instead of using live-build to create a traditional installer ISO, this approach:
- Creates a bootc container that includes Calamares
- Calamares handles partitioning, user setup, and system configuration
- Post-install script uses
bootc installto deploy the atomic image - bootc creates the ISO from the container
Advantages Over Live-Build
- ✅ Consistent tooling - Everything uses bootc
- ✅ No sysvinit conflicts - Pure systemd environment
- ✅ Atomic guarantees - The installer itself is atomic
- ✅ Simpler maintenance - One build system instead of two
- ✅ Modern approach - Uses container-native tooling
Quick Start
Basic Workflow
-
Build the installer:
just build-installer -
Test the installer:
just test-installer-systemd -
Create ISO (when ready):
just create-iso
Full Test Workflow
For complete testing with KVM and VNC:
# Run the complete workflow
just test-full-workflow
This will:
- Build the installer container
- Create the ISO (when bootc ISO creation is implemented)
- Create a test VM with KVM and VNC access
Manual VM Testing
If you prefer to control each step:
# Build the installer
just build-installer
# Create test VM (requires KVM and libvirt)
just create-test-vm
# Start/stop the VM
just start-test-vm
just stop-test-vm
# Clean up
just destroy-test-vm
How It Works
1. Container Build
The Containerfile creates a bootc container with:
- Calamares installer
- bootc for atomic deployment
- Systemd services
- Partitioning tools
2. Calamares Configuration
settings.conf- Main Calamares configuration- Handles partitioning, user setup, etc.
- Calls our post-install script
3. Post-Install Script
post-install.sh- Uses bootc to deploy atomic image- Gets target device from Calamares
- Runs
bootc install to-disk
4. ISO Creation
- bootc creates bootable ISO from container
- ISO boots into Calamares installer
- Installer deploys atomic image
File Structure
02-installer-bootc/
├── Containerfile # Bootc container definition
├── justfile # Build automation
├── README.md # This file
├── calamares-config/ # Calamares configuration
│ └── settings.conf # Main Calamares settings
└── scripts/ # Installation scripts
└── post-install.sh # Bootc deployment script
Comparison with Live-Build Approach
| Aspect | Live-Build | Bootc + Calamares |
|---|---|---|
| Build System | live-build | bootc |
| Dependencies | Complex package conflicts | Clean container |
| Maintenance | Two build systems | One build system |
| Atomic Guarantees | Limited | Full atomic |
| Modern Tooling | Traditional | Container-native |
Next Steps
- Test the basic container - Verify Calamares works
- Configure Calamares - Add proper partitioning and user modules
- Test bootc deployment - Verify atomic image installation
- Create ISO - Use bootc to generate bootable ISO
- Integration testing - Test full installation flow
Prerequisites
podmanordockerjustbootcqemu(for testing)
For VM Testing
qemu-kvmlibvirt-daemon-systemlibvirt-clientsvirt-install- User in
libvirtgroup virt-manager(optional, for GUI management)
This approach should eliminate the sysvinit conflicts we encountered with live-build and provide a cleaner, more modern installer experience.