]> git.ipfire.org Git - thirdparty/mkosi.git/log
thirdparty/mkosi.git
19 months agoStart virtiofsd with --security-label 2250/head
Daan De Meyer [Mon, 8 Jan 2024 10:32:27 +0000 (11:32 +0100)] 
Start virtiofsd with --security-label

This makes sure selinux relabeling works as expected when booting
off virtiofs

19 months agoMount /sys, /run and /dev in relaxed mode as well
Daan De Meyer [Mon, 8 Jan 2024 10:32:14 +0000 (11:32 +0100)] 
Mount /sys, /run and /dev in relaxed mode as well

19 months agoOnly mount /etc/resolv.conf into sandbox if not in relaxed mode
Daan De Meyer [Mon, 8 Jan 2024 10:25:37 +0000 (11:25 +0100)] 
Only mount /etc/resolv.conf into sandbox if not in relaxed mode

In relaxed mode we already mount /etc so no need to mount resolv.conf
separately.

19 months agosandbox: Only mount host dirs that exist
Daan De Meyer [Mon, 8 Jan 2024 10:20:52 +0000 (11:20 +0100)] 
sandbox: Only mount host dirs that exist

19 months agoUse bubblewrap to set up the tools tree instead of doing it ourselves
Daan De Meyer [Tue, 2 Jan 2024 07:37:40 +0000 (08:37 +0100)] 
Use bubblewrap to set up the tools tree instead of doing it ourselves

The problem with overmounting the host's /usr (in a private mount
namespace) is that we have no control over the symlinks in the root
directory (/lib, /bin, /lib64) and if these symlinks don't match
between the host distribution and the tools tree distribution, all
kinds of weird breakage starts happening. For example, using Fedora
tools trees on Arch Linux is currently broken because /lib64 on Arch
Linux points to /usr/lib whereas on Fedora it points to /usr/lib64.

Because we can't (and shouldn't) modify the symlinks of the host's
root filesystem, we need to set up the tools tree in a sandbox that
we chroot into, so that we have full control over the rootfs of the
sandbox and can make sure the symlinks are correct. Luckily, we
already do just that with bubblewrap, except that currently we mount
the tools tree over /usr ourselves and then just carry that over into
the bubblewrap sandbox.

Instead, we stop mounting over the host's /usr ourselves and have
bubblewrap pick the right /usr itself. We also copy the symlinks from
the tools tree or the host if there is no tools tree.

Because we don't mount over the host's /usr anymore, we have to run
every tool that should come from the tools tree with bubblewrap now.
The side effect of this is that almost all of our tools now run
sandboxed. We also have to make use of find_binary() everywhere
instead of shutil.which() to make sure we look for binaries in the
tools tree when required. Various other codepaths that look into /usr
also have to be modified to look into the tools tree when needed.

Also, because we don't unshare the user namespace in the main mkosi
process anymore now, we can get rid of a lot of chown()'s in qemu.py
and opening the qemu device file descriptors can be moved into
run_qemu() itself.

We also don't have to make sure all python modules are loaded anymore
as the host's /usr is never overmounted so the required python modules
will be available for the entire runtime of the mkosi process.

Because virtiofsd is now executed with bubblewrap, we use bubblewrap
to set up the required uidmap instead of relying on virtiofsd to do it
with newuidmap/newgidmap. Note that this breaks RuntimeTrees= as
virtiofsd unconditionally tries to drop groups with setgroups() which
fails with EPERM in an unprivileged user namespace set up by bubblewrap.
This is fixed by https://gitlab.com/virtio-fs/virtiofsd/-/merge_requests/207
which is still awaiting review.

To make this work codewise, this commit renames the bwrap() function
to sandbox_cmd() (similar to chroot_cmd() and apivfs_cmd()) which now
returns a command line instead of executing the command itself. run()
is modified to take an extra "sandbox" arguments which is simply the
part of the full command that sets up the sandbox. Context and Config
both learn new sandbox() methods which set up the sandbox for each
object respectively (mostly by adding extra bind mounts).

Because almost every call to run() now takes a sandbox, this gives us
a lot of control over the individual environment for each tool we run.
We make use of this to restrict each tool we run to the minimal possible
sandbox that that tool needs to run. By specifically mounting in the
required paths for each tool we run, we also make sure these are always
available instead of relying that somewhere we mount a path that has the
input in it.

Because we allow passing arbitrary options to mkosi qemu, mkosi boot and
various other verbs, we run these verbs with a relaxed sandbox, where we
mount in most directories from the host. This means that whatever
directories users specify will be available.

In terms of CI, the extra sandboxing means that our previous approach of
building various systemd binaries from source and symlinking them to
/usr/bin doesn't work anymore. Instead, we opt to always use tools trees
and drop the host builds from the testing matrix. This also simplifies
and speeds up the github action as we don't have to compile systemd and
xfsprogs from source and we have to install fewer packages.

19 months agoMerge pull request #2246 from DaanDeMeyer/fixes
Daan De Meyer [Fri, 5 Jan 2024 18:47:15 +0000 (19:47 +0100)] 
Merge pull request #2246 from DaanDeMeyer/fixes

Various fixes and improvements

19 months agoAdd groupadd script 2246/head
Daan De Meyer [Fri, 5 Jan 2024 13:26:06 +0000 (14:26 +0100)] 
Add groupadd script

19 months agoaction: Print id output when setting up /dev/kvm and friends
Daan De Meyer [Fri, 5 Jan 2024 13:04:51 +0000 (14:04 +0100)] 
action: Print id output when setting up /dev/kvm and friends

Useful debugging information.

19 months agoDon't copy xattrs from mkosi.extra and friends
Daan De Meyer [Fri, 5 Jan 2024 13:01:26 +0000 (14:01 +0100)] 
Don't copy xattrs from mkosi.extra and friends

These directories and files might have selinux xattrs and such that
we don't want to end up in the image so let's make sure that we don't
copy xattrs from skeleton and extra trees.

19 months agoUse recognizable tag names for RuntimeTrees= mounts
Daan De Meyer [Thu, 4 Jan 2024 12:26:06 +0000 (13:26 +0100)] 
Use recognizable tag names for RuntimeTrees= mounts

This makes it easier to do the mount manually in images with systemd
older than v254.

19 months agoAdd RuntimeScratch= setting
Daan De Meyer [Thu, 4 Jan 2024 12:17:27 +0000 (13:17 +0100)] 
Add RuntimeScratch= setting

When booting output formats that reside almost entirely in memory
(initrd, UKI, ESP), doing any kind of write heavy operation in the
booted VM has a high chance of leading to OOM errors as all files
will be written in memory.

When booting disk images, unless one is using RuntimeSize=, one will
often run into disk space issues when writing lots of data.

When booting off virtiofs and doing write heavy operations, virtiofsd
can run out of file descriptors or become very slow.

To allow doing write heavy operations in all these scenarios, let's
add RuntimeScratch= which mounts extra scratch space to /var/tmp that
can be used for write heavy operations.

19 months agoUpdate qemu kvm device version
Daan De Meyer [Thu, 4 Jan 2024 13:17:21 +0000 (14:17 +0100)] 
Update qemu kvm device version

Turns out the required patch was not included in 8.3 but will be
included in 9.0.

19 months agoInstall tmux in default images
Daan De Meyer [Thu, 4 Jan 2024 13:06:09 +0000 (14:06 +0100)] 
Install tmux in default images

Helps with debugging

19 months agoRevert "Copy over kernel images from /boot for opensuse as well"
Daan De Meyer [Thu, 4 Jan 2024 18:45:33 +0000 (19:45 +0100)] 
Revert "Copy over kernel images from /boot for opensuse as well"

Opensuse leap is too old for us to support since it's still split
usr so let's revert this commit.

This reverts commit 36c63f3cd9de9196d57bc09ecfe2af8659eafd50.

19 months agoFix importlib usage
Daan De Meyer [Fri, 5 Jan 2024 08:23:55 +0000 (09:23 +0100)] 
Fix importlib usage
We have to use as_file() on the final path, not the module path.

Because as_file() only learned to support directories in python 3.12,
we backport the 3.12 implementation temporarily in mkosi itself.

Because as_file() does not apply the executable bit, we apply it
ourselves after parsing the config. This requires delaying the check
if scripts are executable to some later point so we can parse the
config without failing because scripts are not executable.

This fixes mkosi zipapps.

19 months agoCopy over kernel images from /boot for opensuse as well
Daan De Meyer [Thu, 4 Jan 2024 09:49:21 +0000 (10:49 +0100)] 
Copy over kernel images from /boot for opensuse as well

On Tumbleweed they're already in /usr/lib/modules but on older
releases they aren't so copy them over like we do for debian.

19 months agoci: Disable jobs with arch linux tools trees for now.
Daan De Meyer [Thu, 4 Jan 2024 14:59:24 +0000 (15:59 +0100)] 
ci: Disable jobs with arch linux tools trees for now.

Arch has qemu 8.2 which has severely broken TCG acceleration
(see https://gitlab.com/qemu-project/qemu/-/issues/2070). Let's disable
the jobs with arch tools trees until the bug is fixed.

19 months agoAllow building default ubuntu image for jammy
Daan De Meyer [Wed, 3 Jan 2024 21:14:31 +0000 (22:14 +0100)] 
Allow building default ubuntu image for jammy

Useful for debugging CI failures since CI also runs jammy.

We also make sure the shared configuration is included after the
distribution specific configuration so we can set defaults in the
distribution specific configuration and use it in the shared
configuration.

19 months agoMerge pull request #2236 from DaanDeMeyer/fixes
Daan De Meyer [Wed, 3 Jan 2024 18:30:20 +0000 (19:30 +0100)] 
Merge pull request #2236 from DaanDeMeyer/fixes

Various fixes and improvements

19 months agoinitrd: Install util-linux-core on Fedora
Daan De Meyer [Wed, 3 Jan 2024 15:33:21 +0000 (16:33 +0100)] 
initrd: Install util-linux-core on Fedora

With https://bodhi.fedoraproject.org/updates/FEDORA-2023-7ba9a1b546,
sulogin is moved to util-linux-core on Fedora which means util-linux-core
has everything required for the initrd so let's use util-linux-core instead
of util-linux to save on disk space.

19 months agoOnly mount cache overlay if base trees are specified and Overlay= is not enabled 2236/head
Daan De Meyer [Wed, 3 Jan 2024 13:46:16 +0000 (14:46 +0100)] 
Only mount cache overlay if base trees are specified and Overlay= is not enabled

The setup() method of some distributions creates files in the root
directory which means that checking if the root directory is empty
doesn't work. Instead, let's check if any base trees were specified
explicitly.

19 months agoCache skeleton trees
Daan De Meyer [Wed, 3 Jan 2024 13:44:09 +0000 (14:44 +0100)] 
Cache skeleton trees

These are only intended for files that affect package manager
operation so we should be able to cache this step without any issues
since if the skeleton tree is changed, users are likely going to want
to throw away their cache regardless.

19 months agotree: Simplify copy_tree() a little
Daan De Meyer [Wed, 3 Jan 2024 13:43:41 +0000 (14:43 +0100)] 
tree: Simplify copy_tree() a little

19 months agoUnshare fewer namespaces
Daan De Meyer [Tue, 2 Jan 2024 16:11:12 +0000 (17:11 +0100)] 
Unshare fewer namespaces

These were primarily unshared to get the systemd unit test suite passing.
Now that the systemd test suite passes even if these are not unshared,
let's stop unsharing them as they don't make much sense for the operations
were doing and nspawn doesn't run when some of these are unshared.

19 months agoAdd more keyword only arguments for kmod functions
Daan De Meyer [Tue, 2 Jan 2024 12:45:35 +0000 (13:45 +0100)] 
Add more keyword only arguments for kmod functions

19 months agoStop using bwrap() for systemd-dissect
Daan De Meyer [Tue, 2 Jan 2024 12:40:18 +0000 (13:40 +0100)] 
Stop using bwrap() for systemd-dissect

systemd-dissect needs to mount stuff in the current mount namespace,
bwrap always creates a new mount namespace, so we can't sandbox
systemd-dissect.

19 months agoRemove clobber argument from copy_tree()
Daan De Meyer [Tue, 2 Jan 2024 12:35:27 +0000 (13:35 +0100)] 
Remove clobber argument from copy_tree()

Unused so let's remove it.

19 months agoRename various symbols
Daan De Meyer [Mon, 1 Jan 2024 16:49:08 +0000 (17:49 +0100)] 
Rename various symbols

- Let's get rid of the Mkosi prefix everywhere. Python has namespaced
modules for a reason, let's make use of that.
- Let's also rename State to Context, to match systemd where Context
is generally used as well instead of State.

19 months agoUse functools.total_ordering for GenericVersion
Daan De Meyer [Mon, 1 Jan 2024 14:20:16 +0000 (15:20 +0100)] 
Use functools.total_ordering for GenericVersion

19 months agoDon't specify smm at all if it's not supported
Daan De Meyer [Wed, 3 Jan 2024 14:04:11 +0000 (15:04 +0100)] 
Don't specify smm at all if it's not supported

19 months agoPreserve target directories stat when copying extra/skeleton trees
Daan De Meyer [Tue, 2 Jan 2024 20:55:05 +0000 (21:55 +0100)] 
Preserve target directories stat when copying extra/skeleton trees

When copying extra and skeleton trees, let's not touch the permissions
of directories that already exist in the image's root directory. 99%
of the time, the directories are only in the extra tree to make sure
the files go in the right directory in the image's root directory and
serve no other purpose so it makes sense to ignore their metadata in
this case.

Because cp does not support this natively (either all permissions are
copied for directories and files or none are copied), we implement this
ourselves by saving the necessary permissions before we call cp and
restoring them afterwards).

19 months agoPreserve ownership when copying base trees
Daan De Meyer [Tue, 2 Jan 2024 20:52:31 +0000 (21:52 +0100)] 
Preserve ownership when copying base trees

Base trees ownership should be kept intact when copying, otherwise
we lose valuable information.

19 months agoAdd more ovmf locations
Daan De Meyer [Wed, 3 Jan 2024 08:01:54 +0000 (09:01 +0100)] 
Add more ovmf locations

debian removed their old variables in favor of new ones so let's
make sure we look for the new ones as well.

19 months agoci: Install systemd-ukify Debian/Ubuntu when available
Joerg Behrmann [Mon, 1 Jan 2024 15:03:58 +0000 (16:03 +0100)] 
ci: Install systemd-ukify Debian/Ubuntu when available

Debian unstable has split off ukify into its own package so let's
update our debian images to accomodate that change.

19 months agoDon't use smm on aarch64
Daan De Meyer [Wed, 3 Jan 2024 07:50:29 +0000 (08:50 +0100)] 
Don't use smm on aarch64

This property is only supported on the x86 machines so stop trying
to use it on arm.

19 months agoExtend ukify hint
Daan De Meyer [Tue, 2 Jan 2024 19:21:59 +0000 (20:21 +0100)] 
Extend ukify hint

Let's also mention ToolsTree=default and that Bootable=no doesn't
need ukify to be available.

Fixes #2220

19 months agoMount /etc/alternatives if it exists
Cornelius Hoffmann [Tue, 2 Jan 2024 16:51:09 +0000 (17:51 +0100)] 
Mount /etc/alternatives if it exists

In (at least) Debian, some binaries such as awk point to
/etc/alternatives which would not exist and cause apt-key to fail
without specifying the exact keyring (e.g. when using /etc/apt/trusted.gpg.d)

Fixes #2227

19 months agoDisable debsig for dpkg by default as they do in debian.
Cornelius Hoffmann [Tue, 2 Jan 2024 15:39:18 +0000 (16:39 +0100)] 
Disable debsig for dpkg by default as they do in debian.

From the default dpkg.conf:
# Do not enable debsig-verify by default; since the distribution is not using
# embedded signatures, debsig-verify would reject all packages.
no-debsig

19 months agoUpdate link to systemd's mkosi files
Nils K [Fri, 29 Dec 2023 21:37:21 +0000 (22:37 +0100)] 
Update link to systemd's mkosi files

19 months agoAdd missing item title in documentation
Lars Christensen [Fri, 29 Dec 2023 12:50:56 +0000 (13:50 +0100)] 
Add missing item title in documentation

19 months agoMount scripts into sandbox as well
Daan De Meyer [Tue, 26 Dec 2023 15:21:06 +0000 (16:21 +0100)] 
Mount scripts into sandbox as well

The script might not come from the directory mkosi is running in so
we have to make sure it gets mounted into the sandbox.

20 months agoUse signed-by instead of setting Dir::Etc::trusted
Daan De Meyer [Fri, 22 Dec 2023 16:44:52 +0000 (17:44 +0100)] 
Use signed-by instead of setting Dir::Etc::trusted

apt complains about using the latter so let's use signed-by.

20 months agoMove creation of /etc/static symlink to package manager tree setup
Daan De Meyer [Fri, 22 Dec 2023 15:55:29 +0000 (16:55 +0100)] 
Move creation of /etc/static symlink to package manager tree setup

bwrap's --symlink is not idempotent, so let's create the symlink
when setting up the package manager tree instead.

20 months agoDrop SYSTEMD_LOG_LEVEL=debug when installing systemd-boot
Daan De Meyer [Fri, 22 Dec 2023 15:37:17 +0000 (16:37 +0100)] 
Drop SYSTEMD_LOG_LEVEL=debug when installing systemd-boot

This seems to have gotten in accidentally.

20 months agoMerge pull request #2212 from DaanDeMeyer/usr
Daan De Meyer [Fri, 22 Dec 2023 15:37:58 +0000 (16:37 +0100)] 
Merge pull request #2212 from DaanDeMeyer/usr

Overlay /usr from package manager trees on top of /usr in bwrap()

20 months agoMake sure we cache state from package managers as well 2212/head
Daan De Meyer [Fri, 22 Dec 2023 14:39:44 +0000 (15:39 +0100)] 
Make sure we cache state from package managers as well

To do this we start using cache/ and lib/ directories underneath
the cache directory.

We also fix our cleanup logic to only remove the relevant directories
in case the cache directory is configured to be /var or similar.

20 months agoMount entire /etc from package manager tree into sandbox
Daan De Meyer [Fri, 22 Dec 2023 14:29:06 +0000 (15:29 +0100)] 
Mount entire /etc from package manager tree into sandbox

Instead of mounting individual directories, let's just mount the
entire /etc into the sandbox. This allows any tool we run through
the sandbox to pick up configuration from the package manager tree
without having to add explicit support for it in mkosi.

This also removes our special casing for uki.conf. ukify will now
pick up its configuration from its canonical location just like all
the other tools.

20 months agoOverlay /usr from package manager trees on top of /usr in bwrap()
Daan De Meyer [Fri, 22 Dec 2023 13:30:50 +0000 (14:30 +0100)] 
Overlay /usr from package manager trees on top of /usr in bwrap()

Let's allow package manager configuration to be put in /usr as well
by simply overlaying /usr from the package manager tree on top of
/usr.

20 months agoMerge pull request #2211 from malt3/fix/bwrap/mount-readonly-nix-store
Daan De Meyer [Fri, 22 Dec 2023 13:39:55 +0000 (14:39 +0100)] 
Merge pull request #2211 from malt3/fix/bwrap/mount-readonly-nix-store

bwrap: mount readonly nix store

20 months agobubblewrap: add /etc/static symlink 2211/head
Malte Poll [Fri, 22 Dec 2023 12:06:11 +0000 (13:06 +0100)] 
bubblewrap: add /etc/static symlink

On NixOS, ssl certificates are stored as follows:

/etc/ssl/certs/ca-bundle.crt -> /etc/static/ssl/certs/ca-bundle.crt
/etc/static -> /nix/store/<HASH>-etc/etc

Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
20 months agoMount package manager trees
Daan De Meyer [Fri, 22 Dec 2023 11:18:40 +0000 (12:18 +0100)] 
Mount package manager trees

Now that /etc and /var are free game when running within bwrap()
because we don't mount in the directories from the host anymore,
let's take advantage of that by mounting all our package manager
configuration to the canonical location in /etc instead of configuring
the package managers via their CLI or config file to look in the
right directory.

This also makes us look for rpm configuration in /etc/rpm instead
of /usr/lib/rpm as that's now possible.

20 months agobubblewrap: try to mount /nix/store readonly
Malte Poll [Fri, 22 Dec 2023 11:41:10 +0000 (12:41 +0100)] 
bubblewrap: try to mount /nix/store readonly

Similar to most usrmerged systems, NixOS stores all installed
binaries and libraries in /nix/store.
To make mkosi work on NixOS, the nix store should be mounted by default.

Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
20 months agoMake sure we mount in extra search paths
Daan De Meyer [Fri, 22 Dec 2023 09:33:52 +0000 (10:33 +0100)] 
Make sure we mount in extra search paths

20 months agoInstall centos/fedora packaging tools in default images
Daan De Meyer [Thu, 21 Dec 2023 20:15:23 +0000 (21:15 +0100)] 
Install centos/fedora packaging tools in default images

Useful for doing Fedora/CentOS packaging work.

20 months agoFail when trying to inspect ephemeral images
Daan De Meyer [Thu, 21 Dec 2023 19:57:29 +0000 (20:57 +0100)] 
Fail when trying to inspect ephemeral images

Any changes to these are thrown away after exit so can't inspect
them.

20 months agoUpdate NEWS
Daan De Meyer [Thu, 21 Dec 2023 18:02:55 +0000 (19:02 +0100)] 
Update NEWS

20 months agoMerge pull request #2201 from DaanDeMeyer/sandbox
Daan De Meyer [Thu, 21 Dec 2023 17:31:08 +0000 (18:31 +0100)] 
Merge pull request #2201 from DaanDeMeyer/sandbox

Sandbox more in bwrap()

20 months agoRun more binaries with bwrap() 2201/head
Daan De Meyer [Thu, 21 Dec 2023 15:00:44 +0000 (16:00 +0100)] 
Run more binaries with bwrap()

Let's sandbox more of the image build. This isolates more of the
build from the host which reduces the chance of leaking in host
specific details into the image.

20 months agoSandbox more in bwrap()
Daan De Meyer [Wed, 20 Dec 2023 20:31:56 +0000 (21:31 +0100)] 
Sandbox more in bwrap()

Let's not make the full root filesystem available to commands
running in bwrap(). Instead, limit it to some select directories.

- /usr
- Various directories from /etc. Note that this also means we can
  get rid of mount_tools() as all these directories are now mounted
  in bwrap() instead. This also allows us to get rid of the overlay
  hack in mount_tools() to create the necessary mount points. The
  goal is to get rid of as many of these as possible over time.
- /var/tmp
- /tmp

Because to make this work we have to pass MkosiConfig into bwrap(),
we split off a new file bubblewrap.py with all the bubblewrap stuff.

To avoid having to import MkosiState and bwrap() into tree.py,
install_tree() is moved __init__.py

20 months agoMake RepartOffline= apply to extension images as well
Daan De Meyer [Thu, 21 Dec 2023 12:44:14 +0000 (13:44 +0100)] 
Make RepartOffline= apply to extension images as well

20 months agoRun depmod and modinfo on host again
Daan De Meyer [Thu, 21 Dec 2023 10:07:36 +0000 (11:07 +0100)] 
Run depmod and modinfo on host again

Running these in the chroot is much slower when building images for
another architecture. Also, we might soon have a way to prevent dnf
from running depmod (see
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/2743), so
let's adopt that when it is merged.

20 months agoInstall kmod in default tools tree
Daan De Meyer [Thu, 21 Dec 2023 11:36:01 +0000 (12:36 +0100)] 
Install kmod in default tools tree

20 months agoAdd ubu-keyring to CentOS/Fedora default tools trees
Daan De Meyer [Thu, 21 Dec 2023 15:22:25 +0000 (16:22 +0100)] 
Add ubu-keyring to CentOS/Fedora default tools trees

And remove the CI exclusions related to missing ubuntu keyring in
CentOS/Fedora.

20 months agoMerge pull request #2199 from DaanDeMeyer/selinux
Jörg Behrmann [Thu, 21 Dec 2023 15:44:03 +0000 (16:44 +0100)] 
Merge pull request #2199 from DaanDeMeyer/selinux

Add SelinuxRelabel= setting

20 months agoMerge pull request #2196 from DaanDeMeyer/opensuse
Daan De Meyer [Thu, 21 Dec 2023 14:05:28 +0000 (15:05 +0100)] 
Merge pull request #2196 from DaanDeMeyer/opensuse

ci: Build dnf based distros with opensuse tools tree

20 months agoAdd opensuse paths to qemu search locations 2196/head
Daan De Meyer [Thu, 21 Dec 2023 13:21:52 +0000 (14:21 +0100)] 
Add opensuse paths to qemu search locations

20 months agoci: Build dnf based distros with opensuse tools tree
Daan De Meyer [Wed, 20 Dec 2023 09:48:14 +0000 (10:48 +0100)] 
ci: Build dnf based distros with opensuse tools tree

dnf-data on opensuse had the missing dependency on ln added so we
can now use opensuse tools trees to build dnf based distro images.

20 months agoAdd SelinuxRelabel= setting 2199/head
Daan De Meyer [Wed, 20 Dec 2023 20:57:37 +0000 (21:57 +0100)] 
Add SelinuxRelabel= setting

Let's give users some more control over selinux relabeling.

20 months agoRemove yes_no_auto()
Daan De Meyer [Wed, 20 Dec 2023 20:37:29 +0000 (21:37 +0100)] 
Remove yes_no_auto()

All features will already stringify to "enabled", "disabled" or
"auto" which is just as good as yes/no/auto so let's get rid of
the function.

20 months agofedora: Drop unsupported architectures
Daan De Meyer [Wed, 20 Dec 2023 11:45:02 +0000 (12:45 +0100)] 
fedora: Drop unsupported architectures

20 months agoMerge pull request #2197 from DaanDeMeyer/qemu
Daan De Meyer [Wed, 20 Dec 2023 12:19:40 +0000 (13:19 +0100)] 
Merge pull request #2197 from DaanDeMeyer/qemu

Use virtio nic model on s390x

20 months agoInstall dnf plugins in default images 2197/head
Daan De Meyer [Wed, 20 Dec 2023 10:46:19 +0000 (11:46 +0100)] 
Install dnf plugins in default images

We can't install them on Debian/Ubuntu because trying to install
them conflicts with zypper.

20 months agoUse virtio nic model on s390x
Daan De Meyer [Wed, 20 Dec 2023 10:33:24 +0000 (11:33 +0100)] 
Use virtio nic model on s390x

Also refactor things a bit to move more into the Architecture enum.

Also make sure the default network interface on s390x is configured
properly.

We also fail earlier now if an architecture is specified for which
we haven't defined a machine yet.

20 months agoInstall perf in the default images
Daan De Meyer [Wed, 20 Dec 2023 10:32:59 +0000 (11:32 +0100)] 
Install perf in the default images

20 months agoInstall two more qemu system binaries in fedora tools tree
Daan De Meyer [Wed, 20 Dec 2023 09:43:38 +0000 (10:43 +0100)] 
Install two more qemu system binaries in fedora tools tree

20 months agoPass in credentials via kernel command line as well
Daan De Meyer [Wed, 20 Dec 2023 08:57:42 +0000 (09:57 +0100)] 
Pass in credentials via kernel command line as well

If we can't do smbios or fw_cfg, let's fall back to kernel command
line if possible.

20 months agoMerge pull request #2186 from NekkoDroid/unlink-output-name-version
Daan De Meyer [Wed, 20 Dec 2023 07:57:52 +0000 (08:57 +0100)] 
Merge pull request #2186 from NekkoDroid/unlink-output-name-version

Output file names now use `Output=` without version appended

20 months agoInstall network tools in default images
Daan De Meyer [Tue, 19 Dec 2023 16:54:11 +0000 (17:54 +0100)] 
Install network tools in default images

Useful for debugging network stuff.

20 months agoAdd a test for the output 2186/head
Michael Ferrari [Wed, 20 Dec 2023 01:35:36 +0000 (02:35 +0100)] 
Add a test for the output

20 months agoUpdate NEWS.md
Michael Ferrari [Wed, 20 Dec 2023 01:30:32 +0000 (02:30 +0100)] 
Update NEWS.md

20 months agoRemove `config.output_with_version`
Michael Ferrari [Wed, 20 Dec 2023 01:19:07 +0000 (02:19 +0100)] 
Remove `config.output_with_version`

And replace all its usages with `config.output` since this now has the
version appended to it if needed/wanted.

20 months ago`Output=` now has the version appended if unset
Michael Ferrari [Wed, 20 Dec 2023 01:12:07 +0000 (02:12 +0100)] 
`Output=` now has the version appended if unset

Previously `Output=` would only default to `ImageId=` if unset, but the
output files would have the version appended, resulting in `%o` not
returning the actual name of the output files.

This also moves the default handling to a `default_factory`

20 months agoOutput files starting with `Output=` are removed
Michael Ferrari [Wed, 20 Dec 2023 01:10:53 +0000 (02:10 +0100)] 
Output files starting with `Output=` are removed

As preparation for the removal of `config.output_with_version` the
removal of output files now only factors in `config.output` as prefix
and no longer removes based on version suffix, due to that being added
to `config.output` in a following commit.

20 months agoStop bind mounting /sys in chroot environments
Daan De Meyer [Tue, 19 Dec 2023 15:29:02 +0000 (16:29 +0100)] 
Stop bind mounting /sys in chroot environments

The only reason we do this is to make systemd's unit test suite
pass. https://github.com/systemd/systemd/pull/30527 fixes systemd's
test suite to not fail when /sys is not mounted, so let's drop this
bit.

20 months agoMerge pull request #2189 from DaanDeMeyer/arch
Daan De Meyer [Tue, 19 Dec 2023 09:01:40 +0000 (10:01 +0100)] 
Merge pull request #2189 from DaanDeMeyer/arch

Add support for booting powerpc images

20 months agoAdd aarch64 support to Debian default images 2189/head
Daan De Meyer [Mon, 18 Dec 2023 22:47:54 +0000 (23:47 +0100)] 
Add aarch64 support to Debian default images

20 months agoAdd support for booting powerpc images
Daan De Meyer [Mon, 18 Dec 2023 22:06:55 +0000 (23:06 +0100)] 
Add support for booting powerpc images

20 months agoMerge pull request #2188 from DaanDeMeyer/fix-tools
Daan De Meyer [Mon, 18 Dec 2023 21:23:04 +0000 (22:23 +0100)] 
Merge pull request #2188 from DaanDeMeyer/fix-tools

Process all overlays before we do any bind mounts

20 months agoProcess all overlays before we do any bind mounts 2188/head
Daan De Meyer [Mon, 18 Dec 2023 20:13:18 +0000 (21:13 +0100)] 
Process all overlays before we do any bind mounts

Otherwise, later overlays will hide earlier bind mounts.

20 months agoDrop empty directories
Daan De Meyer [Mon, 18 Dec 2023 20:26:36 +0000 (21:26 +0100)] 
Drop empty directories

Instead, let's declare them in the config and they'll get created
as needed.

20 months agoMerge pull request #2185 from DaanDeMeyer/tools
Daan De Meyer [Mon, 18 Dec 2023 18:39:31 +0000 (19:39 +0100)] 
Merge pull request #2185 from DaanDeMeyer/tools

Move default tools tree configuration to mkosi/resources/mkosi-tools

20 months agoci: Add tools trees to integration test matrix 2185/head
Daan De Meyer [Sat, 16 Dec 2023 19:28:35 +0000 (20:28 +0100)] 
ci: Add tools trees to integration test matrix

Let's make sure our tools trees actually work as intended by
introducing a second axis to our test matrix.

20 months agoci: Drop rocky, alma and rhel-ubi
Daan De Meyer [Sat, 16 Dec 2023 19:31:01 +0000 (20:31 +0100)] 
ci: Drop rocky, alma and rhel-ubi

The next commit is going to add a second dimension to the test
matrix which will dramatically introduce the number of CI jobs.
Let's keep things manageable by dropping rhel-ubi, alma and rocky
which should be covered by the centos job already.

20 months agoci: Drop unused matrix.format
Daan De Meyer [Sat, 16 Dec 2023 19:51:29 +0000 (20:51 +0100)] 
ci: Drop unused matrix.format

20 months agotests: Only log warning level and up to console by default
Daan De Meyer [Sun, 17 Dec 2023 16:56:33 +0000 (17:56 +0100)] 
tests: Only log warning level and up to console by default

The debug logs are too noisy to forward them to the console by
default. Let's stick to warning and up only.

20 months agotests: Use default release from config file
Daan De Meyer [Sun, 17 Dec 2023 16:55:43 +0000 (17:55 +0100)] 
tests: Use default release from config file

Let's allow setting the default release in the mkosi.conf files
instead which is much more flexible.

20 months agotests: Use cryptsetup.passphrase for test_initrd_luks_lvm() as well
Daan De Meyer [Mon, 18 Dec 2023 11:39:59 +0000 (12:39 +0100)] 
tests: Use cryptsetup.passphrase for test_initrd_luks_lvm() as well

The credential now applies to all instances of systemd-crypsetup@,
so let's use it for the LUKS+LVM test as well.

20 months agomkosi-initrd: Add comment on initrd always being compressed
Daan De Meyer [Mon, 18 Dec 2023 13:46:36 +0000 (14:46 +0100)] 
mkosi-initrd: Add comment on initrd always being compressed

20 months agomkosi-initrd: Don't remove perl-base on Debian/Ubuntu
Daan De Meyer [Mon, 18 Dec 2023 13:33:51 +0000 (14:33 +0100)] 
mkosi-initrd: Don't remove perl-base on Debian/Ubuntu

This doesn't work on older stable releases, so let's keep it in.

20 months agomkosi-initrd: Drop explicit CompressOutput=yes
Daan De Meyer [Mon, 18 Dec 2023 13:32:31 +0000 (14:32 +0100)] 
mkosi-initrd: Drop explicit CompressOutput=yes

This allows the compression passed by mkosi or the default compression
to be used instead. Note that the default is to compress the initrd, so
this doesn't change anything.