diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 08c0ffe..ef4c96e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,15 +1,17 @@ ---- -include: - - remote: https://gitlab.com/platform-engineering-org/gitlab-ci/-/raw/main/templates/build-image.gitlab-ci.yml +stages: + - build -build-image: +variables: + IMAGE_PREFIX: ${CI_REGISTRY}/${CI_PROJECT_PATH} + +.build-image: + stage: build + image: quay.io/buildah/stable:v1.38.0 + needs: [] + +build: extends: .build-image - parallel: - matrix: - - TIER: [tier-0, tier-1, tier-x] - variables: - EXTRA_ARGS: "--security-opt=label=disable --cap-add=all --build-arg MANIFEST=fedora-$TIER.yaml" - rules: - - if: $CI_PROJECT_NAMESPACE != "fedora/bootc" - when: never - - if: $CI_PIPELINE_SOURCE == "merge_request_event" + stage: build + script: | + buildah bud -f Containerfile.base --no-cache --security-opt=label=disable --cap-add=all --device /dev/fuse -t ${IMAGE_PREFIX}-base . + buildah bud -f Containerfile --no-cache --from ${IMAGE_PREFIX}-base -t ${IMAGE_PREFIX}-standard . diff --git a/Containerfile b/Containerfile index f512548..f21a91e 100644 --- a/Containerfile +++ b/Containerfile @@ -1,54 +1,59 @@ -# This container build uses some special features of podman that allow -# a process executing as part of a container build to generate a new container -# image "from scratch". -# -# This container build uses nested containerization, so you must build with e.g. -# podman build --security-opt=label=disable --cap-add=all --device /dev/fuse <...> -# -# # Why are we doing this? -# -# Today this base image build process uses rpm-ostree. There is a lot of things that -# rpm-ostree does when generating a container image...but important parts include: -# -# - auto-updating labels in the container metadata -# - Generating "chunked" content-addressed reproducible image layers (notice -# how there are ~60 layers in the generated image) -# -# The latter bit in particular is currently impossible to do from Containerfile. -# A future goal is adding some support for this in a way that can be honored by -# buildah (xref https://github.com/containers/podman/discussions/12605) -# -# # Why does this build process require additional privileges? -# -# Because it's generating a base image and uses containerization features itself. -# In the future some of this can be lifted. +# This generates the default base image. -FROM quay.io/fedora/fedora:rawhide as repos +# This is a local reference by default because we haven't shipped this image yet. +FROM localhost/fedora-bootc:base as rootfs +# Drop our package sets into /usr/share/doc, so that other things can parse it +COPY packages*.txt /usr/share/doc/fedora-bootc/ +# Overlay our defaults +COPY usr/ /usr/ +RUN < + +# If you want to configure the input rpm-md repositories, just override this +# container image. +FROM quay.io/fedora/fedora:rawhide as repos + +# BOOTSTRAPPING: This can be any image that has the following packages. +FROM quay.io/fedora/fedora:rawhide as builder +RUN dnf -y install rpm-ostree selinux-policy-targeted sqlite +# Copy in our source code. +COPY . /src +WORKDIR /src +RUN --mount=type=cache,target=/workdir \ + --mount=type=bind,from=repos,target=/repos \ + --mount=type=bind,rw=true,src=.,dst=/buildcontext,bind-propagation=shared \ + --mount=type=bind,from=repos,src=/,dst=/repos </dev/null + fi +done diff --git a/tier-0/group b/base/group similarity index 100% rename from tier-0/group rename to base/group diff --git a/tier-0/grub2-removals.yaml b/base/grub2-removals.yaml similarity index 100% rename from tier-0/grub2-removals.yaml rename to base/grub2-removals.yaml diff --git a/tier-0/initramfs.yaml b/base/initramfs.yaml similarity index 100% rename from tier-0/initramfs.yaml rename to base/initramfs.yaml diff --git a/tier-0/kernel-install.yaml b/base/kernel-install.yaml similarity index 100% rename from tier-0/kernel-install.yaml rename to base/kernel-install.yaml diff --git a/tier-0/kernel.yaml b/base/kernel.yaml similarity index 100% rename from tier-0/kernel.yaml rename to base/kernel.yaml diff --git a/tier-0/manifest.yaml b/base/manifest.yaml similarity index 87% rename from tier-0/manifest.yaml rename to base/manifest.yaml index a531a15..e1c31fa 100644 --- a/tier-0/manifest.yaml +++ b/base/manifest.yaml @@ -22,16 +22,19 @@ include: - initramfs.yaml - basic-fixes.yaml - kernel-install.yaml + - persistent-journal.yaml + - fedora-repos.yaml packages: + # This can be replaced later + - kernel # this is implied by dependencies but let's make it explicit - coreutils # We need dnf for building derived container images. In Fedora, this pulls # in dnf5. In CentOS/RHEL, this pulls in dnf(4). We can simplify this back to # just `dnf` once the `dnf` package is retired from Fedora. - /usr/bin/dnf - # Even in tier-0, we have this. If you don't want SELinux today, you'll need - # to build a custom image. + # If you don't want SELinux today, you'll need to build a custom image. - selinux-policy-targeted # And we want container-selinux because trying to layer it on later currently causes issues. - container-selinux diff --git a/tier-0/ostree.yaml b/base/ostree.yaml similarity index 100% rename from tier-0/ostree.yaml rename to base/ostree.yaml diff --git a/tier-0/passwd b/base/passwd similarity index 100% rename from tier-0/passwd rename to base/passwd diff --git a/tier-1/persistent-journal.yaml b/base/persistent-journal.yaml similarity index 100% rename from tier-1/persistent-journal.yaml rename to base/persistent-journal.yaml diff --git a/tier-0/postprocess-conf.yaml b/base/postprocess-conf.yaml similarity index 100% rename from tier-0/postprocess-conf.yaml rename to base/postprocess-conf.yaml diff --git a/fedora-40.yaml b/fedora-40.yaml deleted file mode 100644 index 647be5a..0000000 --- a/fedora-40.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# NB: This treefile is used by the legacy pungi path only to build tier-1. It -# will be removed in the future. -releasever: 40 -repos: - - fedora - - fedora-updates -include: fedora-bootc.yaml diff --git a/fedora-41.yaml b/fedora-41.yaml deleted file mode 100644 index 51026d4..0000000 --- a/fedora-41.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# NB: This treefile is used by the legacy pungi path only to build tier-1. It -# will be removed in the future. -releasever: 41 -repos: - - fedora - - fedora-updates -include: fedora-bootc.yaml diff --git a/fedora-bootc-config.json b/fedora-bootc-config.json deleted file mode 100644 index 3a53fe1..0000000 --- a/fedora-bootc-config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Labels": { - "containers.bootc": "1", - "bootc.diskimage-builder": "quay.io/centos-bootc/bootc-image-builder", - "redhat.id": "fedora", - "redhat.version-id": "rawhide" - }, - "StopSignal": "SIGRTMIN+3", - "Env": [ - "container=oci" - ] -} diff --git a/fedora-bootc.yaml b/fedora-bootc.yaml deleted file mode 100644 index 68dc692..0000000 --- a/fedora-bootc.yaml +++ /dev/null @@ -1,8 +0,0 @@ -metadata: - name: fedora-boot-tier1 - summary: Fedora Bootable Tier 1 - -include: - - fedora-generic.yaml - - tier-1/manifest.yaml - - tier-1/kernel.yaml diff --git a/fedora-rawhide.yaml b/fedora-rawhide.yaml deleted file mode 100644 index 5eec79c..0000000 --- a/fedora-rawhide.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# NB: This treefile is used by the legacy pungi path only to build tier-1. It -# will be removed in the future. -releasever: rawhide -repos: - - fedora-rawhide -include: fedora-bootc.yaml diff --git a/fedora-tier-0.yaml b/fedora-tier-0.yaml deleted file mode 100644 index 6cef2a1..0000000 --- a/fedora-tier-0.yaml +++ /dev/null @@ -1,8 +0,0 @@ -metadata: - name: fedora-boot-tier0 - summary: Fedora Bootable Tier 0 - -include: - - fedora-generic.yaml - - tier-0/manifest.yaml - - tier-0/kernel.yaml diff --git a/fedora-tier-1.yaml b/fedora-tier-1.yaml deleted file mode 120000 index d9c3fd0..0000000 --- a/fedora-tier-1.yaml +++ /dev/null @@ -1 +0,0 @@ -fedora-bootc.yaml \ No newline at end of file diff --git a/fedora-tier-x.yaml b/fedora-tier-x.yaml deleted file mode 100644 index 90a96fd..0000000 --- a/fedora-tier-x.yaml +++ /dev/null @@ -1,8 +0,0 @@ -metadata: - name: fedora-boot-tier-x - summary: Fedora Bootable Tier X - -include: - - fedora-generic.yaml - - tier-x/manifest.yaml - - tier-x/kernel.yaml diff --git a/fedora.repo b/fedora.repo deleted file mode 100644 index 373d78c..0000000 --- a/fedora.repo +++ /dev/null @@ -1,102 +0,0 @@ -# Note we use baseurl= here because using auto-selected mirrors conflicts with -# change detection: https://github.com/coreos/fedora-coreos-pipeline/issues/85. - -[fedora] -name=Fedora $releasever - $basearch -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ - https://dl.fedoraproject.org/pub/fedora-secondary/releases/$releasever/Everything/$basearch/os/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch -enabled=1 -#metadata_expire=7d -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False - -[fedora-updates] -name=Fedora $releasever - $basearch - Updates -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/updates/$releasever/Everything/$basearch/ - https://dl.fedoraproject.org/pub/fedora-secondary/updates/$releasever/Everything/$basearch/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch -enabled=1 -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -metadata_expire=6h -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False - -[fedora-updates-testing] -name=Fedora $releasever - $basearch - Test Updates -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/updates/testing/$releasever/Everything/$basearch/ - https://dl.fedoraproject.org/pub/fedora-secondary/updates/testing/$releasever/Everything/$basearch/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f$releasever&arch=$basearch -enabled=1 -gpgcheck=1 -metadata_expire=6h -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False - -[fedora-modular] -name=Fedora Modular $releasever - $basearch -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/$releasever/Modular/$basearch/os/ - https://dl.fedoraproject.org/pub/fedora-secondary/releases/$releasever/Modular/$basearch/os/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-$releasever&arch=$basearch -enabled=1 -#metadata_expire=7d -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch -skip_if_unavailable=False - -[fedora-updates-modular] -name=Fedora Modular $releasever - $basearch - Updates -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/updates/$releasever/Modular/$basearch/ - https://dl.fedoraproject.org/pub/fedora-secondary/updates/$releasever/Modular/$basearch/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f$releasever&arch=$basearch -enabled=1 -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -metadata_expire=6h -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch -skip_if_unavailable=False - -[fedora-updates-testing-modular] -name=Fedora Modular $releasever - $basearch - Test Updates -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/updates/testing/$releasever/Modular/$basearch/ - https://dl.fedoraproject.org/pub/fedora-secondary/updates/testing/$releasever/Modular/$basearch/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f$releasever&arch=$basearch -enabled=1 -gpgcheck=1 -metadata_expire=6h -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False - -[rawhide] -name=Fedora - Rawhide - Developmental packages for the next Fedora release -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/development/$releasever/Everything/$basearch/os/ - https://dl.fedoraproject.org/pub/fedora-secondary/development/$releasever/Everything/$basearch/os/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch -enabled=1 -#metadata_expire=7d -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False - -[fedora-devel] -name=Fedora $releasever - $basearch -baseurl=https://dl.fedoraproject.org/pub/fedora/linux/development/$releasever/Everything/$basearch/os/ - https://dl.fedoraproject.org/pub/fedora-secondary/development/$releasever/Everything/$basearch/os/ -#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch -enabled=1 -#metadata_expire=7d -repo_gpgcheck=0 -type=rpm -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-$releasever-primary -skip_if_unavailable=False diff --git a/packages-aarch64.txt b/packages-aarch64.txt new file mode 100644 index 0000000..77617c0 --- /dev/null +++ b/packages-aarch64.txt @@ -0,0 +1 @@ +irqbalance diff --git a/packages-excluded.txt b/packages-excluded.txt new file mode 100644 index 0000000..a8fec11 --- /dev/null +++ b/packages-excluded.txt @@ -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 diff --git a/packages-ppc64le.txt b/packages-ppc64le.txt new file mode 100644 index 0000000..79caa8d --- /dev/null +++ b/packages-ppc64le.txt @@ -0,0 +1,4 @@ +irqbalance +librtas +powerpc-utils-core +ppc64-diag-rtas diff --git a/packages-recommended-minimal.txt b/packages-recommended-minimal.txt new file mode 100644 index 0000000..673b78a --- /dev/null +++ b/packages-recommended-minimal.txt @@ -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 diff --git a/packages-x86_64.txt b/packages-x86_64.txt new file mode 100644 index 0000000..77617c0 --- /dev/null +++ b/packages-x86_64.txt @@ -0,0 +1 @@ +irqbalance diff --git a/packages.txt b/packages.txt new file mode 100644 index 0000000..703d412 --- /dev/null +++ b/packages.txt @@ -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 \ No newline at end of file diff --git a/tier-1/autoupdates.yaml b/tier-1/autoupdates.yaml deleted file mode 100644 index a416699..0000000 --- a/tier-1/autoupdates.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# Enable automatic updates by default -postprocess: - - | - #!/usr/bin/env bash - set -euo pipefail - target=/usr/lib/systemd/system/default.target.wants - mkdir -p $target - set -x - ln -s ../bootc-fetch-apply-updates.timer $target diff --git a/tier-1/coreos-user-experience.yaml b/tier-1/coreos-user-experience.yaml deleted file mode 100644 index 1098094..0000000 --- a/tier-1/coreos-user-experience.yaml +++ /dev/null @@ -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 diff --git a/tier-1/generic-growfs.yaml b/tier-1/generic-growfs.yaml deleted file mode 100644 index f64be92..0000000 --- a/tier-1/generic-growfs.yaml +++ /dev/null @@ -1,12 +0,0 @@ -add-files: - - - bootc-generic-growpart - - /usr/libexec/bootc-generic-growpart - - - bootc-generic-growpart.service - - /usr/lib/systemd/system/bootc-generic-growpart.service - -postprocess: - - | - #!/bin/bash - set -euo pipefail - mkdir -p /usr/lib/systemd/system/local-fs.target.wants - ln -s ../bootc-generic-growpart.service /usr/lib/systemd/system/local-fs.target.wants/bootc-generic-growpart.service diff --git a/tier-1/initramfs-full.yaml b/tier-1/initramfs-full.yaml deleted file mode 100644 index 2c55a83..0000000 --- a/tier-1/initramfs-full.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# Configuration for the "tier-1" initramfs -postprocess: - - | - #!/usr/bin/env bash - mkdir -p /usr/lib/dracut/dracut.conf.d - cat > /usr/lib/dracut/dracut.conf.d/30-bootc-tier-1.conf << 'EOF' - add_dracutmodules+=" lvm crypt fips " - EOF diff --git a/tier-1/kernel.yaml b/tier-1/kernel.yaml deleted file mode 120000 index d6f64cc..0000000 --- a/tier-1/kernel.yaml +++ /dev/null @@ -1 +0,0 @@ -../tier-0/kernel.yaml \ No newline at end of file diff --git a/tier-1/manifest.yaml b/tier-1/manifest.yaml deleted file mode 100644 index c84117b..0000000 --- a/tier-1/manifest.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# Flip this back on, we're going to be a larger system -recommends: true - -include: - - ../tier-x/manifest.yaml - - autoupdates.yaml - - networking-tools.yaml - - system-configuration.yaml - - coreos-user-experience.yaml - - persistent-journal.yaml - - initramfs-full.yaml - - generic-growfs.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 - -# These are random architecture-specific packages -packages-x86_64: - - irqbalance -packages-ppc64le: - - irqbalance - - librtas - - powerpc-utils-core - - ppc64-diag-rtas -packages-aarch64: - - irqbalance - -postprocess: - # Undo RPM scripts enabling units; we want the presets to be canonical - # https://github.com/projectatomic/rpm-ostree/issues/1803 - - | - #!/usr/bin/env bash - set -xeuo pipefail - rm -rf /etc/systemd/system/* - systemctl preset-all - rm -rf /etc/systemd/user/* - systemctl --user --global preset-all - # See: https://github.com/coreos/fedora-coreos-tracker/issues/1253 - # https://bugzilla.redhat.com/show_bug.cgi?id=2112857 - # https://github.com/coreos/rpm-ostree/issues/3918 - # Temporary workaround to remove the SetGID binary from liblockfile that is - # pulled by the s390utils but not needed for /usr/sbin/zipl. - - | - #!/usr/bin/env bash - set -xeuo pipefail - rm -f /usr/bin/dotlockfile - -# Things we don't expect to ship on the host. We currently -# have recommends: false so these could only come in via -# hard requirement, in which case the build will fail. -exclude-packages: - - perl - - perl-interpreter - - nodejs - - grubby - - cowsay # Just in case - # 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 - # Do not use legacy ifcfg config format in NetworkManager - # 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 diff --git a/tier-1/networking-tools.yaml b/tier-1/networking-tools.yaml deleted file mode 100644 index 7d6e7d1..0000000 --- a/tier-1/networking-tools.yaml +++ /dev/null @@ -1,20 +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 - -exclude-packages: - # We use NetworkManager - - systemd-networkd diff --git a/tier-1/system-configuration.yaml b/tier-1/system-configuration.yaml deleted file mode 100644 index 561da50..0000000 --- a/tier-1/system-configuration.yaml +++ /dev/null @@ -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 diff --git a/tier-x/kernel.yaml b/tier-x/kernel.yaml deleted file mode 120000 index d6f64cc..0000000 --- a/tier-x/kernel.yaml +++ /dev/null @@ -1 +0,0 @@ -../tier-0/kernel.yaml \ No newline at end of file diff --git a/tier-x/manifest.yaml b/tier-x/manifest.yaml deleted file mode 100644 index 492a379..0000000 --- a/tier-x/manifest.yaml +++ /dev/null @@ -1,45 +0,0 @@ -include: - - ../tier-0/manifest.yaml - -packages: - # 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 diff --git a/usr/lib/dracut/dracut.conf.d/30-bootc-full.conf b/usr/lib/dracut/dracut.conf.d/30-bootc-full.conf new file mode 100644 index 0000000..c580b15 --- /dev/null +++ b/usr/lib/dracut/dracut.conf.d/30-bootc-full.conf @@ -0,0 +1 @@ +add_dracutmodules+=" lvm crypt fips " diff --git a/usr/lib/systemd/system-preset/05-bootc.preset b/usr/lib/systemd/system-preset/05-bootc.preset new file mode 100644 index 0000000..e6e9067 --- /dev/null +++ b/usr/lib/systemd/system-preset/05-bootc.preset @@ -0,0 +1,7 @@ +# Our fallback +enable bootc-generic-growpart.service + +# We enable this by default just so we can say we have automatic +# updates on by default, like CoreOS. It's very much intended +# to be tweaked or replaced outside of trivial scenarios though. +enable bootc-fetch-apply-updates.timer diff --git a/tier-1/bootc-generic-growpart.service b/usr/lib/systemd/system/bootc-generic-growpart.service similarity index 100% rename from tier-1/bootc-generic-growpart.service rename to usr/lib/systemd/system/bootc-generic-growpart.service diff --git a/tier-1/bootc-generic-growpart b/usr/libexec/bootc-generic-growpart similarity index 100% rename from tier-1/bootc-generic-growpart rename to usr/libexec/bootc-generic-growpart