143 lines
3.9 KiB
Markdown
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.
|