Daan De Meyer [Wed, 6 Mar 2024 19:53:11 +0000 (20:53 +0100)]
Copy existing crypto policies from the host into package manager tree
apt on Fedora uses gnutls which requires
/etc/crypto-policies/back-ends/gnutls.config to work properly. Let's
copy the default crypto policies from the tools tree into the package
manager tree to make sure things keep working.
Daan De Meyer [Wed, 6 Mar 2024 12:01:35 +0000 (13:01 +0100)]
Speed up kernel modules initrd generation if no excludes were specified
If no excludes were specified, we can just glob all modules and firmware
without going via modinfo. We can only do this if no firmware was installed
as otherwise we end up copying firmware into the initrd that's not depended
on by any kernel modules.
Daan De Meyer [Tue, 5 Mar 2024 10:40:12 +0000 (11:40 +0100)]
Prefer to not clean package manager metadata when building directory or tar image
These output formats are often intended to be used as base trees on
which to build extension images so let's not remove package manager
metadata from these unless explicitly requested by the user.
Daan De Meyer [Tue, 5 Mar 2024 10:35:44 +0000 (11:35 +0100)]
Always copy repository metadata to workspace directory
Even if the repository metadata is not removed in
clean_package_manager_metadata(), it might still be removed by
RemoveFiles= or in a finalize script later on, so let's be safe
rather than sorry and always copy the package manager metadata if
it's located inside the image root directory.
Daan De Meyer [Tue, 5 Mar 2024 09:16:39 +0000 (10:16 +0100)]
Make sure unpacked resources can be accessed by the invoking user
Sometimes we run commands as the invoking user and these commands
should be able to access the resources. If the resources are unpacked
to a temporary directory, this directory will have mode 0700 so we
need to relax the permissions to make sure it can be accessed by the
invoking user.
Daan De Meyer [Mon, 4 Mar 2024 21:17:33 +0000 (22:17 +0100)]
Change user to invoking user for syncing
We want to make sure all repository metadata that we cache in the
user's cache directory is owned by the invoking user. Let's achieve
that by running the sync stuff in a fork and dropping privileges if
we're running as root.
Daan De Meyer [Mon, 4 Mar 2024 09:15:09 +0000 (10:15 +0100)]
Don't mount pkgmngr/ when installing trees
If we're copying from the host's /etc, the mounts get very weird as
we end up mounting over the directory we're copying from. Let's avoid
the weirdness by using the Config sandbox instead of the Context sandbox
which means we don't mount anything from the pkgmngr directory.
Daan De Meyer [Fri, 23 Feb 2024 15:27:50 +0000 (16:27 +0100)]
Set DISTRIBUTION= and RELEASE= when invoking scripts
Until now once could simply source /etc/os-release to figure this
out but this is not possible in sync scripts, so add two new env
variables to expose the distribution and release config options.
Daan De Meyer [Fri, 23 Feb 2024 10:48:11 +0000 (11:48 +0100)]
Use --keep-directory-symlink from cp 9.5 onwards
--keep-directory-symlink instructs cp to not fail when trying to
copy a directory onto a symlink but to follow the symlink instead.
The patch to introduce it was merged into coreutils and will be
available from coreutils 9.5 onwards.
--copy-contents has to be added as well to make
--keep-directory-symlink work. --copy-contents is generally harmless
for our use cases and won't change anything.
We also make sure gpg creates its sockets in /run instead of the
gpg homedir so they don't become part of the image. gpg automatically
uses /run if /run/user/uid exists so we create /run/user/0 to satisfy
that check.
Daan De Meyer [Fri, 23 Feb 2024 11:34:50 +0000 (12:34 +0100)]
Stop using /etc/crypto-policies from host or tools tree
Instead we provide our policy for rpm-sequoia that generally follows
the sequoia default policy except SHA1 is allowed as various distributions
still use SHA1 in their GPG keys.
Daan De Meyer [Thu, 22 Feb 2024 07:47:52 +0000 (08:47 +0100)]
Only mount ephemeral build sources for package managers when running as root
If we're not running as root, we won't have permissions to do the overlay
mount. Hopefully bubblewrap will eventually get overlayfs support which would
make this possible.
Daan De Meyer [Wed, 21 Feb 2024 17:47:33 +0000 (18:47 +0100)]
Write a default /etc/passwd to the package manager tree
Tools like git and ssh need to be able to resolve a user so let's
make sure we write a passwd file containing information on the
invoking user and root.
We also move creation of the /var/log directory into
install_package_manager_trees().
Daan De Meyer [Wed, 21 Feb 2024 17:42:12 +0000 (18:42 +0100)]
Various scripts fixes
- Lazy evaluate mkosi-as-caller so it uses the right uid as the
uid/gid of INVOKING_USER change after become_root()
- Mount the host scripts to /scripts so we don't run into permission
errors when trying to use the scripts with mkosi-as-caller
- Don't add the package manager scripts by default
- Don't remove /scripts from PATH in a script if the name of the
script does not have the same name as a tool in PATH so that one
script can call another
Daan De Meyer [Mon, 19 Feb 2024 12:31:55 +0000 (13:31 +0100)]
Give CentOS SIG repositories a higher priority
CentOS SIGs often ship rebuilds of existing packages which can get
out of date when CentOS 9 Stream ships a newer version. Let's make
sure that the SIG rebuild is still installed by giving all SIG
repositories a priority of 50.
Daan De Meyer [Sun, 18 Feb 2024 21:11:38 +0000 (22:11 +0100)]
ubuntu: Switch default release to noble
lunar is EOL. Mantic is broken because systemd-gpt-auto-generator
is missing. We can either change the default back to Jammy or move
forward to Noble. Let's go for the second option as Noble will
release in about two months.
Daan De Meyer [Sun, 18 Feb 2024 14:48:59 +0000 (15:48 +0100)]
Make sure to include the /usr/lib/firmware directory
When creating a cpio, all parent directories have to be included
separately as well. We already did this properly for the parent
directories of the kernel modules directory but not yet for
/usr/lib/firmware which this commit fixes.
Daan De Meyer [Tue, 26 Dec 2023 15:35:49 +0000 (16:35 +0100)]
Have systemd-repart generate fstab and crypttab if requested
If systemd-repart is new enough, let's specify --generate-fstab= and
--generate-crypttab= so that these files are automatically generated
and included in the disk image if the corresponding new settings are
used in any partition definition files.
We also make sure systemd-repart always uses the same seed by
generating the random seed ourselves instead of leaving it up to
systemd-repart.
See https://github.com/systemd/systemd/pull/30636.
fedora: for rawhide, also load key for FN+1 just in case
See the commit for explanation. This fixes a problem where during
each Fedora upgrades, the local key for rawhide points to e.g. F40,
but Fedora has already branched and rawhide is actually F41.
We may specify an additional key, that will be used a future version,
but that doesn't really matter, we assume all keys as equally good.