`bootc` mimarisinde bir işletim sistemi, standart bir OCI konteyneri gibi tanımlanır, Podman veya Buildah ile derlenir ve bir konteyner kayıt defterine (Quay.io, Docker Hub, GHCR vb.) aktarılır.
—
### 1. Adım: Containerfile Hazırlama
Sistemin temel bileşenlerini, ek paketlerini ve yapılandırmalarını içeren bir `Containerfile` (veya `Dockerfile`) oluşturulur. Taban imaj olarak resmi Fedora bootc imajları kullanılır:
“`dockerfile
FROM quay.io/fedora/fedora-bootc:40
# Gerekli ek sistem paketlerinin kurulması ve önbelleğin temizlenmesi
RUN dnf -y install \
cockpit \
htop \
wireguard-tools \
git && \
dnf clean all
# Cockpit veya benzeri sistem servislerinin açılışta etkinleştirilmesi
RUN systemctl enable cockpit.socket
# Özel sistem yapılandırma dosyalarının eklenmesi (isteğe bağlı)
# COPY sysctl.conf /etc/sysctl.d/99-custom.conf
“`
> **Önemli Not:** Değişmez sistem yapısı gereği sistem dosyaları `/usr` altına, varsayılan yapılandırmalar ise `/usr/etc` veya `/etc` altına yazılmalıdır. `/var` ve `/home` içerikleri imaj derleme aşamasında taşınmaz, çalışma anında dinamik oluşturulur.
—
### 2. Adım: İmajı Podman ile Derleme
Hazırlanan dosyanın bulunduğu dizinde Podman kullanılarak imaj derlenir:
“`bash
podman build -t quay.io/kullanici_adiniz/fedora-custom:latest -f Containerfile .
“`
*Derlemenin başarılı olduğunu doğrulamak için:*
“`bash
podman images | grep fedora-custom
“`
—
### 3. Adım: Konteyner Kayıt Defterine (Registry) Yükleme
Hedef kayıt defterine giriş yapılır ve imaj yayınlanır:
“`bash
podman login quay.io
podman push quay.io/kullanici_adiniz/fedora-custom:latest
“`
—
### 4. Adım: İmajı Hedef Makineye Dağıtma
Yayınlanan imajı çalışan bir Fedora Atomic / bootc sistemine geçirmek için hedef makinede şu komut çalıştırılır:
“`bash
sudo bootc switch quay.io/kullanici_adiniz/fedora-custom:latest
sudo reboot
“`
Sistem yeniden başladıktan sonra yeni imajın aktif olduğunu kontrol etmek için:
“`bash
bootc status
“`
Bu model sayesinde işletim sisteminde yapılan tüm paket ve ayar değişiklikleri yerel makinede tek tek uğraşmak yerine Git deposu ve CI/CD (GitHub Actions / GitLab CI) hatlarında otomatik derlenip tüm cihazlara tek komutla dağıtılabilir.