mkosi: Build a directory image by default

Both building and booting a directory image is much faster than
building or booting a disk image so let's default to a directory
image.

In CI, we stick to a disk image to make sure that keeps working as
well.

The only extra dependency this introduces is virtiofsd which is
packaged in all distributions except Debian stable. For users
hacking on systemd on Debian stable, a disk image can be built by
writing the following to mkosi.local.conf:

```
[Output]
Format=disk
```
This commit is contained in:
Daan De Meyer 2023-12-07 19:52:41 +01:00
parent be89a76a46
commit 52842bb2c5
4 changed files with 25 additions and 0 deletions

View file

@ -85,6 +85,10 @@ jobs:
Distribution=${{ matrix.distro }}
Release=${{ matrix.release }}
[Output]
# Build a disk image in CI as this logic is much more prone to breakage.
Format=disk
[Content]
Environment=CI_BUILD=1
SLOW_TESTS=true

View file

@ -56,6 +56,23 @@ $ mkosi qemu
Every time you rerun the `mkosi` command a fresh image is built, incorporating
all current changes you made to the project tree.
By default a directory image is built. This requires `virtiofsd` to be installed
on the host. To build a disk image instead which does not require `virtiofsd`,
add the following to `mkosi.local.conf`:
```conf
[Output]
Format=disk
```
To boot in UEFI mode instead of using QEMU's direct kernel boot, add the following
to `mkosi.local.conf`:
```conf
[Host]
QemuFirmware=uefi
```
Putting this all together, here's a series of commands for preparing a patch
for systemd:

View file

@ -18,6 +18,7 @@ Environment=ASAN_OPTIONS=verify_asan_link_order=false
@Incremental=yes
@QemuMem=2G
@RuntimeSize=8G
ToolsTreePackages=virtiofsd
KernelCommandLineExtra=systemd.crash_shell
systemd.log_level=debug
systemd.log_ratelimit_kmsg=0

View file

@ -3,6 +3,9 @@
[Config]
Dependencies=base
[Output]
@Format=directory
[Content]
Autologin=yes
BaseTrees=../../mkosi.output/base