# Debian bootc base images This repository contains the configuration and tooling to create minimal Debian base images for the bootc ecosystem. These images serve as templates that bootc-image-builder can use to create bootable disk images. ## Overview Debian bootc base images are minimal container images that contain only the essential packages and configuration needed for a bootable Debian system. They are designed to work with the bootc ecosystem tools like `bootc-image-builder` and `osbuild`. ## Architecture The repository follows the same architecture as Fedora's bootc-base-images: - **Minimal templates**: These are minimal base images, not complete populated systems - **Component-based**: Each image type (minimal, standard, iot) is composed of reusable components - **OSTree-ready**: Images are designed to work with OSTree for atomic updates ## Image Types ### Minimal (`debian-minimal`) - Essential boot infrastructure - Basic system tools - OSTree support - GRUB bootloader ### Standard (`debian-standard`) - Everything from minimal - Additional system utilities - Network tools - Development tools ### IoT (`debian-iot`) - Everything from minimal - IoT-specific packages - Container runtime support - Monitoring tools ## Building Images ### Prerequisites - Podman with fuse support - Build tools (apt-ostree, selinux-policy-default, python3) ### Basic Build ```bash # Build with default apt-cache-ng proxy ./build.sh # Build without proxy (direct to Debian repositories) ./build.sh "" # Build with custom proxy ./build.sh "http://your-proxy:3142" ``` ### Manual Build ```bash # Build with proxy podman build \ --security-opt=label=disable \ --cap-add=all \ --device /dev/fuse \ --build-arg APT_CACHER_NG_PROXY="http://192.168.1.101:3142" \ -t localhost/debian-bootc:minimal \ . # Build without proxy podman build \ --security-opt=label=disable \ --cap-add=all \ --device /dev/fuse \ --build-arg APT_CACHER_NG_PROXY="" \ -t localhost/debian-bootc:minimal \ . ``` ## Apt-Cache-NG Proxy Configuration The build system supports apt-cache-ng proxy configuration for faster builds and offline development: ### With Proxy (Default) ```bash ./build.sh "http://192.168.1.101:3142" ``` ### Without Proxy ```bash ./build.sh "" ``` ### Custom Proxy ```bash ./build.sh "http://your-cache-server:3142" ``` When no proxy is specified, the build system automatically falls back to direct Debian repository URLs. ## Debian Versions - **13 (Trixie)**: Stable release (default) - **14 (Forky)**: Testing release - **00 (Sid)**: Unstable/rolling release ## Repository Structure ``` debian-base-images/ ├── debian-includes/ # Common package definitions ├── minimal/ # Minimal image components ├── standard/ # Standard image components ├── iot/ # IoT image components ├── debian-bootc-base-imagectl # Build tool ├── install-manifests # Manifest installation script ├── debian.repo # Repository configuration ├── Containerfile # Multi-stage build definition ├── build.sh # Build script ├── debian-13.yaml # Debian 13 (Trixie) manifest ├── debian-14.yaml # Debian 14 (Forky) manifest ├── debian-00.yaml # Debian 00 (Sid) manifest └── debian-bootc-config.json # Bootc configuration (single file) ``` ## Integration with bootc-image-builder These base images are designed to work with `bootc-image-builder`: 1. Build a minimal base image using this repository 2. Push the image to a container registry 3. Use `bootc-image-builder` with the image to create bootable disk images ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Test with the build script 5. Submit a pull request ## License This project follows the same license as the Debian project.