- Added breakthrough section highlighting advanced bootc-image-builder discovery - Phase 1 marked as complete and ready for professional deployment - Documented integration opportunity and next steps - Recognized particle-os + bootc-image-builder as unified solution
203 lines
No EOL
6.7 KiB
Markdown
203 lines
No EOL
6.7 KiB
Markdown
# Debian Atomic Desktop Project
|
|
|
|
A project to create a Debian-based atomic desktop system using `bootc` and `OSTree`, inspired by `ublue-os`.
|
|
|
|
## Project Structure
|
|
|
|
This project is organized into phases:
|
|
|
|
### Phase 1: `01-debian-atomic/` ✅ Complete
|
|
- **Goal**: Create a minimal, bootable Debian Trixie atomic image
|
|
- **Status**: ✅ Complete
|
|
- **Contents**:
|
|
- `Containerfile` - Defines the base atomic image
|
|
- `justfile` - Build automation
|
|
- `README.md` - Phase 1 documentation
|
|
|
|
### Phase 2: `02-installer/` 🔄 In Progress
|
|
- **Goal**: Create a bootable ISO with Calamares installer using live-build
|
|
- **Status**: 🔄 In Progress (Contents file issues being resolved)
|
|
- **Contents**:
|
|
- `justfile` - Live-build automation
|
|
- `calamares/` - Installer configuration
|
|
- `config/` - Live-build configuration
|
|
- `scripts/` - Helper scripts
|
|
|
|
### Phase 2 Alternative: `02-installer-bootc/` 🔄 In Progress
|
|
- **Goal**: Modern approach using bootc + Calamares (Recommended)
|
|
- **Status**: 🔄 In Progress
|
|
- **Contents**:
|
|
- `Containerfile` - Bootc container definition
|
|
- `justfile` - Container build automation
|
|
- `scripts/` - Testing scripts
|
|
|
|
## 🚀 **BREAKTHROUGH: bootc-image-builder Integration**
|
|
|
|
**Phase 1 Complete + Advanced Integration Opportunity Discovered**
|
|
|
|
We have successfully completed Phase 1 (minimal bootable Debian atomic image) and discovered an existing advanced `bootc-image-builder` project with professional-grade infrastructure:
|
|
|
|
### ✅ **Phase 1 Achievements**
|
|
- ✅ **Valid bootc Container**: Passes all `bootc container lint` validation
|
|
- ✅ **Complete Disk Utilities**: All partitioning and filesystem tools working
|
|
- ✅ **Kernel Integration**: Linux kernel properly detected and accessible
|
|
- ✅ **OSTree Structure**: Proper atomic filesystem layout validated
|
|
- ✅ **Deployment Testing**: Core functionality verified and working
|
|
|
|
### 🎯 **Integration Opportunity**
|
|
- ✅ **Advanced Project Found**: bootc-image-builder with Phase 4.2 complete
|
|
- ✅ **Professional Infrastructure**: 100% test coverage, performance optimization
|
|
- ✅ **Production Ready**: Comprehensive osbuild stages, Go integration
|
|
- ✅ **Multiple Formats**: QCOW2, ISO, RAW artifact generation
|
|
- 🚀 **Perfect Timing**: particle-os foundation ready for professional deployment
|
|
|
|
### 🔗 **Next Steps**
|
|
1. **Locate/Clone** the advanced bootc-image-builder project
|
|
2. **Test Integration** with our validated particle-os image
|
|
3. **Generate Artifacts** using professional deployment pipeline
|
|
4. **Document Workflow** for unified particle-os + bootc-image-builder process
|
|
|
|
## Critical Prerequisites: Disk Utilities for bootc Deployment
|
|
|
|
**⚠️ CRITICAL REQUIREMENT:** Successful deployment using `bootc install to-disk` requires specific disk utilities that are often missing from minimal environments.
|
|
|
|
### Essential Disk Utilities
|
|
|
|
The following utilities must be available in your deployment environment:
|
|
|
|
- **`sfdisk`** (from `util-linux`) - **CRITICAL** for automated partitioning
|
|
- **`parted`** - Alternative partitioning tool
|
|
- **`mkfs.ext4`** (from `e2fsprogs`) - Filesystem creation
|
|
- **`mkfs.fat`** (from `dosfstools`) - FAT32 filesystem for EFI
|
|
- **`grub-install`** - Bootloader installation
|
|
- **`efibootmgr`** - UEFI boot manager
|
|
|
|
### Installation and Verification
|
|
|
|
```bash
|
|
# Install required utilities
|
|
sudo apt update
|
|
sudo apt install -y util-linux parted e2fsprogs dosfstools grub-efi-amd64 efibootmgr
|
|
|
|
# Verify availability (all should return paths)
|
|
which sfdisk parted mkfs.ext4 mkfs.fat grub-install efibootmgr
|
|
|
|
# Test sfdisk functionality
|
|
sfdisk --version
|
|
```
|
|
|
|
### Common Failure Points
|
|
|
|
- `error: Installing to disk: Creating rootfs: Failed to run sfdisk: No such file or directory`
|
|
- Missing filesystem creation tools
|
|
- Incomplete bootloader installation utilities
|
|
|
|
### Troubleshooting: PATH Issues in Minimal Environments
|
|
|
|
**Common Issue**: `sfdisk` exists but isn't found due to incomplete PATH in minimal environments.
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check if util-linux is installed
|
|
dpkg -l | grep util-linux
|
|
|
|
# Find sfdisk location
|
|
find / -name sfdisk 2>/dev/null
|
|
|
|
# Check current PATH
|
|
echo $PATH
|
|
|
|
# Test sfdisk directly
|
|
/usr/sbin/sfdisk --version
|
|
```
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Fix PATH and run bootc
|
|
sudo env PATH="/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin" \
|
|
podman run --rm --privileged --pid=host --volume /dev:/dev \
|
|
localhost/debian-atomic:latest /usr/bin/bootc install to-disk /dev/target-device
|
|
```
|
|
|
|
**Note:** This requirement affects all phases and deployment scenarios. See `scope.md` for detailed implementation guidance.
|
|
|
|
## Quick Start
|
|
|
|
1. **Verify Prerequisites** (Critical):
|
|
```bash
|
|
# Ensure disk utilities are available
|
|
which sfdisk parted mkfs.ext4 mkfs.fat grub-install efibootmgr
|
|
sfdisk --version
|
|
```
|
|
|
|
2. **Phase 1** (Atomic Image):
|
|
```bash
|
|
cd 01-debian-atomic
|
|
just build-image
|
|
just test-image
|
|
```
|
|
|
|
3. **Phase 2** (Traditional live-build approach):
|
|
```bash
|
|
cd 02-installer
|
|
just build-iso
|
|
```
|
|
|
|
4. **Phase 2 Alternative** (Modern bootc approach - Recommended):
|
|
```bash
|
|
cd 02-installer-bootc
|
|
just build-installer
|
|
just test-installer-systemd
|
|
```
|
|
|
|
## Which Approach Should You Use?
|
|
|
|
### For Phase 2, we recommend the **bootc approach** (`02-installer-bootc/`) because:
|
|
|
|
✅ **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
|
|
|
|
The traditional live-build approach (`02-installer/`) has many hook files and complex dependencies, which is why we created the bootc alternative.
|
|
|
|
## Prerequisites
|
|
|
|
- `just` command runner
|
|
- `podman` or `docker`
|
|
- `live-build` (for Phase 2 traditional approach)
|
|
- `qemu-system-x86_64` (for testing)
|
|
- **CRITICAL:** Complete disk utilities (`util-linux`, `parted`, `e2fsprogs`, `dosfstools`, `grub-efi-amd64`, `efibootmgr`)
|
|
|
|
## Performance Optimization
|
|
|
|
To speed up builds, use apt-cacher-ng:
|
|
|
|
```bash
|
|
# Set up apt-cacher-ng
|
|
./scripts/setup-apt-cacher.sh
|
|
|
|
# Then edit the justfile to enable the proxy
|
|
# In 02-installer/justfile, uncomment APT_CACHER_NG_PROXY
|
|
```
|
|
|
|
## Development
|
|
|
|
See `roadmap.md` for detailed project planning and `todo` for current tasks.
|
|
|
|
## Working Commands
|
|
|
|
See `WORKING_COMMANDS.md` for a comprehensive list of all tested and validated commands used throughout the project. This includes:
|
|
|
|
- Building and validating atomic images
|
|
- Testing bootc deployment methods
|
|
- Container management operations
|
|
- Troubleshooting commands
|
|
- Critical environment variables and requirements
|
|
|
|
All commands in `WORKING_COMMANDS.md` have been tested and validated.
|
|
|
|
## License
|
|
|
|
This project is open source. See individual files for specific licensing information. |