179 lines
3 KiB
Markdown
179 lines
3 KiB
Markdown
# Debian Bootc Simple
|
|
|
|
This is a less complex way to create bootc images than the deb-bootc-compose method that mirrors how Fedora does it.
|
|
|
|
## Prerequisites
|
|
|
|
- Debian-based system (tested on Debian 13 Trixie)
|
|
- `podman` or `docker` for container operations
|
|
- `qemu-utils` for image format conversion
|
|
- `grub-pc-bin` for bootloader installation
|
|
- `kpartx` for partition management
|
|
- `just` command runner (install with `cargo install just`)
|
|
|
|
## Quick Start
|
|
|
|
### 1. Build a QCOW2 Image
|
|
|
|
```bash
|
|
# Create QCOW2 image from container (default)
|
|
just qcow2
|
|
|
|
# Create QCOW2 image from chroot
|
|
just qcow2-chroot
|
|
```
|
|
|
|
### 2. Build Different Formats
|
|
|
|
```bash
|
|
# ISO image
|
|
just iso
|
|
|
|
# Raw disk image
|
|
just img
|
|
|
|
# VMware format
|
|
just vmdk
|
|
|
|
# VirtualBox format
|
|
just vdi
|
|
|
|
# All formats at once
|
|
just all
|
|
```
|
|
|
|
### 3. Customize Image Size
|
|
|
|
```bash
|
|
# Create 20GB QCOW2 image
|
|
just custom 20 qcow2
|
|
|
|
# Create 15GB ISO from chroot
|
|
just custom-chroot 15 iso
|
|
```
|
|
|
|
### 4. Choose Debian Release
|
|
|
|
```bash
|
|
# Use Debian 14 (Forky)
|
|
just qcow2-chroot-release forky
|
|
|
|
# Use Debian Sid
|
|
just qcow2-chroot-release sid
|
|
|
|
# Use environment variable
|
|
DEBIAN_RELEASE=sid just qcow2-chroot
|
|
```
|
|
|
|
## Build Types
|
|
|
|
### Container Method (Default)
|
|
Extracts filesystem from a container image:
|
|
```bash
|
|
just qcow2
|
|
```
|
|
|
|
### Chroot Method
|
|
Builds from a chroot environment:
|
|
```bash
|
|
just qcow2-chroot
|
|
```
|
|
|
|
## Output Formats
|
|
|
|
- **QCOW2**: QEMU Copy-On-Write (default)
|
|
- **ISO**: Bootable ISO image
|
|
- **IMG**: Raw disk image
|
|
- **VMDK**: VMware disk format
|
|
- **VDI**: VirtualBox disk format
|
|
|
|
## Debian Releases
|
|
|
|
- **trixie**: Debian 13 (Testing) - Default
|
|
- **forky**: Debian 14 (Unstable)
|
|
- **sid**: Debian Sid (Always Unstable)
|
|
|
|
## VM Testing
|
|
|
|
Create and boot a VM with the generated image:
|
|
```bash
|
|
just vm
|
|
```
|
|
|
|
## Configuration
|
|
|
|
View current configuration:
|
|
```bash
|
|
just config
|
|
```
|
|
|
|
Check available options:
|
|
```bash
|
|
./create-bootc-image.sh --help
|
|
```
|
|
|
|
## Cleanup
|
|
|
|
```bash
|
|
# Clean output files
|
|
just clean
|
|
|
|
# Clean work directories
|
|
just clean-work
|
|
|
|
# Clean everything
|
|
just clean-all
|
|
```
|
|
|
|
## Advanced Usage
|
|
|
|
### Build Container Only
|
|
```bash
|
|
just build
|
|
```
|
|
|
|
### Setup apt-cacher-ng for faster builds
|
|
```bash
|
|
just setup-cache
|
|
```
|
|
|
|
### Test container functionality
|
|
```bash
|
|
just test
|
|
```
|
|
|
|
## File Structure
|
|
|
|
- `create-bootc-image.sh` - Main orchestration script
|
|
- `modules/` - Modular components for different build stages
|
|
- `config/defaults.sh` - Configuration defaults
|
|
- `justfile` - Command shortcuts and examples
|
|
- `debian_bootc_dockerfile.txt` - Container definition
|
|
- `debian-bootc-vm.xml` - VM configuration template
|
|
|
|
## Troubleshooting
|
|
|
|
If you encounter issues:
|
|
|
|
1. Check disk space: `df -h`
|
|
2. Clean work directories: `just clean-work`
|
|
3. Verify prerequisites: `which podman qemu-img grub-install`
|
|
4. Check logs in the output directory
|
|
|
|
## Examples
|
|
|
|
```bash
|
|
# Basic workflow
|
|
just qcow2
|
|
just vm
|
|
|
|
# Chroot workflow with custom size
|
|
just custom-chroot 25 qcow2
|
|
just vm
|
|
|
|
# Multiple formats from chroot
|
|
just all-chroot
|
|
|
|
# Debian 14 with custom size
|
|
just custom-chroot-release 30 iso forky
|
|
```
|