debian-bootc-base-images/README.md
2025-08-30 12:36:18 -07:00

143 lines
3.9 KiB
Markdown

# 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.