[Output]
Format=${{ matrix.format }}
+
+ [Content]
+ KernelCommandLine=console=ttyS0
+ systemd.unit=mkosi-check-and-shutdown.service
+ systemd.log_target=console
+ systemd.default_standard_output=journal+console
+
+ [Host]
+ QemuVsock=yes
+ QemuMem=4G
EOF
- name: Build ${{ matrix.distro }}/${{ matrix.format }}
/mkosi.extra
!mkosi.extra/usr/lib/systemd/mkosi-check-and-shutdown.sh
!mkosi.extra/usr/lib/systemd/system/mkosi-check-and-shutdown.service
+!mkosi.extra/usr/lib/systemd/system-preset/*-mkosi.preset
/mkosi.nspawn
/mkosi.rootpw
/mkosi.conf
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Output]
-CacheDirectory=mkosi.cache
+# These images are (among other things) used for running mkosi which means we need some disk space available so
+# default to directory output where disk space isn't a problem.
+@Format=directory
+@CacheDirectory=mkosi.cache
+@OutputDirectory=mkosi.output
[Content]
Autologin=yes
BiosBootloader=grub
-KernelCommandLine=console=ttyS0
- systemd.unit=mkosi-check-and-shutdown.service
- systemd.log_target=console
- systemd.default_standard_output=journal+console
-[Host]
-QemuVsock=yes
+Packages=
+ attr
+ autoconf
+ automake
+ ca-certificates
+ gcc
+ gettext
+ git
+ less
+ libtool
+ make
+ pkg-config
+ strace
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Format=|disk
+Format=|directory
+
+[Content]
+Bootable=yes
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=arch
[Content]
-Packages=linux
- systemd
- base
- grub
+Packages=
+ apt
+ archlinux-keyring
+ base
+ bash
+ btrfs-progs
+ bubblewrap
+ ca-certificates
+ coreutils
+ cpio
+ curl
+ debian-archive-keyring
+ dnf
+ dosfstools
+ e2fsprogs
+ edk2-ovmf
+ erofs-utils
+ grub
+ linux
+ mtools
+ openssh
+ openssl
+ pacman
+ pesign
+ python-cryptography
+ qemu-base
+ sbsigntools
+ shadow
+ socat
+ squashfs-tools
+ strace
+ swtpm
+ systemd
+ systemd-ukify
+ tar
+ ukify
+ util-linux
+ virtiofsd
+ xfsprogs
+ xz
+ zstd
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=|centos
Distribution=|alma
Distribution=|rocky
+[Distribution]
+@Release=9
+Repositories=epel
+ epel-next
+
[Content]
-Packages=kernel-core
- systemd
- systemd-boot
- udev
- grub2-pc
+Packages=
+ apt
+ bash
+ bubblewrap
+ ca-certificates
+ coreutils
+ cpio
+ curl
+ debian-keyring
+ distribution-gpg-keys
+ dnf
+ dosfstools
+ e2fsprogs
+ edk2-ovmf
+ grub2-pc
+ kernel-core
+ mtools
+ openssh-clients
+ openssl
+ pesign
+ python3-cryptography
+ qemu-kvm-core
+ shadow-utils
+ socat
+ squashfs-tools
+ strace
+ swtpm
+ systemd
+ systemd-boot
+ systemd-container
+ systemd-udev
+ tar
+ udev
+ util-linux
+ virtiofsd
+ xfsprogs
+ xz
+ zstd
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=debian
+[Distribution]
+@Release=testing
+
[Content]
-Packages=linux-image-cloud-amd64
- systemd
- systemd-boot
- systemd-sysv
- udev
- dbus
- tzdata
- grub-pc
+Packages=
+ apt
+ bash
+ btrfs-progs
+ bubblewrap
+ ca-certificates
+ coreutils
+ cpio
+ curl
+ dbus-broker
+ debian-archive-keyring
+ dnf
+ dosfstools
+ e2fsprogs
+ erofs-utils
+ grub-pc
+ libtss2-dev
+ linux-image-cloud-amd64
+ mtools
+ openssh-client
+ openssl
+ ovmf
+ pacman-package-manager
+ pesign
+ python3-cryptography
+ python3-pefile
+ qemu-system
+ sbsigntool
+ socat
+ squashfs-tools
+ strace
+ swtpm
+ systemd
+ systemd-boot
+ systemd-container
+ systemd-sysv
+ tar
+ tzdata
+ udev
+ uidmap
+ util-linux
+ xfsprogs
+ xz-utils
+ zstd
+ zypper
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=fedora
+[Distribution]
+@Release=39
+
[Content]
-Packages=kernel-core
- systemd
- systemd-boot
- udev
- util-linux
- grub2-pc
+Packages=
+ apt
+ archlinux-keyring
+ bash
+ btrfs-progs
+ bubblewrap
+ ca-certificates
+ coreutils
+ cpio
+ curl-minimal
+ debian-keyring
+ distribution-gpg-keys
+ dnf
+ dnf5
+ dosfstools
+ e2fsprogs
+ edk2-ovmf
+ erofs-utils
+ grub2-pc
+ kernel-core
+ mtools
+ openssh-clients
+ openssl
+ pacman
+ pesign
+ policycoreutils
+ policycoreutils-python-utils
+ python3-cryptography
+ qemu-kvm-core
+ sbsigntools
+ selinux-policy
+ selinux-policy-devel
+ selinux-policy-targeted
+ setools-console
+ shadow-utils
+ socat
+ squashfs-tools
+ strace
+ swtpm
+ systemd
+ systemd-boot
+ systemd-container
+ systemd-networkd
+ systemd-resolved
+ systemd-udev
+ systemd-ukify
+ tar
+ util-linux
+ virtiofsd
+ xfsprogs
+ xz
+ zstd
+ zypper
+
+[Host]
+KernelCommandLine=enforcing=0
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=opensuse
+[Distribution]
+@Release=tumbleweed
+
[Content]
-Packages=kernel-kvmsmall
- systemd
- systemd-boot
- udev
- grub2-i386-pc
+Packages=
+ bash
+ btrfs-progs
+ bubblewrap
+ ca-certificates
+ coreutils
+ cpio
+ curl
+ distribution-gpg-keys
+ # dnf-data is missing a dependency on coreutils which makes it postinstall script fail when using old zypper.
+ # dnf
+ dosfstools
+ e2fsprogs
+ erofs-utils
+ grep
+ grub2-i386-pc
+ kernel-kvmsmall
+ mtools
+ openssh-clients
+ openssl
+ ovmf
+ pesign
+ qemu-headless
+ sbsigntools
+ shadow
+ socat
+ squashfs
+ strace
+ swtpm
+ systemd
+ systemd-boot
+ systemd-container
+ systemd-experimental
+ tar
+ udev
+ util-linux
+ virtiofsd
+ xfsprogs
+ xz
+ zstd
+ zypper
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=rhel-ubi
+[Distribution]
+@Release=9
+
[Content]
-Packages=systemd
- systemd-udev
+Bootable=no
+Packages=
+ systemd
+ systemd-udev
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
[Match]
Distribution=ubuntu
[Distribution]
-Release=lunar
-
-[Distribution]
-Repositories=main,universe
+@Release=lunar
+Repositories=universe
[Content]
-Packages=linux-kvm
- systemd
- systemd-boot
- systemd-sysv
- udev
- dbus
- tzdata
- grub-pc
+Packages=
+ apt
+ dbus-broker
+ grub-pc
+ linux-kvm
+ systemd
+ systemd-boot
+ systemd-sysv
+ tzdata
+ udev
+ zypper
--- /dev/null
+# 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 might get pulled in as dependencies but we don't want them running.
+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*
+
+# 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
+enable systemd-networkd-wait-online.service
+
+# We install dnf in some images but it's only going to be used rarely,
+# so let's not have dnf create its cache.
+disable dnf-makecache.*
+
+# The rpmdb is already in the right location, don't try to migrate it.
+disable rpmdb-migrate.service
+
+# We have journald to receive audit data so let's make sure we're not running auditd as well
+disable auditd.service
+
+# systemd-timesyncd is not enabled by default in the default systemd preset so enable it here instead.
+enable systemd-timesyncd.service
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# Make sure that services are disabled by default (primarily for Debian/Ubuntu).
+disable *