Compare commits
30 Commits
v2024.1
...
jamesp-for
| Author | SHA1 | Date |
|---|---|---|
|
|
67b144cbf9 | |
|
|
7b4e013126 | |
|
|
c1a4b38c46 | |
|
|
0ac5ee04ba | |
|
|
da3c6ef677 | |
|
|
5276e451f4 | |
|
|
3ebf803f5f | |
|
|
e62452d096 | |
|
|
d88208bfba | |
|
|
3374cd8842 | |
|
|
92e7c1b2e1 | |
|
|
9bc06392c3 | |
|
|
7e65f01306 | |
|
|
1003402e6f | |
|
|
37900787f1 | |
|
|
22527b5f13 | |
|
|
93c50b4806 | |
|
|
c51559b7eb | |
|
|
578e95fe81 | |
|
|
9e300fb68f | |
|
|
06fddc9007 | |
|
|
934570054e | |
|
|
b44ea1ace5 | |
|
|
d7142132b7 | |
|
|
535cea4155 | |
|
|
444acb374b | |
|
|
edac3c53ca | |
|
|
461786bc6a | |
|
|
7369824a54 | |
|
|
b991db43cb |
|
|
@ -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
|
||||||
|
|
|
||||||
16
README.md
16
README.md
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
podman build \
|
||||||
|
--security-opt=label=disable \
|
||||||
|
--cap-add=all \
|
||||||
|
--device /dev/fuse \
|
||||||
|
-t localhost/fedora-bootc .
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
- |
|
- |
|
||||||
|
|
|
||||||
|
|
@ -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}"
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue