Rework build system further

- Move everything related to base/ into that directory, including Containerfile
- Introduce `bootc-base-image-rebuild-self` that can be used to
  resynthesize the base image, and it has docs.
- Rework the standard image to put its build instructions in
  usr/share/doc/bootc-image-standard to serve as a reference

Signed-off-by: Colin Walters <walters@verbum.org>
This commit is contained in:
Colin Walters committed 2025-02-11 08:57:48 -05:00
1 parent fffbf8853f
commit 6de35e0fc2
14 files changed
+165 -51

No files matched your search

@@ -0,0 +1 @@
irqbalance
@@ -0,0 +1,21 @@
# Packages excluded by default
# We use NetworkManager
systemd-networkd
# But without the legacy
# See https://github.com/coreos/fedora-coreos-config/pull/1991
NetworkManager-initscripts-ifcfg-rh
# Let's not have both legacy and nft versions in the image. Users are free to
# also layer legacy themselves if they want.
iptables-legacy
# We use bootupd
grubby
# Let's make sure initscripts doesn't get pulled back in
# https://github.com/coreos/fedora-coreos-tracker/issues/220#issuecomment-611566254
initscripts
# For (datacenter/cloud oriented) servers, we want to see the details by default.
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/HSMISZ3ETWQ4ETVLWZQJ55ARZT27AAV3/
plymouth
@@ -0,0 +1,4 @@
irqbalance
librtas
powerpc-utils-core
ppc64-diag-rtas
@@ -0,0 +1,45 @@
# This file is simply a list of packages recommended to be used by default.
# You can process this via e.g.
# grep -E -v '^#' packages-recommended.txt | xargs dnf -y install
# Used by admins interactively
attr
bash-completion
hostname
iproute
jq
less
vim-minimal
# deps of bootc, but let's be explicit. e.g. even if bootc drops the skopeo
# dep, we still want it
podman skopeo
# crun recommends but doesn't require criu and criu-libs. We want them for
# checkpoint/restore. https://github.com/coreos/fedora-coreos-tracker/issues/1370
crun criu criu-libs
# storage
cryptsetup
lvm2
tar
# zram-generator (but not zram-generator-defaults) for F33 change
# https://github.com/coreos/fedora-coreos-tracker/issues/509
zram-generator
# networking
iptables-nft
NetworkManager
openssh-clients
openssh-server
systemd-resolved
# linux-firmware now a recommends so let's explicitly include it
# https://gitlab.com/cki-project/kernel-ark/-/commit/32271d0cd9bd52d386eb35497c4876a8f041f70b
# https://src.fedoraproject.org/rpms/kernel/c/f55c3e9ed8605ff28cb9a922efbab1055947e213?branch=rawhide
linux-firmware
# security
polkit
sudo
# Allow for configuring different timezones
tzdata
# rpm-ostree
rpm-ostree nss-altfiles
# firmware updates
# If you're using linux-firmware, you probably also want fwupd
fwupd
@@ -0,0 +1 @@
irqbalance
@@ -0,0 +1,104 @@
# 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
# These are recomended by other packages installed above.
# recommended by containers-common-extra
qemu-user-static
# recommended by rpm-libs
rpm-plugin-audit
#recomended by gnupg2
pinentry
gnupg2-smime
# recommended by dracut
pigz
memstrack
kpartx
# recommended by libxcrypt
pkcs11-provider
# recommended by containers-common
fuse-overlayfs
# recommended by toolbox
cracklib-dicts
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
set -xeuo pipefail
dnf clean all
# Lots of cleaning
rm -vrf /var/log /var/cache /var/lib/dnf
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
set -euo pipefail
dn=$(dirname $0)
cd ${dn}
dnf_args=()
echo "Loading packages-excluded"
for x in $(grep -E -v '^#' packages-excluded.txt); do
dnf_args+=(--exclude ${x})
done
echo "Loading packages"
package_files=(packages-recommended-minimal.txt packages.txt)
pkgfile_for_arch=packages-$(arch).txt
if test -f ${pkgfile_for_arch}; then
echo "Loading ${pkgfile_for_arch}"
package_files+=(${pkgfile_for_arch})
fi
base_pkgs=$(grep -hE -v '^#' ${package_files[@]})
dnf -y ${dnf_args[@]} install $base_pkgs
# Ensure we regenerate the initramfs with new content
# https://docs.fedoraproject.org/en-US/bootc/initramfs/
kver=$(cd /usr/lib/modules && echo *); dracut -vf /usr/lib/modules/$kver/initramfs.img $kver
# Undo RPM scripts enabling units; we want the presets to be canonical for the base image.
# https://github.com/projectatomic/rpm-ostree/issues/1803
rm -rf /etc/systemd/system/*
systemctl preset-all
rm -rf /etc/systemd/user/*
systemctl --user --global preset-all