Merge tier-1 to the toplevel

Now we just have a minimal base, and what was tier-1 is now
just the default content.

We still do capture the previous conception of "tier-x" in
`packages-recommended-minimal.txt` so that people starting
from scratch can install using that.

Signed-off-by: Colin Walters <walters@verbum.org>
This commit is contained in:
Colin Walters 2025-01-21 17:33:50 -05:00
parent d6f376b36e
commit 8a6332e491
12 changed files with 99 additions and 124 deletions

View File

@ -3,26 +3,26 @@
# This is a local reference by default because we haven't shipped this image yet. # This is a local reference by default because we haven't shipped this image yet.
FROM localhost/fedora-bootc:base as rootfs FROM localhost/fedora-bootc:base as rootfs
# Drop our package sets into /usr/share/doc, so that other things can parse it # Drop our package sets into /usr/share/doc, so that other things can parse it
COPY packages-*.txt /usr/share/doc/fedora-bootc/ COPY packages*.txt /usr/share/doc/fedora-bootc/
# Overlay our defaults # Overlay our defaults
COPY tier-1/usr/ /usr/ COPY usr/ /usr/
RUN <<EORUN RUN <<EORUN
set -euo pipefail set -euo pipefail
dnf_args=() dnf_args=()
echo "Loading packages-excluded" echo "Loading packages-excluded"
for x in $(grep -E -v '^#' /usr/share/doc/fedora-bootc/packages-excluded.txt); do basedir=/usr/share/doc/fedora-bootc/
for x in $(grep -E -v '^#' ${basedir}/packages-excluded.txt); do
dnf_args+=(--exclude ${x}) dnf_args+=(--exclude ${x})
done done
echo "Loading packages-recommended" echo "Loading packages"
base_pkgs=$(grep -E -v '^#' /usr/share/doc/fedora-bootc/packages-recommended.txt) package_files=(${basedir}/packages-recommended-minimal.txt ${basedir}/packages.txt)
pkgfile_for_arch=/usr/share/doc/fedora-bootc/packages-$(arch).txt pkgfile_for_arch=/usr/share/doc/fedora-bootc/packages-$(arch).txt
arch_pkgs=
if test -f ${pkgfile_for_arch}; then if test -f ${pkgfile_for_arch}; then
echo "Loading ${pkgfile_for_arch}" echo "Loading ${pkgfile_for_arch}"
arch_pkgs=$(grep -E -v '^#' ${pkgfile_for_arch}) package_files+=(${pkgfile_for_arch})
fi fi
base_pkgs=$(grep -hE -v '^#' ${package_files[@]})
dnf -y ${dnf_args[@]} install $base_pkgs $arch_pkgs dnf -y ${dnf_args[@]} install $base_pkgs
# Ensure we regenerate the initramfs with new content # Ensure we regenerate the initramfs with new content
# https://docs.fedoraproject.org/en-US/bootc/initramfs/ # https://docs.fedoraproject.org/en-US/bootc/initramfs/

View File

@ -47,29 +47,17 @@ podman build --from quay.io/fedora/fedora:41 ...
You are of course also free to fork, customize, and build base images yourself. You are of course also free to fork, customize, and build base images yourself.
See this page[6] of the documentation for more information. See this page[6] of the documentation for more information.
## Tiers ## Images
At the current time, there is just one reference base image published At the current time, there is just one reference base image published
to the registry. Internally the content set is split up somewhat to the registry. There is a `Containerfile.base` which produces a
into "tiers", but this is an internal implementation detail and may change quite minimal base image, from which the default image derives.
at any time.
It is planned to rework and improve this in the future, especially More on the history from [this tracker issue](https://gitlab.com/fedora/bootc/tracker/-/issues/32).
to support smaller custom images. For more on this, see
[this tracker issue](https://gitlab.com/fedora/bootc/tracker/-/issues/32).
- **base**: A base image with the effective equivalent of installing `bootc kernel systemd dnf` - Containefile.base: A base image with the effective equivalent of installing `bootc kernel systemd dnf`
with "recommends" off. Intended as a derivation starting point for minimal systems. with "recommends" off. Intended as a derivation starting point for minimal systems.
- **tier-1**: This image is the default, what is published as - Containerfile: Produces the default much larger image; somewhat similar to CoreOS.
https://quay.io/repository/fedora/fedora-bootc
- **packages-recommended.txt**: This content set is the shared base used by all image-based
Fedora variants (IoT, Atomic Desktops, and CoreOS).
Changes to this tier may be done without accounting for external users.
**tier-1** inherits from **tier-x** and **tier-x** in turn inherit from **tier-0**.
All non-trivial changes to **tier-0** and **tier-x** should be ACKed by at least
one stakeholder of each Fedora variant WGs.
## More information ## More information

84
packages.txt Normal file
View File

@ -0,0 +1,84 @@
# A relatively large base image suitable for headless servers,
# a lot like CoreOS.
# Include and set the default editor
nano
nfs-utils
# Additional firewall support; we aren't including these in RHCOS or they
# don't exist in RHEL
iptables-services
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
openssl
# Provides terminal tools like clear, reset, tput, and tset
ncurses
# i18n
kbd
# zram-generator (but not zram-generator-defaults) for F33 change
# https://github.com/coreos/fedora-coreos-tracker/issues/509
zram-generator
# This one is in Python so isn't in FCOS, but we can safely add it here.
sos
# Additional file compression/decompression
bzip2 zstd
# Improved MOTD experience
console-login-helper-messages-issuegen
console-login-helper-messages-profile
# kdump support
# https://github.com/coreos/fedora-coreos-tracker/issues/622
kexec-tools
# Container tooling
toolbox
# nvme-cli for managing nvme disks
nvme-cli
# Used by admins interactively
lsof
# Explicit dep for RHEL >= 10
crypto-policies-scripts
# Configuring SSH keys, cloud provider check-in, etc
# TODO: needs Ignition kargs
# - afterburn afterburn-dracut
# NTP support
chrony
# Storage configuration/management
sg3_utils
## This is generally useful... https://github.com/CentOS/centos-bootc/issues/394
cloud-utils-growpart
# User configuration
passwd
shadow-utils
acl
# Manipulating the kernel keyring; used by bootc
keyutils
# There are things that write outside of the journal still (such as the
# classic wtmp, etc.). auditd also writes outside the journal but it has its
# own log rotation.
# 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
# have it then people's disks will slowly fill up with logs.
logrotate
# Boost starving threads
# https://github.com/coreos/fedora-coreos-tracker/issues/753
stalld
# This defines a set of tools that are useful for configuring, debugging,
# or manipulating the network of a system.
# Interactive Networking configuration during coreos-install
NetworkManager-tui
# Support for cloud quirks and dynamic config in real rootfs:
# https://github.com/coreos/fedora-coreos-tracker/issues/320
NetworkManager-cloud-setup
# Route manipulation and QoS
iproute iproute-tc
# Firewall manipulation
iptables nftables
# Interactive network tools for admins
socat net-tools bind-utils

View File

@ -1,17 +0,0 @@
# This file was forked/copied from Fedora CoreOS. TODO: resync
# once we have a good generic mechanism for sharing.
packages:
# Additional file compression/decompression
- bzip2 zstd
# Improved MOTD experience
- console-login-helper-messages-issuegen
- console-login-helper-messages-profile
# kdump support
# https://github.com/coreos/fedora-coreos-tracker/issues/622
- kexec-tools
# Container tooling
- toolbox
# nvme-cli for managing nvme disks
- nvme-cli
# Used by admins interactively
- lsof

View File

@ -1,34 +0,0 @@
# Flip this back on, we're going to be a larger system
recommends: true
include:
- ../tier-x/manifest.yaml
- networking-tools.yaml
- system-configuration.yaml
- coreos-user-experience.yaml
packages:
# Include and set the default editor
- nano
- nfs-utils
# Additional firewall support; we aren't including these in RHCOS or they
# don't exist in RHEL
- iptables-services
- 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
- openssl
# Provides terminal tools like clear, reset, tput, and tset
- ncurses
# i18n
- kbd
# zram-generator (but not zram-generator-defaults) for F33 change
# https://github.com/coreos/fedora-coreos-tracker/issues/509
- zram-generator
# This one is in Python so isn't in FCOS, but we can safely add it here.
- sos

View File

@ -1,16 +0,0 @@
# This defines a set of tools that are useful for configuring, debugging,
# or manipulating the network of a system. It is desired to keep this list
# generic enough to be shared downstream with RHCOS.
packages:
# Interactive Networking configuration during coreos-install
- NetworkManager-tui
# Support for cloud quirks and dynamic config in real rootfs:
# https://github.com/coreos/fedora-coreos-tracker/issues/320
- NetworkManager-cloud-setup
# Route manipulation and QoS
- iproute iproute-tc
# Firewall manipulation
- iptables nftables
# Interactive network tools for admins
- socat net-tools bind-utils

View File

@ -1,30 +0,0 @@
# These are packages that are related to configuring parts of the system.
packages:
# Explicit dep for RHEL >= 10
- crypto-policies-scripts
# Configuring SSH keys, cloud provider check-in, etc
# TODO: needs Ignition kargs
# - afterburn afterburn-dracut
# NTP support
- chrony
# Storage configuration/management
- sg3_utils
## This is generally useful... https://github.com/CentOS/centos-bootc/issues/394
- cloud-utils-growpart
# User configuration
- passwd
- shadow-utils
- acl
# Manipulating the kernel keyring; used by bootc
- keyutils
# There are things that write outside of the journal still (such as the
# classic wtmp, etc.). auditd also writes outside the journal but it has its
# own log rotation.
# 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
# have it then people's disks will slowly fill up with logs.
- logrotate
# Boost starving threads
# https://github.com/coreos/fedora-coreos-tracker/issues/753
- stalld