summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/mkosi.yml2
-rw-r--r--mkosi.conf.d/05-qemu-mem.conf11
-rw-r--r--mkosi.conf.d/10-centos.conf (renamed from mkosi.conf.d/20-centos.conf)0
-rw-r--r--mkosi.conf.d/10-debian.conf7
-rw-r--r--mkosi.conf.d/10-fedora.conf7
-rw-r--r--mkosi.conf.d/10-opensuse.conf7
-rw-r--r--mkosi.conf.d/10-systemd.conf62
-rw-r--r--mkosi.conf.d/10-ubuntu.conf8
-rw-r--r--mkosi.conf.d/11-centos-8/mkosi.conf5
-rw-r--r--mkosi.conf.d/11-centos-8/mkosi.reposdir/powertools.repo (renamed from mkosi.conf.d/21-centos-8/mkosi.reposdir/powertools.repo)0
-rw-r--r--mkosi.conf.d/20-arch.conf51
-rw-r--r--mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/systemd/system-preset/99-ignore.preset1
-rw-r--r--mkosi.extra/root/.gdbinit3
-rw-r--r--mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset6
-rwxr-xr-xmkosi.prepare16
-rwxr-xr-xmkosi.presets/00-base/mkosi.build (renamed from mkosi.build)28
-rw-r--r--mkosi.presets/00-base/mkosi.conf34
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-arch.conf31
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-centos-fedora.conf (renamed from mkosi.conf.d/20-centos-fedora.conf)43
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-debian-ubuntu.conf (renamed from mkosi.conf.d/20-debian-ubuntu/mkosi.conf)45
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-debian.conf (renamed from mkosi.conf.d/20-debian.conf)4
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-fedora.conf (renamed from mkosi.conf.d/20-fedora.conf)15
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-opensuse.conf (renamed from mkosi.conf.d/20-opensuse.conf)57
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/10-ubuntu.conf (renamed from mkosi.conf.d/20-ubuntu.conf)5
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/11-centos-8.conf (renamed from mkosi.conf.d/21-centos-8/mkosi.conf)11
-rw-r--r--mkosi.presets/00-base/mkosi.conf.d/11-centos-9.conf15
-rw-r--r--mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset19
-rw-r--r--mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/99-mkosi.preset4
-rw-r--r--mkosi.presets/00-base/mkosi.extra/usr/lib/tmpfiles.d/locale.conf (renamed from mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/tmpfiles.d/locale.conf)0
-rwxr-xr-xmkosi.presets/00-base/mkosi.prepare18
-rw-r--r--mkosi.presets/10-initrd.conf20
-rwxr-xr-xmkosi.presets/20-final/mkosi.build32
-rw-r--r--mkosi.presets/20-final/mkosi.conf38
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-arch.conf25
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-centos-fedora.conf24
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-debian-ubuntu.conf27
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-debian.conf8
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-fedora.conf14
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-opensuse.conf22
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/10-ubuntu.conf8
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/11-centos-8.conf14
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/11-centos-9.conf (renamed from mkosi.conf.d/21-centos-9.conf)7
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel-arch.conf20
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel-centos-fedora.conf34
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel-debian-ubuntu.conf32
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel-fedora.conf9
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel-opensuse.conf35
-rw-r--r--mkosi.presets/20-final/mkosi.conf.d/20-kernel.conf20
-rw-r--r--mkosi.presets/20-final/mkosi.extra/etc/issue (renamed from mkosi.extra/etc/issue)0
-rwxr-xr-xmkosi.presets/20-final/mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh (renamed from mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh)0
-rw-r--r--mkosi.presets/20-final/mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service (renamed from mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service)0
-rw-r--r--mkosi.presets/20-final/mkosi.kernel.config (renamed from mkosi.kernel.config)0
-rwxr-xr-xmkosi.presets/20-final/mkosi.postinst (renamed from mkosi.postinst)7
53 files changed, 596 insertions, 315 deletions
diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml
index c38a6e75b0..173caea489 100644
--- a/.github/workflows/mkosi.yml
+++ b/.github/workflows/mkosi.yml
@@ -73,7 +73,7 @@ jobs:
steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
- - uses: systemd/mkosi@54f80aa8f687ed4d1759f0a7329c64c3f0ff70ad
+ - uses: systemd/mkosi@3008c7e9383669b7fb6f6afe556c6fd28f28f8f4
- name: Configure
run: |
diff --git a/mkosi.conf.d/05-qemu-mem.conf b/mkosi.conf.d/05-qemu-mem.conf
new file mode 100644
index 0000000000..58de5fcf56
--- /dev/null
+++ b/mkosi.conf.d/05-qemu-mem.conf
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# Arch and CentOS 8 Stream initrds are rather big so we need to give QEMU more memory so the kernel can load
+# them without OOMing.
+
+[Match]
+Distribution=arch centos
+Release=rolling 8
+
+[Host]
+QemuMem=3G
diff --git a/mkosi.conf.d/20-centos.conf b/mkosi.conf.d/10-centos.conf
index 4181f03414..4181f03414 100644
--- a/mkosi.conf.d/20-centos.conf
+++ b/mkosi.conf.d/10-centos.conf
diff --git a/mkosi.conf.d/10-debian.conf b/mkosi.conf.d/10-debian.conf
new file mode 100644
index 0000000000..0eeaf07400
--- /dev/null
+++ b/mkosi.conf.d/10-debian.conf
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=debian
+
+[Distribution]
+Release=testing
diff --git a/mkosi.conf.d/10-fedora.conf b/mkosi.conf.d/10-fedora.conf
new file mode 100644
index 0000000000..4511dcdf87
--- /dev/null
+++ b/mkosi.conf.d/10-fedora.conf
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=fedora
+
+[Distribution]
+Release=38
diff --git a/mkosi.conf.d/10-opensuse.conf b/mkosi.conf.d/10-opensuse.conf
new file mode 100644
index 0000000000..98a7b4ef5c
--- /dev/null
+++ b/mkosi.conf.d/10-opensuse.conf
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=opensuse
+
+[Distribution]
+Release=tumbleweed
diff --git a/mkosi.conf.d/10-systemd.conf b/mkosi.conf.d/10-systemd.conf
index 2b02eba0d6..ad709829ba 100644
--- a/mkosi.conf.d/10-systemd.conf
+++ b/mkosi.conf.d/10-systemd.conf
@@ -10,60 +10,6 @@ OutputDirectory=mkosi.output
[Content]
BuildDirectory=mkosi.builddir
CacheDirectory=mkosi.cache
-ExtraTrees=src:/root/src
-Packages=
- acl
- bash-completion
- coreutils
- diffutils
- dnsmasq
- dosfstools
- dracut
- e2fsprogs
- findutils
- gcc # For sanitizer libraries
- gdb
- grep
- kbd
- kexec-tools
- kmod
- less
- mtools
- nano
- nftables
- openssl
- python3
- qrencode
- sed
- strace
- systemd
- tree
- udev
- util-linux
- valgrind
- wireguard-tools
- xfsprogs
- zsh
-
-BuildPackages=
- bc
- binutils
- bison
- clang
- flex
- gcc
- gettext
- git
- gperf
- lld
- llvm
- make
- meson
- pkgconf
- rpm
- rsync
- tar
- zstd
[Host]
Acl=yes
@@ -77,7 +23,7 @@ KernelCommandLineExtra=systemd.crash_shell
systemd.mask=auditd
# Tell the kernel to only log warning and up to the console.
loglevel=4
-
-[Validation]
-Password=
-Autologin=yes
+ # Disable the kernel's ratelimiting on userspace logging to kmsg.
+ printk.devkmsg=on
+ # Tell networkd to manage the ethernet interface.
+ ip=enp0s1:any
diff --git a/mkosi.conf.d/10-ubuntu.conf b/mkosi.conf.d/10-ubuntu.conf
new file mode 100644
index 0000000000..d6ea6d1708
--- /dev/null
+++ b/mkosi.conf.d/10-ubuntu.conf
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=ubuntu
+
+[Distribution]
+Release=jammy
+Repositories=universe
diff --git a/mkosi.conf.d/11-centos-8/mkosi.conf b/mkosi.conf.d/11-centos-8/mkosi.conf
new file mode 100644
index 0000000000..cde54e9e6e
--- /dev/null
+++ b/mkosi.conf.d/11-centos-8/mkosi.conf
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=centos
+Release=8
diff --git a/mkosi.conf.d/21-centos-8/mkosi.reposdir/powertools.repo b/mkosi.conf.d/11-centos-8/mkosi.reposdir/powertools.repo
index 1462257c08..1462257c08 100644
--- a/mkosi.conf.d/21-centos-8/mkosi.reposdir/powertools.repo
+++ b/mkosi.conf.d/11-centos-8/mkosi.reposdir/powertools.repo
diff --git a/mkosi.conf.d/20-arch.conf b/mkosi.conf.d/20-arch.conf
deleted file mode 100644
index 6dcbb9f6ab..0000000000
--- a/mkosi.conf.d/20-arch.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-#
-# Copyright © 2016 Zeal Jagannatha
-
-[Match]
-Distribution=arch
-
-[Content]
-Packages=
- alsa-lib
- base
- btrfs-progs
- compsize
- dhcp
- f2fs-tools
- fuse2
- gnutls
- iproute
- libbpf
- libcap-ng
- libfido2
- libmicrohttpd
- libmnl
- libpwquality
- libxkbcommon
- linux
- man-db
- numactl
- openbsd-netcat
- openssh
- polkit
- popt
- python-pefile
- python-psutil
- python-pytest
- quota-tools
- shadow
- tpm2-tss
- vim
-
-BuildPackages=
- bpf
- docbook-xsl
- libxslt
- linux-api-headers
- pahole
- perl
- python-docutils
- python-jinja
- python-lxml
- python-pyelftools
diff --git a/mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/systemd/system-preset/99-ignore.preset b/mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/systemd/system-preset/99-ignore.preset
deleted file mode 100644
index 43f25533d1..0000000000
--- a/mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/systemd/system-preset/99-ignore.preset
+++ /dev/null
@@ -1 +0,0 @@
-ignore *
diff --git a/mkosi.extra/root/.gdbinit b/mkosi.extra/root/.gdbinit
deleted file mode 100644
index 1a2163e3a5..0000000000
--- a/mkosi.extra/root/.gdbinit
+++ /dev/null
@@ -1,3 +0,0 @@
-set debuginfod enabled off
-set build-id-verbose 0
-set substitute-path ../src /root/src
diff --git a/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset b/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset
deleted file mode 100644
index e21493123c..0000000000
--- a/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-disable ssh.service
-disable sshd.service
-disable dnsmasq.service
-disable isc-dhcp-server.service
-disable isc-dhcp-server6.service
diff --git a/mkosi.prepare b/mkosi.prepare
deleted file mode 100755
index 7e00df0152..0000000000
--- a/mkosi.prepare
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1-or-later
-set -e
-
-if [ "$(grep '^ID=' /etc/os-release)" = "ID=\"centos\"" ] && [ "$(grep '^VERSION=' /etc/os-release)" = "VERSION=\"8\"" ]; then
- alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
- alternatives --set python3 /usr/bin/python3.9
-fi
-
-# Make sure the necessary test users are available in the build image. We do this here because the build
-# script does not run as root.
-if [ "$1" = "build" ]; then
- for id in 1 2 3; do
- getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
- done
-fi
diff --git a/mkosi.build b/mkosi.presets/00-base/mkosi.build
index 7ad3371ee7..e19251157d 100755
--- a/mkosi.build
+++ b/mkosi.presets/00-base/mkosi.build
@@ -162,31 +162,3 @@ if [ "$WITH_TESTS" = 1 ] ; then
fi
meson install -C "$BUILDDIR" --quiet --no-rebuild --only-changed
-
-if [ -d mkosi.kernel/ ]; then
- SRCDIR="$SRCDIR/mkosi.kernel"
- BUILDDIR="$BUILDDIR/mkosi.kernel"
- cd "$SRCDIR"
- mkdir -p "$BUILDDIR"
-
- # Ensure fast incremental builds by fixating these values which usually change for each build.
- export KBUILD_BUILD_TIMESTAMP="Fri Jun 5 15:58:00 CEST 2015"
- export KBUILD_BUILD_HOST="mkosi"
-
- scripts/kconfig/merge_config.sh -O "$BUILDDIR" \
- ../mkosi.kernel.config \
- tools/testing/selftests/bpf/config.x86_64 \
- tools/testing/selftests/bpf/config
-
- # Make sure systemd-boot boots this kernel and not the distro provided one by overriding the version.
- make O="$BUILDDIR" VERSION=99 -j "$(nproc)"
-
- KERNEL_RELEASE=$(make O="$BUILDDIR" VERSION=99 -s kernelrelease)
- mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
- make O="$BUILDDIR" VERSION=99 INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
- make O="$BUILDDIR" VERSION=99 INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
- mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
- make -C tools/testing/selftests -j "$(nproc)" O="$BUILDDIR" VERSION=99 KSFT_INSTALL_PATH="$DESTDIR/usr/lib/kernel/selftests" SKIP_TARGETS="" install
-
- ln -sf /usr/lib/kernel/selftests/bpf/bpftool "$DESTDIR/usr/bin/bpftool"
-fi
diff --git a/mkosi.presets/00-base/mkosi.conf b/mkosi.presets/00-base/mkosi.conf
new file mode 100644
index 0000000000..a65d427067
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.conf
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Output]
+Format=directory
+
+[Content]
+Bootable=no
+BuildSources=../..
+CleanPackageMetadata=no
+Packages=
+ kmod
+ less
+ systemd
+ udev
+
+BuildPackages=
+ acl
+ diffutils
+ gawk
+ binutils
+ clang
+ gettext
+ git
+ gperf
+ grep
+ lld
+ llvm
+ make
+ meson
+ pkgconf
+ rsync
+ sed
+ tar
+ zstd
diff --git a/mkosi.presets/00-base/mkosi.conf.d/10-arch.conf b/mkosi.presets/00-base/mkosi.conf.d/10-arch.conf
new file mode 100644
index 0000000000..473d199718
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-arch.conf
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=arch
+
+[Content]
+Packages=
+ gnutls
+ libbpf
+ libfido2
+ libmicrohttpd
+ libnftnl
+ libpwquality
+ libxkbcommon
+ openssl
+ qrencode
+ systemd-sysvcompat
+ tpm2-tss
+
+BuildPackages=
+ bpf
+ docbook-xsl
+ glib2
+ libxslt
+ linux-api-headers
+ perl
+ python
+ python-jinja
+ python-lxml
+ python-pefile
+ python-pyelftools
diff --git a/mkosi.conf.d/20-centos-fedora.conf b/mkosi.presets/00-base/mkosi.conf.d/10-centos-fedora.conf
index d78b924304..090daf60db 100644
--- a/mkosi.conf.d/20-centos-fedora.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-centos-fedora.conf
@@ -5,67 +5,40 @@ Distribution=centos fedora
[Content]
Packages=
- alsa-lib
audit-libs
- cryptsetup
- dhcp-server
- dnf
- fuse
- glib2
- glibc-minimal-langpack
- glibc.i686
+ cryptsetup-libs
gnutls
- iproute
- iproute-tc
- kernel-core
libasan
libbpf
- libcap-ng
- libcap-ng-utils
libfido2
libgcrypt
libmicrohttpd
- libmnl
+ libnftnl
libubsan
libxcrypt
libxkbcommon
- netcat
- numactl-libs
- openssh-server
- p11-kit
- pam
- passwd
- polkit
- popt
- procps-ng
- quota
+ openssl-libs
+ qrencode-libs
tpm2-tss
util-linux
- vim-common
BuildPackages=
/usr/bin/pkg-config
bpftool
docbook-xsl
- dwarves
- glibc-devel.i686
- glibc-static
- glibc-static.i686
+ findutils
libxslt
pam-devel
perl-interpreter
- pkgconfig(alsa)
pkgconfig(audit)
pkgconfig(blkid)
pkgconfig(bzip2)
pkgconfig(dbus-1)
pkgconfig(fdisk)
- pkgconfig(fuse)
pkgconfig(glib-2.0)
pkgconfig(gnutls)
pkgconfig(libacl)
pkgconfig(libbpf)
- pkgconfig(libcap-ng)
pkgconfig(libcap)
pkgconfig(libcryptsetup)
pkgconfig(libcurl)
@@ -74,7 +47,7 @@ BuildPackages=
pkgconfig(libidn2)
pkgconfig(libkmod)
pkgconfig(libmicrohttpd)
- pkgconfig(libmnl)
+ pkgconfig(libnftnl)
pkgconfig(libpcre2-8)
pkgconfig(libqrencode)
pkgconfig(libseccomp)
@@ -83,12 +56,12 @@ BuildPackages=
pkgconfig(mount)
pkgconfig(numa)
pkgconfig(openssl)
+ pkgconfig(openssl)
pkgconfig(p11-kit-1)
- pkgconfig(popt)
pkgconfig(pwquality)
pkgconfig(tss2-esys)
pkgconfig(tss2-mu)
pkgconfig(tss2-rc)
pkgconfig(valgrind)
pkgconfig(xkbcommon)
- python3-docutils
+ rpm
diff --git a/mkosi.conf.d/20-debian-ubuntu/mkosi.conf b/mkosi.presets/00-base/mkosi.conf.d/10-debian-ubuntu.conf
index 584536ef6b..f5c3afbef4 100644
--- a/mkosi.conf.d/20-debian-ubuntu/mkosi.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-debian-ubuntu.conf
@@ -5,69 +5,39 @@ Distribution=debian ubuntu
[Content]
Packages=
- btrfs-progs
- cryptsetup-bin
- dbus-broker
- default-dbus-session-bus
- f2fs-tools
- fdisk
- fuse
- gcc # Provides libasan/libubsan
- iproute2
- isc-dhcp-server
- libasound2
- libc6-i386
- libcap-ng-utils
- libcap-ng0
libfdisk1
libfido2-1
libglib2.0-0
libgnutls30
libidn2-0
libmicrohttpd12
- libmnl0
- libnuma1
+ libnftnl11
libp11-kit0
libpam0g
- libpopt0
libpwquality1
libqrencode4
+ libssl3
libtss2-dev # Use the -dev package to avoid churn in updating version numbers
- netcat-openbsd
- openssh-server
- passwd
- policykit-1
- procps
- python3-pefile
- python3-psutil
- python3-pytest
- quota
+ systemd
systemd-sysv
tzdata
- xxd
BuildPackages=
docbook-xsl
dpkg-dev
g++
- gcc-multilib
libacl1-dev
- libasound-dev
libaudit-dev
libblkid-dev
libbpf-dev
libbz2-dev
- libc6-dev
- libc6-dev-i386
libcap-dev
- libcap-ng-dev
libcryptsetup-dev
libcurl4-openssl-dev
libdbus-1-dev
libdw-dev
libfdisk-dev
libfido2-dev
- libfuse-dev
libgcrypt20-dev
libglib2.0-dev
libgnutls28-dev
@@ -75,12 +45,10 @@ BuildPackages=
libiptc-dev
libkmod-dev
libmicrohttpd-dev
- libmnl-dev
libmount-dev
- libnuma-dev
+ libnftnl-dev
libp11-kit-dev
libpam0g-dev
- libpopt-dev
libpwquality-dev
libqrencode-dev
libseccomp-dev
@@ -89,9 +57,10 @@ BuildPackages=
libxen-dev
libxkbcommon-dev
libzstd-dev
- pahole
- python3-docutils
+ python3
python3-jinja2
python3-lxml
+ python3-pefile
python3-pyelftools
+ python3-pytest
xsltproc
diff --git a/mkosi.conf.d/20-debian.conf b/mkosi.presets/00-base/mkosi.conf.d/10-debian.conf
index c251ab6542..020b02b61c 100644
--- a/mkosi.conf.d/20-debian.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-debian.conf
@@ -3,13 +3,9 @@
[Match]
Distribution=debian
-[Distribution]
-Release=testing
-
[Content]
Packages=
libbpf1
- linux-image-cloud-amd64
BuildPackages=
bpftool
diff --git a/mkosi.conf.d/20-fedora.conf b/mkosi.presets/00-base/mkosi.conf.d/10-fedora.conf
index 1574420487..035715979c 100644
--- a/mkosi.conf.d/20-fedora.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-fedora.conf
@@ -3,22 +3,13 @@
[Match]
Distribution=fedora
-[Distribution]
-Release=38
-
[Content]
-Packages=
- btrfs-progs
- compsize
- f2fs-tools
- python3dist(pefile)
- python3dist(psutil)
- python3dist(pytest)
-
BuildPackages=
- libcap-static
pkgconfig(libgcrypt)
pkgconfig(xencontrol)
+ python3
python3dist(jinja2)
python3dist(lxml)
+ python3dist(pefile)
python3dist(pyelftools)
+ python3dist(pytest)
diff --git a/mkosi.conf.d/20-opensuse.conf b/mkosi.presets/00-base/mkosi.conf.d/10-opensuse.conf
index caf84ba0ab..b8bce7148e 100644
--- a/mkosi.conf.d/20-opensuse.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-opensuse.conf
@@ -3,23 +3,13 @@
[Match]
Distribution=opensuse
-[Distribution]
-Release=tumbleweed
-
[Content]
+# We install gawk, gzip, grep, xz here explicitly so that the busybox versions don't get installed instead.
Packages=
- btrfs-progs
- dbus-1
- f2fs-tools
- fuse
- gcc # Provides libasan/libubsan
- glibc-32bit
- glibc-locale-base
- kernel-default
- libasound2
+ gawk
+ grep
+ gzip
libbpf1
- libcap-ng-utils
- libcap-ng0
libcrypt1
libcryptsetup12
libdw1
@@ -28,48 +18,34 @@ Packages=
libgcrypt20
libglib-2_0-0
libkmod2
- liblz4-1
- libmnl0
libmount1
- libnuma1
+ libnftnl11
+ libopenssl3
libp11-kit0
- libpopt0
libqrencode4
libseccomp2
libxkbcommon0
- openssh-server
+ libzstd1
pam
- python3-pefile
- python3-psutil
- python3-pytest
shadow
tpm2-0-tss
- vim
+ xz
BuildPackages=
- alsa-devel
audit-devel
bpftool
dbus-1-devel
docbook-xsl-stylesheets
- dwarves
fdupes
- fuse-devel
- gcc-32bit
gcc-c++
glib2-devel
- glibc-devel-32bit
- glibc-devel-static-32bit
glibc-locale
- glibc-static
intltool
libacl-devel
libapparmor-devel
libblkid-devel
libbpf-devel
- libbz2-devel
libcap-devel
- libcap-ng-devel
libcryptsetup-devel
libcurl-devel
libdw-devel
@@ -79,34 +55,27 @@ BuildPackages=
libgcrypt-devel
libgnutls-devel
libkmod-devel
- liblz4-devel
libmicrohttpd-devel
- libmnl-devel
libmount-devel
- libnuma-devel
+ libnftnl-devel
libpwquality-devel
libseccomp-devel
libselinux-devel
libxkbcommon-devel
libxslt-tools
+ libzstd-devel
openssl-devel
pam-devel
pciutils-devel
- pcre-devel
- popt-devel
- python3-docutils
+ python3
python3-Jinja2
python3-lxml
+ python3-pefile
python3-pyelftools
+ python3-pytest
qrencode-devel
shadow
- system-group-obsolete
- system-user-bin
- system-user-daemon
- system-user-nobody
- system-user-root
systemd-sysvinit
timezone
tpm2-0-tss-devel
xen-devel
- zlib-devel
diff --git a/mkosi.conf.d/20-ubuntu.conf b/mkosi.presets/00-base/mkosi.conf.d/10-ubuntu.conf
index 036c1734b2..717809fd03 100644
--- a/mkosi.conf.d/20-ubuntu.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/10-ubuntu.conf
@@ -3,14 +3,9 @@
[Match]
Distribution=ubuntu
-[Distribution]
-Release=jammy
-Repositories=universe
-
[Content]
Packages=
libbpf0
- linux-virtual
BuildPackages=
linux-tools-common
diff --git a/mkosi.conf.d/21-centos-8/mkosi.conf b/mkosi.presets/00-base/mkosi.conf.d/11-centos-8.conf
index d610212b61..ef001c92c9 100644
--- a/mkosi.conf.d/21-centos-8/mkosi.conf
+++ b/mkosi.presets/00-base/mkosi.conf.d/11-centos-8.conf
@@ -5,15 +5,12 @@ Distribution=centos
Release=8
[Content]
-Packages=
- python39
- python3.9dist(pefile)
- python3.9dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
- python3.9dist(psutil)
- python3.9dist(pytest)
-
BuildPackages=
libgcrypt-devel # CentOS Stream 8 libgcrypt-devel doesn't ship a pkg-config file.
+ platform-python
python3.9dist(jinja2)
python3.9dist(lxml)
+ python3.9dist(pefile)
python3.9dist(pyelftools)
+ python3.9dist(pytest)
+ python39
diff --git a/mkosi.presets/00-base/mkosi.conf.d/11-centos-9.conf b/mkosi.presets/00-base/mkosi.conf.d/11-centos-9.conf
new file mode 100644
index 0000000000..61c1d27f44
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.conf.d/11-centos-9.conf
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=centos
+Release=9
+
+[Content]
+BuildPackages=
+ pkgconfig(libgcrypt)
+ platform-python
+ python3dist(jinja2)
+ python3dist(lxml)
+ python3dist(pefile)
+ python3dist(pyelftools)
+ python3dist(pytest)
diff --git a/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset b/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset
new file mode 100644
index 0000000000..64baf3ba6e
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/00-mkosi.preset
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# mkosi adds its own ssh units via the --ssh switch so disable the default ones.
+disable ssh.service
+disable sshd.service
+
+# These are started manually in integration tests so don't start them by default.
+disable dnsmasq.service
+disable isc-dhcp-server.service
+disable isc-dhcp-server6.service
+
+# Pulled in via dracut-network by kexec-tools on Fedora.
+disable NetworkManager.service
+
+# Make sure dbus-broker is started by default on Debian/Ubuntu.
+enable dbus-broker.service
+
+# systemd-networkd is disabled by default on Fedora so make sure it is enabled.
+enable systemd-networkd.service
diff --git a/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/99-mkosi.preset b/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/99-mkosi.preset
new file mode 100644
index 0000000000..710ee7c6f9
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.extra/usr/lib/systemd/system-preset/99-mkosi.preset
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# Make sure that services are disabled by default (primarily for Debian/Ubuntu).
+disable *
diff --git a/mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/tmpfiles.d/locale.conf b/mkosi.presets/00-base/mkosi.extra/usr/lib/tmpfiles.d/locale.conf
index e1a8e8171a..e1a8e8171a 100644
--- a/mkosi.conf.d/20-debian-ubuntu/mkosi.extra/usr/lib/tmpfiles.d/locale.conf
+++ b/mkosi.presets/00-base/mkosi.extra/usr/lib/tmpfiles.d/locale.conf
diff --git a/mkosi.presets/00-base/mkosi.prepare b/mkosi.presets/00-base/mkosi.prepare
new file mode 100755
index 0000000000..269ba3e153
--- /dev/null
+++ b/mkosi.presets/00-base/mkosi.prepare
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -e
+
+if [ "$1" = "build" ]; then
+ . /etc/os-release
+
+ if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
+ alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
+ alternatives --set python3 /usr/bin/python3.9
+ fi
+
+ # Make sure the necessary test users are available in the build image. We do this here because the build
+ # script does not run as root.
+ for id in 1 2 3; do
+ getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
+ done
+fi
diff --git a/mkosi.presets/10-initrd.conf b/mkosi.presets/10-initrd.conf
new file mode 100644
index 0000000000..4201770f2e
--- /dev/null
+++ b/mkosi.presets/10-initrd.conf
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Output]
+Format=cpio
+# TODO: Switch to zstd once we stop building CentOS Stream 8.
+CompressOutput=xz
+
+[Content]
+BaseTrees=mkosi.output/base
+MakeInitrd=yes
+
+# Arch Linux doesn't split their gcc-libs package so we manually remove unneeded stuff here to make sure it
+# doesn't end up in the initrd.
+RemoveFiles=
+ /usr/lib/libgfortran.so*
+ /usr/lib/libgo.so*
+ /usr/lib/libgomp.so*
+ /usr/lib/libgphobos.so*
+ /usr/lib/libobjc.so*
+ /usr/lib/libstdc++.so*
diff --git a/mkosi.presets/20-final/mkosi.build b/mkosi.presets/20-final/mkosi.build
new file mode 100755
index 0000000000..ed355abd20
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.build
@@ -0,0 +1,32 @@
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -e
+
+if [ -d "$SRCDIR"/mkosi.kernel/ ]; then
+ SRCDIR="$SRCDIR/mkosi.kernel"
+ BUILDDIR="$BUILDDIR/mkosi.kernel"
+ cd "$SRCDIR"
+ mkdir -p "$BUILDDIR"
+
+ # Ensure fast incremental builds by fixating these values which usually change for each build.
+ export KBUILD_BUILD_TIMESTAMP="Fri Jun 5 15:58:00 CEST 2015"
+ export KBUILD_BUILD_HOST="mkosi"
+
+ scripts/kconfig/merge_config.sh -O "$BUILDDIR" \
+ ../mkosi.kernel.config \
+ tools/testing/selftests/bpf/config.x86_64 \
+ tools/testing/selftests/bpf/config
+
+ # Make sure systemd-boot boots this kernel and not the distro provided one by overriding the version.
+ make O="$BUILDDIR" VERSION=99 -j "$(nproc)"
+
+ KERNEL_RELEASE=$(make O="$BUILDDIR" VERSION=99 -s kernelrelease)
+ mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
+ make O="$BUILDDIR" VERSION=99 INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
+ make O="$BUILDDIR" VERSION=99 INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
+ mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
+ make -C tools/testing/selftests -j "$(nproc)" O="$BUILDDIR" VERSION=99 KSFT_INSTALL_PATH="$DESTDIR/usr/lib/kernel/selftests" SKIP_TARGETS="" install
+
+ mkdir -p "$DESTDIR"/usr/bin
+ ln -sf /usr/lib/kernel/selftests/bpf/bpftool "$DESTDIR/usr/bin/bpftool"
+fi
diff --git a/mkosi.presets/20-final/mkosi.conf b/mkosi.presets/20-final/mkosi.conf
new file mode 100644
index 0000000000..d15a17a161
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Content]
+BaseTrees=../../mkosi.output/base
+ExtraTrees=../../src:/root/src
+Initrds=../../mkosi.output/initrd.cpio.xz
+Packages=
+ acl
+ bash-completion
+ coreutils
+ diffutils
+ dnsmasq
+ dosfstools
+ e2fsprogs
+ findutils
+ gcc # Sanitizer libraries
+ gdb
+ grep
+ kbd
+ kexec-tools
+ less
+ mtools
+ nano
+ nftables
+ openssl
+ qrencode
+ sed
+ strace
+ tree
+ util-linux
+ valgrind
+ wireguard-tools
+ xfsprogs
+ zsh
+
+[Validation]
+Password=
+Autologin=yes
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-arch.conf b/mkosi.presets/20-final/mkosi.conf.d/10-arch.conf
new file mode 100644
index 0000000000..b0bbcf0c6a
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-arch.conf
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=arch
+
+[Content]
+Packages=
+ btrfs-progs
+ compsize
+ dhcp
+ f2fs-tools
+ glib2
+ iproute
+ linux
+ man-db
+ openbsd-netcat
+ openssh
+ polkit
+ python-pefile
+ python-psutil
+ python-pytest
+ python3
+ quota-tools
+ shadow
+ vim
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-centos-fedora.conf b/mkosi.presets/20-final/mkosi.conf.d/10-centos-fedora.conf
new file mode 100644
index 0000000000..d89f827839
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-centos-fedora.conf
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=centos fedora
+
+[Content]
+Packages=
+ cryptsetup
+ dhcp-server
+ dnf
+ glib2
+ iproute
+ iproute-tc
+ kernel-core
+ libcap-ng-utils
+ netcat
+ openssh-server
+ p11-kit
+ pam
+ passwd
+ polkit
+ procps-ng
+ quota
+ vim-common
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-debian-ubuntu.conf b/mkosi.presets/20-final/mkosi.conf.d/10-debian-ubuntu.conf
new file mode 100644
index 0000000000..804aa67228
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-debian-ubuntu.conf
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=debian ubuntu
+
+[Content]
+Packages=
+ btrfs-progs
+ cryptsetup-bin
+ dbus-broker
+ default-dbus-session-bus
+ f2fs-tools
+ fdisk
+ iproute2
+ isc-dhcp-server
+ libcap-ng-utils
+ netcat-openbsd
+ openssh-server
+ passwd
+ policykit-1
+ procps
+ python3
+ python3-pefile
+ python3-psutil
+ python3-pytest
+ quota
+ xxd
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-debian.conf b/mkosi.presets/20-final/mkosi.conf.d/10-debian.conf
new file mode 100644
index 0000000000..3eb7a5453e
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-debian.conf
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=debian
+
+[Content]
+Packages=
+ linux-image-cloud-amd64
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-fedora.conf b/mkosi.presets/20-final/mkosi.conf.d/10-fedora.conf
new file mode 100644
index 0000000000..5ae623e47d
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-fedora.conf
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=fedora
+
+[Content]
+Packages=
+ btrfs-progs
+ compsize
+ f2fs-tools
+ python3
+ python3dist(pefile)
+ python3dist(psutil)
+ python3dist(pytest)
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-opensuse.conf b/mkosi.presets/20-final/mkosi.conf.d/10-opensuse.conf
new file mode 100644
index 0000000000..f948dd6a37
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-opensuse.conf
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=opensuse
+
+[Content]
+Packages=
+ btrfs-progs
+ cryptsetup
+ dbus-broker
+ f2fs-tools
+ glibc-locale-base
+ kernel-default
+ libcap-ng-utils
+ openssh-server
+ python3
+ python3-pefile
+ python3-psutil
+ python3-pytest
+ quota
+ shadow
+ vim
diff --git a/mkosi.presets/20-final/mkosi.conf.d/10-ubuntu.conf b/mkosi.presets/20-final/mkosi.conf.d/10-ubuntu.conf
new file mode 100644
index 0000000000..eb88ca7644
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/10-ubuntu.conf
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=ubuntu
+
+[Content]
+Packages=
+ linux-virtual
diff --git a/mkosi.presets/20-final/mkosi.conf.d/11-centos-8.conf b/mkosi.presets/20-final/mkosi.conf.d/11-centos-8.conf
new file mode 100644
index 0000000000..2fa476454d
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/11-centos-8.conf
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=centos
+Release=8
+
+[Content]
+Packages=
+ platform-python
+ python3.9dist(pefile)
+ python3.9dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
+ python3.9dist(psutil)
+ python3.9dist(pytest)
+ python39
diff --git a/mkosi.conf.d/21-centos-9.conf b/mkosi.presets/20-final/mkosi.conf.d/11-centos-9.conf
index 0febf2c2ee..d6ab3ee1c3 100644
--- a/mkosi.conf.d/21-centos-9.conf
+++ b/mkosi.presets/20-final/mkosi.conf.d/11-centos-9.conf
@@ -6,13 +6,8 @@ Release=9
[Content]
Packages=
+ platform-python
python3dist(pefile)
python3dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
python3dist(psutil)
python3dist(pytest)
-
-BuildPackages=
- pkgconfig(libgcrypt)
- python3dist(jinja2)
- python3dist(lxml)
- python3dist(pyelftools)
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel-arch.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-arch.conf
new file mode 100644
index 0000000000..6ac0b58495
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-arch.conf
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+Distribution=arch
+
+[Content]
+Packages=
+ alsa-lib
+ fuse2
+ libcap
+ libcap-ng
+ libelf
+ libmnl
+ numactl
+ popt
+
+BuildPackages=
+ pahole
+ python-docutils
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel-centos-fedora.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-centos-fedora.conf
new file mode 100644
index 0000000000..c42f9916ee
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-centos-fedora.conf
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+Distribution=centos fedora
+
+[Content]
+Packages=
+ alsa-lib
+ elfutils-libelf
+ fuse
+ glibc.i686
+ libcap
+ libcap-ng
+ libcap-ng-utils
+ libmnl
+ numactl-libs
+ popt
+
+BuildPackages=
+ dwarves
+ glibc-devel.i686
+ glibc-static
+ glibc-static.i686
+ pkgconfig(alsa)
+ pkgconfig(fuse)
+ pkgconfig(libcap-ng)
+ pkgconfig(libcap)
+ pkgconfig(libelf)
+ pkgconfig(libmnl)
+ pkgconfig(numa)
+ pkgconfig(openssl)
+ pkgconfig(popt)
+ python3-docutils
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel-debian-ubuntu.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-debian-ubuntu.conf
new file mode 100644
index 0000000000..00338fa4d1
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-debian-ubuntu.conf
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+Distribution=debian ubuntu
+
+[Content]
+Packages=
+ fuse
+ libasound2
+ libc6-i386
+ libcap-ng0
+ libcap2
+ libelf1
+ libmnl0
+ libnuma1
+ libpopt0
+
+BuildPackages=
+ gcc-multilib
+ libasound-dev
+ libc6-dev
+ libc6-dev-i686
+ libcap-ng-dev
+ libcap-dev
+ libelf-dev
+ libfuse-dev
+ libmnl-dev
+ libnuma-dev
+ libpopt-dev
+ pahole
+ python3-docutils
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel-fedora.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-fedora.conf
new file mode 100644
index 0000000000..ea94c14346
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-fedora.conf
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+Distribution=fedora
+
+[Content]
+BuildPackages=
+ libcap-static
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel-opensuse.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-opensuse.conf
new file mode 100644
index 0000000000..aec631f1af
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel-opensuse.conf
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+Distribution=opensuse
+
+[Content]
+Packages=
+ fuse
+ glibc-32bit
+ libasound2
+ libcap-ng0
+ libcap2
+ libelf1
+ libmnl0
+ libnuma1
+ libpopt0
+
+BuildPackages=
+ alsa-devel
+ dwarves
+ fuse-devel
+ gcc-32bit
+ glibc-devel-32bit
+ glibc-devel-static-32bit
+ glibc-static
+ libcap-devel
+ libcap-ng-dev
+ libelf-devel
+ liblz4-dev
+ libmnl-dev
+ libnuma-devel
+ pcre-devel
+ popt-devel
+ python3-docutils
diff --git a/mkosi.presets/20-final/mkosi.conf.d/20-kernel.conf b/mkosi.presets/20-final/mkosi.conf.d/20-kernel.conf
new file mode 100644
index 0000000000..5505b41a86
--- /dev/null
+++ b/mkosi.presets/20-final/mkosi.conf.d/20-kernel.conf
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+PathExists=mkosi.kernel/
+
+[Content]
+BuildSources=./
+BuildPackages=
+ bc
+ binutils
+ bison
+ clang
+ flex
+ gcc
+ lld
+ llvm
+ make
+ make
+ rsync
+ tar
diff --git a/mkosi.extra/etc/issue b/mkosi.presets/20-final/mkosi.extra/etc/issue
index 6aa6fc0ec0..6aa6fc0ec0 100644
--- a/mkosi.extra/etc/issue
+++ b/mkosi.presets/20-final/mkosi.extra/etc/issue
diff --git a/mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh b/mkosi.presets/20-final/mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh
index b86d2d3e69..b86d2d3e69 100755
--- a/mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh
+++ b/mkosi.presets/20-final/mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh
diff --git a/mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service b/mkosi.presets/20-final/mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service
index 6539325108..6539325108 100644
--- a/mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service
+++ b/mkosi.presets/20-final/mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service
diff --git a/mkosi.kernel.config b/mkosi.presets/20-final/mkosi.kernel.config
index ab3ffe2fea..ab3ffe2fea 100644
--- a/mkosi.kernel.config
+++ b/mkosi.presets/20-final/mkosi.kernel.config
diff --git a/mkosi.postinst b/mkosi.presets/20-final/mkosi.postinst
index 82c23cf87a..4339d7fd22 100755
--- a/mkosi.postinst
+++ b/mkosi.presets/20-final/mkosi.postinst
@@ -73,3 +73,10 @@ fi
# Let tmpfiles.d/systemd-resolve.conf handle the symlink
rm -f /etc/resolv.conf
+
+. /etc/os-release
+
+if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
+ alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
+ alternatives --set python3 /usr/bin/python3.9
+fi