Compare commits

...

30 Commits

Author SHA1 Message Date
James Pace 67b144cbf9 Minimize base image. 2025-02-23 09:24:31 -05:00
Colin Walters (Red Hat) 7b4e013126 Merge branch 'branch-f42' into 'main'
tier-1: add f42 treefile after branching

See merge request fedora/bootc/base-images!87
2025-02-07 19:32:10 +00:00
Colin Walters (Red Hat) c1a4b38c46 Merge branch 'drop-resolved-centos' into 'main'
tier-x: Drop systemd-resolved

See merge request fedora/bootc/base-images!88
2025-02-07 14:35:47 +00:00
Colin Walters 0ac5ee04ba tier-x: Drop systemd-resolved
It's not desired by default in RHEL 10 or below yet, ref
https://issues.redhat.com/browse/RHEL-77077

AFAICS, it's already explicitly specified in the fedora-coreos manifest,
so dropping it here shouldn't affect FCOS.

Of course I think what we *really* want here is distribution
conditionals.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-02-07 09:23:38 -05:00
Paul Whalen da3c6ef677 tier-1: add f42 treefile after branching
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-05 16:44:49 -05:00
Colin Walters (Red Hat) 5276e451f4 Merge branch 'drop-ppc64le-bootloader-cruft' into 'main'
base/bootloader: Drop /usr/lib/ostree-boot/loader

See merge request fedora/bootc/base-images!86
2025-02-05 21:08:36 +00:00
Colin Walters 3ebf803f5f base/bootloader: Drop /usr/lib/ostree-boot/loader
A quick workaround for https://issues.redhat.com/browse/RHEL-78104
2025-02-05 15:16:59 -05:00
Joseph Marrero Corchado e62452d096 Merge branch 'kernel-install-more-places' into 'main'
kernel-install: Enable everywhere

See merge request fedora/bootc/base-images!84
2025-02-03 19:05:14 +00:00
Colin Walters d88208bfba kernel-install: Enable everywhere
Since we'll have the updated rpm-ostree and we believe this
works.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-02-03 09:05:06 -05:00
Valentin Rothberg 3374cd8842 Merge branch 'rpmstate' into 'main'
tier-0: Add /var/lib/rpm-state by default

Closes tracker#58

See merge request fedora/bootc/base-images!82
2025-01-22 15:50:56 +00:00
Colin Walters 92e7c1b2e1 tier-0: Add /var/lib/rpm-state by default
This empty directory is required by some RPM scripts. Historically
rpm-ostree's script invocations made this by default, but that
doesn't happen with direct rpm or dnf.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-01-22 10:24:48 -05:00
Colin Walters (Red Hat) 9bc06392c3 Merge branch 'kernel-install' into 'main'
tier-0: add kernel-install integration config

See merge request fedora/bootc/base-images!62
2025-01-21 22:51:34 +00:00
Joseph Marrero Corchado 7e65f01306 Containerfile: use rawhide as builder to get the latest rpm-ostree 2025-01-21 15:53:14 -05:00
Joseph Marrero Corchado 1003402e6f tier-0: add kernel-install integration config
This MR adds two configurations to enable kernel-install integration,
this will enable using dnf or rpm to install kernels.

- /usr/lib/kernel/install.conf: enables the hook that tells kernel-install
to defer the logic to rpm-ostree, this currently only on f42
- dnf.conf: ensures dnf only keeps one kernel package
2025-01-21 15:19:41 -05:00
Colin Walters (Red Hat) 37900787f1 Merge branch 'refactor-postprocess-conf' into 'main'
Split out postprocess-conf.yaml

See merge request fedora/bootc/base-images!76
2025-01-21 15:26:47 +00:00
Colin Walters (Red Hat) 22527b5f13 Merge branch 'misc' into 'main'
Drop kernel-rt.yaml

See merge request fedora/bootc/base-images!75
2025-01-21 15:26:08 +00:00
Colin Walters (Red Hat) 93c50b4806 Merge branch 'dusty-bin-zipl' into 'main'
tier-0: use s390utils-core instead of /usr/sbin/zipl

See merge request fedora/bootc/base-images!80
2025-01-21 13:36:45 +00:00
Dusty Mabe c51559b7eb
tier-0: use s390utils-core instead of /usr/sbin/zipl
The sbin/bin merge happened in Fedora so it's now /usr/bin/zipl
in rawhide. While we're in here just name the package now since
the transient issue where it was coming from two different
packages upstream and downstream has settled. We can use s390utils-core
everywhere.
2025-01-21 08:18:54 -05:00
Colin Walters (Red Hat) 578e95fe81 Merge branch 'condition-growpart' into 'main'
growpart: Add `ConditionPathExists=/usr/bin/growpart`

See merge request fedora/bootc/base-images!79
2025-01-14 15:49:13 +00:00
Colin Walters (Red Hat) 9e300fb68f Merge branch 'readd-dnf' into 'main'
Revert "tier-0: Drop dnf"

See merge request fedora/bootc/base-images!78
2025-01-14 15:29:32 +00:00
Colin Walters 06fddc9007 growpart: Add `ConditionPathExists=/usr/bin/growpart`
Hopefully eventually this gets rewritten in not-shell-script
and put somewhere saner. For now, avoid failing if people have
trimmed their images.

The growpart problem only comes with bootc-image-builder and
cloud environments anyways, it's not something we hit with
Anaconda installs or `bootc install to-filesystem`, so we can
avoid this.

Closes: https://gitlab.com/fedora/bootc/base-images/-/issues/34

Signed-off-by: Colin Walters <walters@verbum.org>
2025-01-14 10:26:11 -05:00
Colin Walters 934570054e Revert "tier-0: Drop dnf"
This reverts commit d7142132b7.
2025-01-14 10:16:39 -05:00
Colin Walters (Red Hat) b44ea1ace5 Merge branch 'baseimage-split-build-prep2' into 'main'
tier-0: Drop dnf

See merge request fedora/bootc/base-images!77
2025-01-14 10:05:52 +00:00
Colin Walters d7142132b7 tier-0: Drop dnf
We will have a better way to make derived container images
that doesn't require having dnf in the base image.

Prep for more minimal and custom images.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-01-13 10:01:02 -05:00
Colin Walters 535cea4155 Split out postprocess-conf.yaml
Prep for working on custom base images. We want to support
operating on rootfs that may not have been generated by
rpm-ostree.

Split this out as something that can gets passed separately
to `rpm-ostree compose postprocess/commit`.
2025-01-13 09:21:26 -05:00
Colin Walters 444acb374b Drop kernel-rt.yaml
It's unused right now and we are going to replace it with better
mechanisms.
2025-01-13 08:31:35 -05:00
Micah Abbott edac3c53ca Merge branch 'more-docs' into 'main'
README.md: Slightly more docs for tiers

See merge request fedora/bootc/base-images!72
2025-01-09 21:03:02 +00:00
Valentin Rothberg 461786bc6a Merge branch 'drop-unused-file' into 'main'
tier-0: Drop unused bootc-config.yaml

See merge request fedora/bootc/base-images!73
2025-01-06 10:37:11 +00:00
Colin Walters 7369824a54 tier-0: Drop unused bootc-config.yaml
This file went empty a while ago when we moved the default
filesystem bits to the centos-stream image.
2025-01-03 16:11:15 -05:00
Colin Walters b991db43cb README.md: Slightly more docs for tiers
Explain that we aren't shipping anything but tier-1, link
to the custom base image work.
2024-12-20 15:50:40 -05:00
18 changed files with 98 additions and 86 deletions

View File

@ -23,7 +23,7 @@
# Because it's generating a base image and uses containerization features itself. # Because it's generating a base image and uses containerization features itself.
# In the future some of this can be lifted. # In the future some of this can be lifted.
FROM quay.io/fedora/fedora:rawhide as repos FROM quay.io/fedora/fedora:41 as repos
# BOOTSTRAPPING: This can be any image that has rpm-ostree and selinux-policy-targeted. # BOOTSTRAPPING: This can be any image that has rpm-ostree and selinux-policy-targeted.
FROM quay.io/fedora/fedora:41 as builder FROM quay.io/fedora/fedora:41 as builder

View File

@ -49,15 +49,23 @@ See this page[6] of the documentation for more information.
## Tiers ## Tiers
There are currently 3 tiers: At the current time, there is just one reference base image published
to the registry. Internally the content set is split up somewhat
into "tiers", but this is an internal implementation detail and may change
at any time.
It is planned to rework and improve this in the future, especially
to support smaller custom images. For more on this, see
[this tracker issue](https://gitlab.com/fedora/bootc/tracker/-/issues/32).
- **tier-1**: This image is the default, what is published as - **tier-1**: This image is the default, what is published as
https://quay.io/repository/fedora/fedora-bootc https://quay.io/repository/fedora/fedora-bootc
- **tier-0**: This image is more of a convenient centralization point for CI - **tier-0**: This content set is more of a convenient centralization point for CI
and curation around a package set that we can all agree is the rough minimum and curation around a package set that we can all agree is the rough minimum
necessary for a usable system. It's not meant to be used as is, but layered necessary for a usable system. It's not meant to be used as is, but layered
upon. upon.
- **tier-x**: This image is not intended for end-users. It's the shared base - **tier-x**: This content set is the shared base used by all image-based
used by all image-based Fedora variants (IoT, Atomic Desktops, and CoreOS). Fedora variants (IoT, Atomic Desktops, and CoreOS).
Changes to this tier may be done without accounting for external users. Changes to this tier may be done without accounting for external users.
To build this, pass `--build-arg=MANIFEST=fedora-tier-x.yaml` to the build To build this, pass `--build-arg=MANIFEST=fedora-tier-x.yaml` to the build
command above. command above.

5
build.sh Normal file
View File

@ -0,0 +1,5 @@
podman build \
--security-opt=label=disable \
--cap-add=all \
--device /dev/fuse \
-t localhost/fedora-bootc .

6
fedora-42.yaml Normal file
View File

@ -0,0 +1,6 @@
# NB: This treefile is used by the legacy pungi path only to build tier-1. It
# will be removed in the future.
releasever: 42
repos:
- fedora-devel
include: fedora-bootc.yaml

View File

@ -5,3 +5,5 @@ variables:
packages: packages:
# https://gitlab.com/fedora/bootc/base-images/-/issues/12 # https://gitlab.com/fedora/bootc/base-images/-/issues/12
- fedora-repos-archive - fedora-repos-archive
# Not in RHEL10
- systemd-resolved

View File

@ -9,9 +9,8 @@ packages-aarch64:
packages-ppc64le: packages-ppc64le:
- grub2 ostree-grub2 - grub2 ostree-grub2
packages-s390x: packages-s390x:
# On Fedora, this is provided by s390utils-core. on RHEL, this is for now # For zipl
# provided by s390utils-base, but soon will be -core too. - s390utils-core
- /usr/sbin/zipl
packages-x86_64: packages-x86_64:
- grub2 grub2-efi-x64 efibootmgr shim - grub2 grub2-efi-x64 efibootmgr shim
- microcode_ctl - microcode_ctl
@ -27,3 +26,8 @@ postprocess:
set -xeuo pipefail set -xeuo pipefail
# Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload # Transforms /usr/lib/ostree-boot into a bootupd-compatible update payload
/usr/bin/bootupctl backend generate-update-metadata /usr/bin/bootupctl backend generate-update-metadata
- |
#!/bin/bash
# Workaround for https://issues.redhat.com/browse/RHEL-78104
set -xeuo pipefail
rm -vrf /usr/lib/ostree-boot/loader

View File

@ -2,3 +2,5 @@
# https://gitlab.com/fedora/bootc/base-images/-/issues/28 # https://gitlab.com/fedora/bootc/base-images/-/issues/28
set -xeuo pipefail set -xeuo pipefail
ln -s ../run var/run ln -s ../run var/run
# https://gitlab.com/fedora/bootc/tracker/-/issues/58
mkdir -p var/lib/rpm-state

View File

@ -0,0 +1,21 @@
# Configuration to enable kernel-install integration
postprocess:
- |
#!/usr/bin/env bash
set -xeuo pipefail
source /usr/lib/os-release
echo -e "# kernel-install will not try to run dracut and allow rpm-ostree to\n\
# take over. Rpm-ostree will use this to know that it is responsible\n\
# to run dracut and ensure that there is only one kernel in the image\n\
layout=ostree" | tee /usr/lib/kernel/install.conf > /dev/null
# By default dnf keeps multiple versions of the kernel, with this
# configuration we tell dnf to treat the kernel as everything else.
# https://dnf.readthedocs.io/en/latest/conf_ref.html#main-options
# Let's add the config to a distribution configuration file if dnf5
# is used, we append to /etc/dnf/dnf.conf if not.
if [ -d "/usr/share/dnf5/libdnf.conf.d/" ]; then
echo -e "[main]\ninstallonlypkgs=''" >> /usr/share/dnf5/libdnf.conf.d/20-ostree-installonlypkgs.conf
else
echo "installonlypkgs=''" >> /etc/dnf/dnf.conf
fi

View File

@ -1,10 +0,0 @@
repos:
- rt
- nfv
# Enable the "realtime" AKA soft-realtime AKA latency-optimized kernel.
packages:
- kernel-rt-core kernel-rt-modules kernel-rt-modules-extra kernel-rt-kvm
exclude-packages:
- kernel-rt-debug-core

View File

@ -1,40 +1,12 @@
edition: "2024" edition: "2024"
# https://github.com/CentOS/centos-bootc/issues/167
machineid-compat: true
# Be minimal # Be minimal
recommends: false recommends: false
ignore-removed-users:
- root
ignore-removed-groups:
- root
etc-group-members:
- wheel
- sudo
- systemd-journal
- adm
# Default to `bash` in our container, the same as other containers we ship. # Default to `bash` in our container, the same as other containers we ship.
container-cmd: container-cmd:
- /sbin/init - /sbin/init
# Note that the default for c9s+ is sqlite; we can't rely on rpm being
# in the target (it isn't in tier-0!) so turn this to host here. This
# does break the "hermetic build" aspect a bit. Maybe eventually
# what we should do is special case this and actually install RPM temporarily
# and then remove it...
rpmdb: host
check-passwd:
type: "file"
filename: "passwd"
check-groups:
type: "file"
filename: "group"
automatic-version-prefix: "${releasever}.<date:%Y%m%d>"
mutate-os-release: "${releasever}"
remove-from-packages: remove-from-packages:
# Generally we expect other tools to do this (e.g. Ignition or cloud-init) # Generally we expect other tools to do this (e.g. Ignition or cloud-init)
- [systemd, /usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service] - [systemd, /usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service]
@ -43,11 +15,13 @@ remove-from-packages:
- [systemd-udev, /usr/lib/systemd/system-generators/systemd-gpt-auto-generator] - [systemd-udev, /usr/lib/systemd/system-generators/systemd-gpt-auto-generator]
include: include:
- postprocess-conf.yaml
- bootc.yaml - bootc.yaml
- bootupd.yaml - bootupd.yaml
- ostree.yaml - ostree.yaml
- initramfs.yaml - initramfs.yaml
- basic-fixes.yaml - basic-fixes.yaml
- kernel-install.yaml
packages: packages:
# this is implied by dependencies but let's make it explicit # this is implied by dependencies but let's make it explicit

View File

@ -1,9 +1,6 @@
packages: packages:
- ostree nss-altfiles - ostree nss-altfiles
# We want content lifecycled with the image
opt-usrlocal: "root"
postprocess: postprocess:
# Set up default root config # Set up default root config
- | - |

View File

@ -0,0 +1,34 @@
# This file configures things relevant to `rpm-ostree compose postprocess`.
# We want content lifecycled with the image
opt-usrlocal: "root"
# https://github.com/CentOS/centos-bootc/issues/167
machineid-compat: true
# Note that the default for c9s+ is sqlite; we can't rely on rpm being
# in the target (it isn't in tier-0!) so turn this to host here. This
# does break the "hermetic build" aspect a bit. Maybe eventually
# what we should do is special case this and actually install RPM temporarily
# and then remove it...
rpmdb: host
ignore-removed-users:
- root
ignore-removed-groups:
- root
etc-group-members:
- wheel
- sudo
- systemd-journal
- adm
check-passwd:
type: "file"
filename: "passwd"
check-groups:
type: "file"
filename: "group"
automatic-version-prefix: "${releasever}.<date:%Y%m%d>"
mutate-os-release: "${releasever}"

View File

@ -6,6 +6,8 @@ Documentation=https://gitlab.com/fedora/bootc/docs
ConditionVirtualization=vm ConditionVirtualization=vm
# This helps verify that we're running in a bootc/ostree based target. # This helps verify that we're running in a bootc/ostree based target.
ConditionPathIsMountPoint=/sysroot ConditionPathIsMountPoint=/sysroot
# For someone making a smaller image, assume they have this handled.
ConditionPathExists=/usr/bin/growpart
# We want to run before any e.g. large container images might be pulled. # We want to run before any e.g. large container images might be pulled.
DefaultDependencies=no DefaultDependencies=no
Requires=sysinit.target Requires=sysinit.target

View File

@ -3,15 +3,8 @@
packages: packages:
# Additional file compression/decompression # Additional file compression/decompression
- bzip2 zstd - bzip2 zstd
# Improved MOTD experience
- console-login-helper-messages-issuegen
- console-login-helper-messages-profile
# kdump support # kdump support
# https://github.com/coreos/fedora-coreos-tracker/issues/622 # https://github.com/coreos/fedora-coreos-tracker/issues/622
- kexec-tools - kexec-tools
# Container tooling
- toolbox
# nvme-cli for managing nvme disks # nvme-cli for managing nvme disks
- nvme-cli - nvme-cli
# Used by admins interactively
- lsof

View File

@ -3,28 +3,18 @@ recommends: true
include: include:
- ../tier-x/manifest.yaml - ../tier-x/manifest.yaml
- autoupdates.yaml
- networking-tools.yaml - networking-tools.yaml
- system-configuration.yaml - system-configuration.yaml
- coreos-user-experience.yaml - coreos-user-experience.yaml
- persistent-journal.yaml - persistent-journal.yaml
- initramfs-full.yaml - initramfs-full.yaml
- generic-growfs.yaml
packages: packages:
# Include and set the default editor
- nano
- nfs-utils - nfs-utils
# Additional firewall support; we aren't including these in RHCOS or they # Additional firewall support; we aren't including these in RHCOS or they
# don't exist in RHEL # don't exist in RHEL
- iptables-services - iptables-services
- WALinuxAgent-udev - WALinuxAgent-udev
# Allow communication between sudo and SSSD
# for caching sudo rules by SSSD.
# https://github.com/coreos/fedora-coreos-tracker/issues/445
- libsss_sudo
# SSSD; we only ship a subset of the backends
- sssd-client sssd-ad sssd-ipa sssd-krb5 sssd-ldap
# Used by admins interactively # Used by admins interactively
- openssl - openssl
# Provides terminal tools like clear, reset, tput, and tset # Provides terminal tools like clear, reset, tput, and tset
@ -34,19 +24,10 @@ packages:
# zram-generator (but not zram-generator-defaults) for F33 change # zram-generator (but not zram-generator-defaults) for F33 change
# https://github.com/coreos/fedora-coreos-tracker/issues/509 # https://github.com/coreos/fedora-coreos-tracker/issues/509
- zram-generator - zram-generator
# This one is in Python so isn't in FCOS, but we can safely add it here.
- sos
# These are random architecture-specific packages # These are random architecture-specific packages
packages-x86_64: packages-x86_64: []
- irqbalance packages-aarch64: []
packages-ppc64le:
- irqbalance
- librtas
- powerpc-utils-core
- ppc64-diag-rtas
packages-aarch64:
- irqbalance
postprocess: postprocess:
# Undo RPM scripts enabling units; we want the presets to be canonical # Undo RPM scripts enabling units; we want the presets to be canonical

View File

@ -3,9 +3,6 @@
packages: packages:
# Explicit dep for RHEL >= 10 # Explicit dep for RHEL >= 10
- crypto-policies-scripts - crypto-policies-scripts
# Configuring SSH keys, cloud provider check-in, etc
# TODO: needs Ignition kargs
# - afterburn afterburn-dracut
# NTP support # NTP support
- chrony - chrony
# Storage configuration/management # Storage configuration/management
@ -24,7 +21,4 @@ packages:
# Anything package layered will also tend to expect files dropped in # Anything package layered will also tend to expect files dropped in
# /etc/logrotate.d to work. Really, this is a legacy thing, but if we don't # /etc/logrotate.d to work. Really, this is a legacy thing, but if we don't
# have it then people's disks will slowly fill up with logs. # have it then people's disks will slowly fill up with logs.
- logrotate - logrotate
# Boost starving threads
# https://github.com/coreos/fedora-coreos-tracker/issues/753
- stalld

View File

@ -28,7 +28,6 @@ packages:
- NetworkManager - NetworkManager
- openssh-clients - openssh-clients
- openssh-server - openssh-server
- systemd-resolved
# linux-firmware now a recommends so let's explicitly include it # linux-firmware now a recommends so let's explicitly include it
# https://gitlab.com/cki-project/kernel-ark/-/commit/32271d0cd9bd52d386eb35497c4876a8f041f70b # https://gitlab.com/cki-project/kernel-ark/-/commit/32271d0cd9bd52d386eb35497c4876a8f041f70b
# https://src.fedoraproject.org/rpms/kernel/c/f55c3e9ed8605ff28cb9a922efbab1055947e213?branch=rawhide # https://src.fedoraproject.org/rpms/kernel/c/f55c3e9ed8605ff28cb9a922efbab1055947e213?branch=rawhide