165 lines
5.5 KiB
Markdown
Executable file
165 lines
5.5 KiB
Markdown
Executable file
# Fedora Bootc Ecosystem: Top-Down Linear Flow
|
|
|
|
## Overview
|
|
This flowchart shows the complete Fedora bootc ecosystem from package sources to user deployment, in a linear top-down progression.
|
|
|
|
## The Complete Flow
|
|
|
|
```mermaid
|
|
graph TD
|
|
%% Start: Package Sources
|
|
A[Fedora Package Sources] --> B[Koji Build System]
|
|
B --> C[Mock Build Environments]
|
|
C --> D[RPM Packages in Koji]
|
|
|
|
%% Configuration Management
|
|
D --> E[workstation-ostree-config Repository]
|
|
E --> F[Treefiles (YAML)]
|
|
F --> G[Package Groups & Variants]
|
|
G --> H[Fedora Comps Sync]
|
|
|
|
%% Build Process (with ostree-importer step)
|
|
D --> I[rpm-ostree compose tree]
|
|
F --> I
|
|
I --> J[OSTree Repository with Commits]
|
|
J --> J1[ostree-importer to official repo]
|
|
J1 --> K[rpm-ostree compose container-encapsulate]
|
|
K --> L[Special bootc containers]
|
|
|
|
%% Base Images Created
|
|
L --> M[quay.io/fedora/fedora-bootc:42]
|
|
L --> N[Fedora Silverblue]
|
|
L --> O[Fedora Kinoite]
|
|
L --> P[Other Atomic variants]
|
|
|
|
%% User Customization Paths
|
|
M --> Q[Users build FROM base images]
|
|
Q --> R[Custom bootc containers]
|
|
|
|
%% Path 1: Direct Containerfile
|
|
Q --> S[Write Containerfile directly]
|
|
S --> T[Container-First build path]
|
|
|
|
%% Path 2: BlueBuild abstraction
|
|
Q --> U[Write recipe.yml]
|
|
U --> V[BlueBuild generates Containerfile]
|
|
V --> T
|
|
|
|
%% BlueBuild processing
|
|
U --> W[BlueBuild CLI processes recipe.yml]
|
|
W --> X[Generates Containerfile automatically]
|
|
X --> T
|
|
T --> Y[Custom Fedora Atomic Images]
|
|
Y --> Z[ISO, QCOW2, RAW formats]
|
|
|
|
%% Production conversion tools (clarified roles)
|
|
R --> AA[bootc-image-builder]
|
|
M --> AA
|
|
AA --> BB[Standard bootable images]
|
|
|
|
R --> CC[osbuilder/osbuild]
|
|
M --> CC
|
|
CC --> DD[Advanced custom images]
|
|
CC --> DD1[OSTree composition]
|
|
CC --> DD2[Package management]
|
|
CC --> DD3[Complex build orchestration]
|
|
|
|
%% Traditional Fedora path
|
|
D --> EE[Pungi Compose System]
|
|
EE --> FF[Traditional Fedora ISOs]
|
|
|
|
%% User experience limitations
|
|
Y --> GG[Steep Learning Curve]
|
|
Y --> HH[Compatibility Gaps]
|
|
Y --> II[Slow rpm-ostree Operations]
|
|
Y --> JJ[Hardware/Driver Issues]
|
|
|
|
%% User lifecycle operations
|
|
M --> KK[rpm-ostree upgrade]
|
|
M --> LL[rpm-ostree rollback]
|
|
M --> MM[rpm-ostree rebase]
|
|
|
|
%% These affect the user experience
|
|
KK --> NN[System updates]
|
|
LL --> OO[System rollbacks]
|
|
MM --> PP[System rebasing]
|
|
```
|
|
|
|
## Key Components
|
|
|
|
### 1. Package Infrastructure
|
|
- **Input**: Fedora Package Sources
|
|
- **Output**: RPM Packages in Koji repository
|
|
- **Tools**: Koji Build System, Mock Build Environments
|
|
|
|
### 2. Configuration Management
|
|
- **Input**: RPM Packages + Fedora package groups
|
|
- **Output**: Treefiles (YAML) defining variants
|
|
- **Tools**: workstation-ostree-config repository, Fedora Comps Sync
|
|
|
|
### 3. Build Process
|
|
- **Input**: RPM Packages + Treefiles
|
|
- **Output**: Special bootc containers
|
|
- **Tools**: rpm-ostree compose tree → ostree-importer → rpm-ostree compose container-encapsulate
|
|
|
|
### 4. Base Images
|
|
- **Input**: Special bootc containers
|
|
- **Output**: Official Fedora bootc containers and variants
|
|
- **Examples**: quay.io/fedora/fedora-bootc:42, Fedora Silverblue, Kinoite
|
|
|
|
### 5. User Customization
|
|
- **Input**: Base bootc images
|
|
- **Output**: Custom bootc containers
|
|
- **Paths**:
|
|
- Direct: Containerfile → Custom container
|
|
- BlueBuild: recipe.yml → BlueBuild → Containerfile → Custom container
|
|
|
|
### 6. Production Tools
|
|
- **Input**: Custom bootc containers
|
|
- **Output**: Bootable disk images
|
|
- **Tools**:
|
|
- bootc-image-builder: Standard bootable images
|
|
- osbuilder/osbuild: Advanced customization, OSTree composition, package management, complex build orchestration
|
|
|
|
### 7. Traditional Fedora
|
|
- **Input**: RPM Packages
|
|
- **Output**: Traditional Fedora ISOs
|
|
- **Tools**: Pungi Compose System
|
|
|
|
### 8. User Limitations
|
|
- **Input**: Custom Fedora Atomic Images
|
|
- **Output**: User experience challenges
|
|
- **Issues**: Learning curve, compatibility gaps, slow operations, hardware limitations
|
|
|
|
### 9. User Lifecycle Operations
|
|
- **Input**: Base bootc images
|
|
- **Output**: System management operations
|
|
- **Operations**: rpm-ostree upgrade, rollback, rebase
|
|
- **Purpose**: Fundamental to the "atomic" nature of the system
|
|
|
|
## What Each Step Produces
|
|
|
|
| Step | Input | Output | Tool |
|
|
|------|-------|--------|------|
|
|
| Package Sources | Source code | RPM Packages | Koji + Mock |
|
|
| Configuration | RPMs + package groups | Treefiles (YAML) | workstation-ostree-config |
|
|
| Build Process | RPMs + Treefiles | OSTree commits | rpm-ostree compose tree |
|
|
| Import | OSTree commits | Official repo | ostree-importer |
|
|
| Encapsulate | OSTree commits | bootc containers | rpm-ostree compose container-encapsulate |
|
|
| Base Images | bootc containers | Official variants | Container registry |
|
|
| User Customization | Base images | Custom containers | Containerfile or BlueBuild |
|
|
| Production Tools | Custom containers | Bootable images | bootc-image-builder/osbuilder |
|
|
| Traditional Fedora | RPMs | ISOs | Pungi |
|
|
| User Lifecycle | Base images | System operations | rpm-ostree commands |
|
|
|
|
## What This Shows
|
|
|
|
This flowchart demonstrates that Fedora bootc requires:
|
|
- Complete package infrastructure
|
|
- Configuration management system
|
|
- Specialized build tools
|
|
- User abstraction layers
|
|
- Multiple production conversion options
|
|
- User lifecycle management
|
|
|
|
For Debian Atomic to work similarly, it needs equivalent infrastructure and tools.
|