]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Add mkosi-vm default config
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 26 Sep 2024 12:42:44 +0000 (14:42 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 27 Sep 2024 08:55:31 +0000 (10:55 +0200)
This replaces the bootable.md doc. Instead, users can just do
Include=mkosi-vm.

27 files changed:
docs/bootable.md [deleted file]
mkosi.conf
mkosi.conf.d/20-arch.conf
mkosi.conf.d/20-azure.conf
mkosi.conf.d/20-centos/mkosi.conf
mkosi.conf.d/20-debian/mkosi.conf.d/20-x86-64.conf [deleted file]
mkosi.conf.d/20-debian/mkosi.conf.d/20-x86.conf [deleted file]
mkosi.conf.d/20-fedora/mkosi.conf
mkosi.conf.d/20-kali/mkosi.conf.d/20-x86-64.conf [deleted file]
mkosi.conf.d/20-kali/mkosi.conf.d/20-x86.conf [deleted file]
mkosi.conf.d/20-opensuse/mkosi.conf
mkosi.conf.d/20-ubuntu/mkosi.conf
mkosi.conf.d/30-azure-centos-fedora/mkosi.conf
mkosi.conf.d/30-azure-centos-fedora/mkosi.conf.d/20-uefi.conf
mkosi.conf.d/30-debian-kali-ubuntu/mkosi.conf
mkosi/config.py
mkosi/resources/man/mkosi.md
mkosi/resources/mkosi-vm/mkosi.conf [new file with mode: 0644]
mkosi/resources/mkosi-vm/mkosi.conf.d/arch.conf [new file with mode: 0644]
mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf [new file with mode: 0644]
mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/networkd.conf [moved from mkosi.conf.d/20-debian/mkosi.conf.d/20-arm64.conf with 53% similarity]
mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/uefi.conf [moved from mkosi.conf.d/20-kali/mkosi.conf.d/20-arm64.conf with 54% similarity]
mkosi/resources/mkosi-vm/mkosi.conf.d/debian-kali-ubuntu.conf [new file with mode: 0644]
mkosi/resources/mkosi-vm/mkosi.conf.d/opensuse.conf [new file with mode: 0644]
pyproject.toml
tests/conftest.py
tests/test_initrd.py

diff --git a/docs/bootable.md b/docs/bootable.md
deleted file mode 100644 (file)
index 7636f05..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
----
-title: Building a bootable image on different distros
-category: Tutorials
-layout: default
-SPDX-License-Identifier: LGPL-2.1-or-later
----
-
-# Building a bootable image on different distros
-
-To build a bootable image, you'll need to install a list of packages
-that differs depending on the distribution. We give an overview here of
-what's needed to generate a bootable image for some common
-distributions:
-
-## Arch
-
-```conf
-[Distribution]
-Distribution=arch
-
-[Content]
-Bootable=yes
-Packages=linux
-         systemd
-```
-
-## Fedora
-
-```conf
-[Distribution]
-Distribution=fedora
-
-[Content]
-Bootable=yes
-Packages=kernel
-         systemd
-         systemd-boot
-         udev
-         util-linux
-```
-
-## CentOS
-
-```conf
-[Distribution]
-Distribution=centos
-
-[Content]
-Bootable=yes
-Packages=kernel
-         systemd
-         systemd-boot
-         udev
-```
-
-## Debian
-
-```conf
-[Distribution]
-Distribution=debian
-
-[Content]
-Bootable=yes
-Packages=linux-image-generic
-         login
-         systemd
-         systemd-boot
-         systemd-sysv
-         udev
-         dbus
-```
-
-## Kali
-
-```conf
-[Distribution]
-Distribution=kali
-
-[Content]
-Bootable=yes
-Packages=linux-image-generic
-         login
-         systemd
-         systemd-boot
-         systemd-sysv
-         udev
-         dbus
-```
-
-## Ubuntu
-
-```conf
-[Distribution]
-Distribution=ubuntu
-Repositories=main,universe
-
-[Content]
-Bootable=yes
-Packages=linux-image-generic
-         login
-         systemd
-         systemd-sysv
-         udev
-         dbus
-```
-
-## Opensuse
-
-```conf
-[Distribution]
-Distribution=opensuse
-
-[Content]
-Bootable=yes
-Packages=kernel-default
-         systemd
-         udev
-```
index a65bfaec1f819f18b094c3e4a9fbb0b51d43ea76..4f0b4f3d7bccf51d7cfa9e2845c8495a3439b635 100644 (file)
@@ -1,4 +1,7 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
+[Include]
+Include=mkosi-vm
+
 [Build]
 CacheDirectory=mkosi.cache
 History=yes
@@ -17,16 +20,10 @@ BuildSources=.
 BuildSourcesEphemeral=yes
 
 Packages=
-        bash
         binutils
         gdb
-        less
-        nano
-        strace
         sudo
-        systemd
         tmux
-        udev
         zsh
 
 InitrdPackages=
index beb2820f698528599209733b0bece3c0cee2ae3b..247ffd925a0a2676be0b6c5b26a7a1358a6b1b70 100644 (file)
@@ -5,19 +5,9 @@ Distribution=arch
 
 [Content]
 Packages=
-        base
-        bash
-        dbus-broker
-        dbus-broker-units
-        fish
         grub
-        iproute
-        iputils
-        linux
         openssh
         perf
-        polkit
         python
         qemu-user-static
         shim
-        strace
index 6283a7d694fc29b95b444622a33475f1a6b26d2a..1229a0c7b730b6b933be5c7d3e204470d12420a6 100644 (file)
@@ -12,7 +12,4 @@ Repositories=base-preview
 # test unsigned shim.
 ShimBootloader=none
 Packages=
-        kernel
         kernel-tools
-        systemd-networkd
-        tpm2-tss
index 117ef9ba608c33941f9d36a09cc0f67a23e26110..13f5409fe9015ae3eb995ae00c19b96af222dfda 100644 (file)
@@ -12,6 +12,5 @@ Release=9
 # CentOS Stream 10 does not ship an unsigned shim
 ShimBootloader=none
 Packages=
-        kernel-core
         linux-firmware
         perf
diff --git a/mkosi.conf.d/20-debian/mkosi.conf.d/20-x86-64.conf b/mkosi.conf.d/20-debian/mkosi.conf.d/20-x86-64.conf
deleted file mode 100644 (file)
index 615de52..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-[Match]
-Architecture=x86-64
-
-[Content]
-Packages=
-        linux-image-cloud-amd64
diff --git a/mkosi.conf.d/20-debian/mkosi.conf.d/20-x86.conf b/mkosi.conf.d/20-debian/mkosi.conf.d/20-x86.conf
deleted file mode 100644 (file)
index fe0c4dc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-[Match]
-Architecture=x86
-
-[Content]
-Packages=
-        linux-image-686
index 28a8009c97177584348918b7880e2435452f17ea..bf6ae2603bc42a1e5c0157502b5183ae68763d15 100644 (file)
@@ -9,8 +9,6 @@ Release=rawhide
 [Content]
 Packages=
         fish
-        kernel-core
         perf
         qemu-user-static
         rpmautospec
-        systemd-networkd
diff --git a/mkosi.conf.d/20-kali/mkosi.conf.d/20-x86-64.conf b/mkosi.conf.d/20-kali/mkosi.conf.d/20-x86-64.conf
deleted file mode 100644 (file)
index 615de52..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-[Match]
-Architecture=x86-64
-
-[Content]
-Packages=
-        linux-image-cloud-amd64
diff --git a/mkosi.conf.d/20-kali/mkosi.conf.d/20-x86.conf b/mkosi.conf.d/20-kali/mkosi.conf.d/20-x86.conf
deleted file mode 100644 (file)
index fe0c4dc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-[Match]
-Architecture=x86
-
-[Content]
-Packages=
-        linux-image-686
index 39a0b435d26454ed9150260706f22c90e241eca2..2f03b111a681ada1cfd2e3072b32dc380feb7979 100644 (file)
@@ -10,24 +10,12 @@ Release=tumbleweed
 # OpenSUSE does not ship an unsigned shim
 ShimBootloader=none
 Packages=
-        bash
         diffutils
         fish
-        iproute
-        iputils
-        kernel-kvmsmall
-        libtss2-esys0
-        libtss2-mu0
-        libtss2-rc0
-        libtss2-tcti-device0
         openssh-clients
         openssh-server
-        patterns-base-minimal_base
         perf
-        polkit
         python3
         qemu-linux-user
         shim
-        strace
         sudo-policy-wheel-auth-self
-        systemd-boot
index 43edd67c7201761393ce93419d965bf90674a002..e1b4b5dffa148e73b4d88b1460ba8f9d6231fbcf 100644 (file)
@@ -9,5 +9,4 @@ Repositories=universe
 
 [Content]
 Packages=
-        linux-image-virtual
-        linux-tools-virtual
+        linux-tools-generic
index c7fe6e7f1e541c9f129dab92e277e2bd85b6d141..7558d8b9227d65f1c330eeb20fe51964aa99337b 100644 (file)
@@ -9,13 +9,7 @@ Distribution=|azure
 
 [Content]
 Packages=
-        bash
-        iproute
-        iputils
         openssh-clients
         openssh-server
-        polkit
         python3
         rpm-build
-        strace
-        systemd-resolved
index 6ade55055b30babc69e26b54e68c5a86a63a1390..061284455e570178092d5521cf1769c69d5782be 100644 (file)
@@ -8,4 +8,3 @@ Architecture=|arm64
 Packages=
         grub2-efi
         shim
-        systemd-boot
index 782a0e2310b69c31cae58be7ecb12bd4884149e7..74dadbac5e8161e8fdd6944feddbe81e950e4389 100644 (file)
@@ -7,25 +7,9 @@ Distribution=|ubuntu
 
 [Content]
 Packages=
-        ?exact-name(systemd-boot)
-        ?exact-name(systemd-resolved)
-        ^libtss2-esys-[0-9.]+-0$
-        ^libtss2-mu[0-9.-]+$
-        bash
-        dbus-broker
         fish
-        iproute2
-        iputils-ping
-        libtss2-rc0
-        libtss2-tcti-device0
-        login
         openssh-client
         openssh-server
-        polkitd
         python3
         qemu-user-static
         shim-signed
-        strace
-        systemd-coredump
-        systemd-sysv
-        tzdata
index 277aae5f6804b47b089bee94215fe24abb110f75..b59990d25daeb5f4952e8accbc4f3a9a1f6d3a94 100644 (file)
@@ -55,7 +55,7 @@ ConfigMatchCallback = Callable[[str, Any], bool]
 ConfigDefaultCallback = Callable[[argparse.Namespace], Any]
 
 
-BUILTIN_CONFIGS = ("mkosi-tools", "mkosi-initrd")
+BUILTIN_CONFIGS = ("mkosi-tools", "mkosi-initrd", "mkosi-vm")
 
 
 class Verb(StrEnum):
index ae3332e8840dc35e7b84f7e3cb955922a5541a89..8c8531061c6882b68d3281498812e804555a164b 100644 (file)
@@ -1859,9 +1859,10 @@ config file is read:
     Note that each path containing extra configuration is only parsed
     once, even if included more than once with `Include=`.
 
-    The builtin configs for the mkosi default initrd and default tools
-    tree can be included by including the literal value `mkosi-initrd` and
-    `mkosi-tools` respectively.
+    The builtin configs for the mkosi default initrd, default tools tree
+    and default virtual machine image can be included by including the
+    literal value `mkosi-initrd`, `mkosi-tools` or `mkosi-vm`
+    respectively.
 
     Note: Include names starting with either of the literals `mkosi-` or
     `contrib-` are reserved for use by mkosi itself.
diff --git a/mkosi/resources/mkosi-vm/mkosi.conf b/mkosi/resources/mkosi-vm/mkosi.conf
new file mode 100644 (file)
index 0000000..ce021bd
--- /dev/null
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Content]
+Bootable=yes
+
+Packages=
+        bash
+        diffutils
+        gawk
+        grep
+        gzip
+        less
+        nano
+        sed
+        strace
+        systemd
+        udev
+        which
diff --git a/mkosi/resources/mkosi-vm/mkosi.conf.d/arch.conf b/mkosi/resources/mkosi-vm/mkosi.conf.d/arch.conf
new file mode 100644 (file)
index 0000000..3387e65
--- /dev/null
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=arch
+
+[Content]
+Packages=
+        dbus-broker
+        dbus-broker-units
+        iproute
+        iputils
+        linux
+        polkit
+        tpm2-tss
diff --git a/mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf b/mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf
new file mode 100644 (file)
index 0000000..e3e5d89
--- /dev/null
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=|alma
+Distribution=|rocky
+Distribution=|centos
+Distribution=|fedora
+Distribution=|azure
+
+[Content]
+Packages=
+        iproute
+        iputils
+        kernel
+        polkit
+        systemd-resolved
+        tpm2-tss
+        util-linux
similarity index 53%
rename from mkosi.conf.d/20-debian/mkosi.conf.d/20-arm64.conf
rename to mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/networkd.conf
index af923fa44276d8b3c571cfe154a4c8e9a511c49a..e0d6205bdb1c68fc6b830595e1ddd6cd58578fe7 100644 (file)
@@ -1,8 +1,9 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
 [Match]
-Architecture=arm64
+Distribution=|fedora
+Distribution=|azure
 
 [Content]
 Packages=
-        linux-image-cloud-arm64
+        systemd-networkd
similarity index 54%
rename from mkosi.conf.d/20-kali/mkosi.conf.d/20-arm64.conf
rename to mkosi/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/uefi.conf
index af923fa44276d8b3c571cfe154a4c8e9a511c49a..da92e2ab43ba8ae8f728cfee0926e09ff0aaa6a9 100644 (file)
@@ -1,8 +1,9 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
 [Match]
-Architecture=arm64
+Architecture=|x86-64
+Architecture=|arm64
 
 [Content]
 Packages=
-        linux-image-cloud-arm64
+        systemd-boot
diff --git a/mkosi/resources/mkosi-vm/mkosi.conf.d/debian-kali-ubuntu.conf b/mkosi/resources/mkosi-vm/mkosi.conf.d/debian-kali-ubuntu.conf
new file mode 100644 (file)
index 0000000..1ce73aa
--- /dev/null
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=|debian
+Distribution=|kali
+Distribution=|ubuntu
+
+[Content]
+Packages=
+        ?exact-name(systemd-boot)
+        ?exact-name(systemd-resolved)
+        bash
+        dbus-broker
+        iproute2
+        iputils-ping
+        linux-image-generic
+        login
+        polkitd
+        systemd-boot
+        systemd-coredump
+        systemd-sysv
+        tpm2-tools
+        tzdata
diff --git a/mkosi/resources/mkosi-vm/mkosi.conf.d/opensuse.conf b/mkosi/resources/mkosi-vm/mkosi.conf.d/opensuse.conf
new file mode 100644 (file)
index 0000000..7cb4dda
--- /dev/null
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Distribution=opensuse
+
+[Content]
+Packages=
+        iproute
+        iputils
+        kernel-default
+        libtss2-tcti-device0
+        patterns-base-minimal_base
+        polkit
+        strace
+        systemd-boot
+        systemd-network
+        tpm2.0-tools
index e0ade17709fb9abae2793d5cbadcef6d8f5a0154..7426a7a78422a5069a3cc5995a9df82da24c8113 100644 (file)
@@ -37,6 +37,7 @@ packages = [
     "man/*",
     "mkosi-initrd/**/*",
     "mkosi-tools/**/*",
+    "mkosi-vm/**/*",
     "repart/**/*",
 ]
 
index cc419fa40d5bd53da42a2a20416e692dfd4d8d79..19162e796f7125d5a6d4b85ad6288d2ad8690c7a 100644 (file)
@@ -4,8 +4,10 @@ from typing import Any, cast
 
 import pytest
 
+import mkosi.resources
 from mkosi.config import parse_config
 from mkosi.distributions import Distribution, detect_distribution
+from mkosi.util import resource_path
 
 from . import ImageConfig, ci_group
 
@@ -49,9 +51,12 @@ def pytest_addoption(parser: Any) -> None:
 @pytest.fixture(scope="session")
 def config(request: Any) -> ImageConfig:
     distribution = cast(Distribution, request.config.getoption("--distribution"))
-    release = cast(
-        str, request.config.getoption("--release") or parse_config(["-d", str(distribution)])[1][0].release
-    )
+    with resource_path(mkosi.resources) as resources:
+        release = cast(
+            str,
+            request.config.getoption("--release")
+            or parse_config(["-d", str(distribution)], resources=resources)[1][0].release,
+        )
     return ImageConfig(
         distribution=distribution,
         release=release,
index 9d1854a5ad488eed0f52ffafe54c253dff8a1c75..c5471a81ddaa976d8bdea60da600a132ce73ea3a 100644 (file)
@@ -223,11 +223,11 @@ def test_initrd_size(config: ImageConfig) -> None:
 
         # The fallback value is for CentOS and related distributions.
         maxsize = 1024**2 * {
-            Distribution.fedora: 55,
-            Distribution.debian: 55,
-            Distribution.ubuntu: 50,
+            Distribution.fedora: 56,
+            Distribution.debian: 58,
+            Distribution.ubuntu: 54,
             Distribution.arch: 80,
-            Distribution.opensuse: 55,
+            Distribution.opensuse: 62,
         }.get(config.distribution, 55)
 
         assert (Path(image.output_dir) / "image.initrd").stat().st_size <= maxsize