deb-bootc-image-builder/containerfiles/readme.md
robojerk 126ee1a849
Some checks failed
particle-os CI / Test particle-os (push) Failing after 1s
particle-os CI / Integration Test (push) Has been skipped
particle-os CI / Security & Quality (push) Failing after 1s
Test particle-os Basic Functionality / test-basic (push) Failing after 1s
particle-os CI / Build and Release (push) Has been skipped
cleanup
2025-08-27 12:30:24 -07:00

162 lines
5.2 KiB
Markdown

# Containerfiles Directory
This directory contains container definitions for building different variants of **Particle OS** - a Debian-native immutable operating system built with OSTree and bootc.
## Overview
These containerfiles define the base images that will be processed by your `deb-bootc-image-builder` tool to create bootable disk images. Each containerfile represents a different system variant with specific characteristics and use cases.
## Container Variants
### 1. `Containerfile.debian-trixie-minimal`
**Purpose**: Minimal base system for server and embedded deployments
**Characteristics**:
- **Base**: Debian Trixie (testing)
- **Desktop**: None (headless)
- **Size**: Minimal footprint
- **Use Case**: Servers, containers, embedded systems, CI/CD runners
**Key Features**:
- Core system packages only
- OSTree integration for atomic updates
- Bootc compatibility
- Network management tools
- Essential system utilities
**Target Audience**: System administrators, DevOps engineers, embedded developers
---
### 2. `Containerfile.debian-trixie-kde`
**Purpose**: Full desktop environment with KDE Plasma
**Characteristics**:
- **Base**: Debian Trixie (testing)
- **Desktop**: KDE Plasma Desktop Environment
- **Size**: Full desktop installation
- **Use Case**: Desktop workstations, development machines, user-facing systems
**Key Features**:
- Complete KDE Plasma desktop
- Full application suite (Dolphin, Konsole, Kate, Firefox)
- Audio and graphics support
- Auto-login configuration for testing
- OSTree + bootc integration
**Target Audience**: Desktop users, developers, content creators, general users
---
### 3. `Containerfile.particle-os`
**Purpose**: Core Particle OS system (original reference implementation)
**Characteristics**:
- **Base**: Debian Trixie-slim
- **Desktop**: None (minimal)
- **Size**: Lightweight but complete
- **Use Case**: Reference implementation, base for other variants
**Key Features**:
- Core system components
- OSTree boot configuration
- Systemd services
- Basic user environment
- Clean, minimal approach
**Target Audience**: Developers, system integrators, reference implementation
---
## How They Work Together
### Build Process
1. **Container Build**: Each containerfile builds a specific system variant
2. **Image Processing**: Your `deb-bootc-image-builder` tool processes these containers
3. **Bootable Image**: Creates bootable disk images (raw, qcow2, vmdk, vdi)
4. **Deployment**: Images can be deployed to physical hardware or virtual machines
### Variant Selection
- **Minimal**: Choose for servers, embedded systems, or when you need a small footprint
- **KDE**: Choose for desktop workstations or when you need a full GUI environment
- **Core**: Choose as a base for custom variants or when you need the reference implementation
## Technical Details
### OSTree Integration
All variants include OSTree configuration for:
- Atomic system updates
- Rollback capability
- Immutable system design
- Bootc compatibility
### Bootc Compatibility
Each container is designed to work with the bootc system:
- Proper filesystem structure
- Bootloader configuration
- Kernel and initramfs setup
- Systemd service configuration
### Debian Foundation
All variants are built on Debian Trixie:
- Latest testing packages
- Debian package ecosystem
- Debian security updates
- Debian community support
## Usage Examples
### Building a Minimal Server
```bash
# Build the minimal container
podman build -f containerfiles/Containerfile.debian-trixie-minimal -t particle-os-minimal .
# Process with deb-bootc-image-builder
./bib/particle-os build --base-image particle-os-minimal recipes/server.yml
```
### Building a Desktop System
```bash
# Build the KDE desktop container
podman build -f containerfiles/Containerfile.debian-trixie-kde -t particle-os-kde .
# Process with deb-bootc-image-builder
./bib/particle-os build --base-image particle-os-kde recipes/desktop.yml
```
### Custom Variants
```bash
# Use the core container as a base
podman build -f containerfiles/Containerfile.particle-os -t particle-os-core .
# Add your custom packages and configuration
# Then process with deb-bootc-image-builder
```
## Development Workflow
1. **Modify Containerfiles**: Adjust package selection, configuration, or features
2. **Build Containers**: Test your changes with `podman build`
3. **Test Integration**: Verify OSTree and bootc compatibility
4. **Create Images**: Use deb-bootc-image-builder to create bootable images
5. **Test Boot**: Verify the images boot correctly in QEMU or on hardware
## Contributing
When adding new container variants:
- Follow the existing naming convention
- Include comprehensive documentation
- Test OSTree and bootc integration
- Update this readme with new variant information
- Ensure compatibility with deb-bootc-image-builder
## Related Documentation
- **Main README**: Project overview and getting started
- **HACKING.md**: Development guidelines
- **Recipes**: YAML configuration files for image building
- **OSTree Workspace**: OSTree development and testing tools
---
*These containerfiles represent the foundation of Particle OS - a Debian-native approach to immutable operating systems, built with the same principles as Fedora Atomic but adapted for the Debian ecosystem.*