- Fixed sfdisk PATH issue in Containerfile.base (sfdisk is in /usr/sbin) - Updated Containerfile.minimal to use full path for grub-install - Enhanced test-bootc-deployment.sh to properly check utility locations - Added comprehensive section about related projects (apt-ostree, deb-bootupd, debian-bootc-corrected) - Updated validation script to handle Debian-specific utility locations - Improved error messages with specific solutions for PATH and utility issues This addresses the critical requirements from scope.md regarding disk utilities and PATH environment variables for bootc deployment.
108 lines
No EOL
6.9 KiB
Markdown
108 lines
No EOL
6.9 KiB
Markdown
# Fedora Atomic and ublue-os Terminology
|
|
|
|
This document clarifies the key terms and the relationships between them in the Fedora and ublue-os ecosystem.
|
|
|
|
## What is ublue-os?
|
|
|
|
**ublue-os** (Universal Blue) is not a traditional Linux distribution. It's a "manufacturing process" that builds and maintains immutable operating system images based on Fedora Atomic Desktops. It uses cloud-native tools and principles, like containerization and GitOps, to provide a stable, continuously delivered, and community-driven desktop experience. The images are built from standard OCI-compliant container images, which allows for fast, reliable updates and easy rollbacks.
|
|
|
|
## Fedora Atomic Desktops
|
|
|
|
### What they are
|
|
A family of operating systems, including **Fedora Silverblue** and **Fedora Kinoite**, that use `rpm-ostree` technology. They are often referred to as "immutable" because the core operating system is a read-only, atomic deployment. Though commonly called "immutable," these systems more precisely feature an immutable base OS layer while allowing user modifications in specific areas.
|
|
|
|
### Purpose
|
|
These are designed for desktop and workstation use, providing a stable, reliable, and predictable foundation for users who want to run containerized applications with tools like:
|
|
- **Podman**
|
|
- **Toolbox**
|
|
- **Distrobox**
|
|
|
|
They also include a graphical desktop environment and use **Flatpak** as a key technology for application delivery.
|
|
|
|
### Connection to ublue-os
|
|
**ublue-os does not build the Fedora Atomic project itself.** Instead, it uses the official Fedora Atomic Desktop base images as a foundation and builds custom images on top of that stable, immutable base. Think of it like this:
|
|
- **Fedora Atomic Desktop** is the foundation or "chassis" - it provides the core operating system, the `rpm-ostree` technology, and the stability
|
|
- **ublue-os** is the "car manufacturer" that takes this chassis and builds complete, customized vehicles
|
|
|
|
ublue-os then builds a variety of custom images on top of them, adding pre-configured software, drivers, and tweaks to create specialized desktop environments for different use cases:
|
|
- **Bazzite** - Gaming-focused
|
|
- **Aurora** - General purpose
|
|
- **Bluefin** - Developer-focused
|
|
|
|
## Fedora CoreOS
|
|
|
|
### What it is
|
|
A minimal, automatically-updating operating system specifically for running containerized workloads securely and at scale. It is the successor to both the **Fedora Atomic Host** and **CoreOS Container Linux**, with development of those two projects merging to create a unified offering.
|
|
|
|
### Purpose
|
|
Fedora CoreOS is **not designed for a desktop environment**. Its primary use is for:
|
|
- Servers
|
|
- Cloud deployments
|
|
- Container orchestration platforms like Kubernetes
|
|
|
|
Its entire life cycle is managed with a declarative approach.
|
|
|
|
### Key Features
|
|
- Uses `rpm-ostree` for atomic updates
|
|
- Update strategy handled by the **Zincati** agent, which implements a phased rollout system
|
|
- Initial provisioning and configuration handled by **Ignition**, a tool that takes a declarative configuration file and applies it on the first boot
|
|
|
|
### Connection to ublue-os
|
|
The ublue-os project has a custom image called **ucore**. This image is a "batteries included" version of Fedora CoreOS that adds useful tools like:
|
|
- **Cockpit**
|
|
- **Tailscale**
|
|
- Optional **NVIDIA driver** support
|
|
|
|
## Core Technologies
|
|
|
|
### rpm-ostree
|
|
This is the hybrid image/package system at the core of Fedora Atomic Desktops. It combines `libostree` for managing the immutable filesystem and `RPM` for package management. It allows for the base operating system to be composed on a server (like a container image) and then replicated on the client. It also provides a way to "layer" additional RPM packages on top of the immutable base, which can be reverted with a single command.
|
|
|
|
### bootc (Bootable Containers)
|
|
`bootc` is a command-line tool that enables the use of OCI/Docker container images as bootable operating systems. It allows the entire OS, including the kernel and drivers, to be packaged and managed like a container. **ublue-os is a major adopter of this technology**, using it to deliver its images to users. This simplifies the build and deployment process, making it consistent with modern cloud-native workflows.
|
|
|
|
### bootc-image-builder
|
|
This is a containerized tool used to create disk images from a `bootc` container image. It's used in the build process to take a bootable container image and turn it into a format that can be installed on a physical or virtual machine, such as a QCOW2 or ISO file.
|
|
|
|
### bootupd
|
|
`bootupd` is a tool for updating bootloaders in a consistent, distribution-independent manner. It is used in **ublue-os** and other `rpm-ostree` and `bootc`-based systems to manage updates to the bootloader components (like GRUB and shim for UEFI firmware), ensuring they are handled safely and reliably.
|
|
|
|
## ublue-os Image Variants
|
|
|
|
### Aurora
|
|
Aurora is a specific **ublue-os** image described as a "delightful KDE desktop experience." It is built on top of the **ublue-os** core and features a lightly customized KDE Plasma desktop. It's designed for general users and aims to provide a maintenance-free, stable, and user-friendly experience.
|
|
|
|
### Bazzite
|
|
Bazzite is another **ublue-os** image, specifically a "next generation of Linux gaming" desktop. It's also built on a Fedora Atomic Desktop base but is heavily customized with gaming-focused features, including:
|
|
- Pre-installed Steam and Lutris
|
|
- Enhanced hardware support (including for handhelds)
|
|
- Pre-installed Nvidia drivers
|
|
|
|
The name **Bazzite** comes from the character Bazz-i-te in the game Dungeons & Dragons.
|
|
|
|
### Bluefin
|
|
Bluefin is a developer-focused **ublue-os** image, optimized for software development workflows and tools.
|
|
|
|
## Shared Technologies
|
|
|
|
### OCI Images
|
|
ublue-os distributes all its variants as OCI container images that can be rebased to using `rpm-ostree`.
|
|
|
|
## System Architecture Relationship
|
|
|
|
The relationship between these pieces is as follows:
|
|
|
|
1. **Fedora Atomic** provides the base immutable system
|
|
2. **rpm-ostree** is the core technology that manages this immutable system and its transactional updates
|
|
3. **bootc** is a more modern approach to this, treating the entire OS as a container image
|
|
4. **ublue-os** is the project that uses these underlying technologies (`rpm-ostree`, and increasingly `bootc`) to build and distribute its own customized images
|
|
5. **Aurora**, **Bazzite**, and **Bluefin** are examples of end-user images produced by the **ublue-os** project, each with a different focus
|
|
6. **bootc-image-builder** and **bootupd** are tools that are part of the larger ecosystem, used to build and maintain these images and their bootloaders
|
|
|
|
## Summary
|
|
|
|
**In a nutshell:**
|
|
- **Fedora Atomic Desktops** are the base for ublue-os's custom desktop images
|
|
- **Fedora CoreOS** is the base for ublue-os's custom server images, such as ucore
|
|
- **ublue-os** is the manufacturing process that creates specialized variants
|
|
- **bootc** is the modern container-based approach that ublue-os increasingly adopts |