diff options
author | Merlin Jehli | 2024-04-28 00:09:31 +0200 |
---|---|---|
committer | Merlin Jehli | 2024-04-28 00:09:31 +0200 |
commit | 686d1ae221fcfd32b56a85f084c317720b277a48 (patch) | |
tree | f69746eee07852a58277064ea22ee77b97d6ddb4 | |
parent | 6cd382fd93fb7c23520ac5d9ed01aee0809b2acd (diff) | |
download | aur-686d1ae221fcfd32b56a85f084c317720b277a48.tar.gz |
Update and description
-rw-r--r-- | .SRCINFO | 25 | ||||
-rw-r--r-- | 0002_added_machine_id_firmware_option.patch | 278 | ||||
-rw-r--r-- | PKGBUILD | 10 |
3 files changed, 214 insertions, 99 deletions
@@ -1,6 +1,7 @@ pkgbase = systemd-fml - pkgver = 255.4 - pkgrel = 5 + pkgdesc = systemd-stable with machine id from hw patch: https://github.com/systemd/systemd/pull/32086 + pkgver = 255.5 + pkgrel = 1 url = https://www.github.com/systemd/systemd arch = x86_64 license = LGPL-2.1-or-later @@ -52,7 +53,7 @@ pkgbase = systemd-fml makedepends = lib32-gcc-libs makedepends = python-pefile conflicts = mkinitcpio<38-1 - source = systemd-fml-stable::git+https://github.com/systemd/systemd-stable#tag=v255.4 + source = systemd-fml-stable::git+https://github.com/systemd/systemd-stable#tag=v255.5 source = 0001-Use-Arch-Linux-device-access-groups.patch source = 0002_added_machine_id_firmware_option.patch source = arch.conf @@ -74,9 +75,9 @@ pkgbase = systemd-fml validpgpkeys = A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E validpgpkeys = 9A774DB5DB996C154EBBFBFDA0099A18E29326E1 validpgpkeys = 5C251B5FC54EB2F80F407AAAC54CA336CFEB557E - sha512sums = 0c41c21931c5f08b5c91fe718d90f8cb11fb83429b3028bde9922605a35ea81d8452b00af99775b519b19195b8ba0084147d13dec1c5dfe9c905d769018b0676 + sha512sums = ab0d47a29d60cb88f0934a9204c71cd78e2f5f568b9da532fdd4f8da55a352fce51cbcbaf17dc1a6f5b3c43ed7579876c724abcc2af5d8c4d3979f2ede60982f sha512sums = 3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e - sha512sums = 9980da54a6a5a8f81cb9a5ef6fd3de70408f95b9397c15f73b4b2bfe34fe66c2a6c95346b256e79a8376b6e99c7d01cec70d20d7c15ac16e05ed25967d5730c9 + sha512sums = d2535a89e9b2326cd82e18ed4cc0e3acfb2dbac2431f64f4b9e1a4eb2fc54b4572a3ce6e480952bf5e920bb485e174eccb365667d4e433d235e5ef0649438d1c sha512sums = 61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648 sha512sums = c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5 sha512sums = 5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75 @@ -148,9 +149,9 @@ pkgname = systemd-fml optdepends = libp11-kit: support PKCS#11 optdepends = tpm2-tss: unlocking LUKS2 volumes with TPM2 provides = nss-myhostname - provides = systemd-tools=255.4 - provides = udev=255.4 - provides = systemd=255.4 + provides = systemd-tools=255.5 + provides = udev=255.5 + provides = systemd=255.5 conflicts = nss-myhostname conflicts = systemd-tools conflicts = udev @@ -191,7 +192,7 @@ pkgname = systemd-libs-fml provides = libsystemd provides = libsystemd.so provides = libudev.so - provides = systemd-libs=255.4 + provides = systemd-libs=255.5 conflicts = libsystemd conflicts = systemd-libs replaces = libsystemd @@ -201,14 +202,14 @@ pkgname = systemd-resolvconf-fml depends = systemd provides = openresolv provides = resolvconf - provides = systemd-resolvconf=255.4 + provides = systemd-resolvconf=255.5 conflicts = resolvconf conflicts = systemd-resolvconf pkgname = systemd-sysvcompat-fml pkgdesc = sysvinit compat for systemd depends = systemd - provides = systemd-sysvcompat=255.4 + provides = systemd-sysvcompat=255.5 conflicts = sysvinit conflicts = systemd-sysvcompat @@ -221,5 +222,5 @@ pkgname = systemd-ukify-fml optdepends = python-pillow: Show the size of splash image optdepends = sbsigntools: Sign the embedded kernel provides = ukify - provides = systemd-ukify=255.4 + provides = systemd-ukify=255.5 conflicts = systemd-ukify diff --git a/0002_added_machine_id_firmware_option.patch b/0002_added_machine_id_firmware_option.patch index 456ef740e4e6..d389ebc1de41 100644 --- a/0002_added_machine_id_firmware_option.patch +++ b/0002_added_machine_id_firmware_option.patch @@ -1,113 +1,227 @@ -Subject: [PATCH] added systemd.machine_id=firmware option ---- -Index: man/machine-id.xml +Index: src/shared/machine-id-setup.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== -diff --git a/man/machine-id.xml b/man/machine-id.xml ---- a/man/machine-id.xml (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5) -+++ b/man/machine-id.xml (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85) -@@ -102,7 +102,8 @@ - value of the kernel command line option <varname>container_uuid</varname>, the KVM DMI - <filename>product_uuid</filename> or the devicetree <filename>vm,uuid</filename> - (on KVM systems), the Xen hypervisor <filename>uuid</filename>, and finally a randomly -- generated UUID.</para> -+ generated UUID. <varname>systemd.machine_id=firmware</varname> can be set to generate the machine id -+ from the firmware.</para> - - <para>After the machine ID is established, - <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> +diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c +--- a/src/shared/machine-id-setup.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711) ++++ b/src/shared/machine-id-setup.c (date 1714255351696) +@@ -28,7 +28,8 @@ + #include "umask-util.h" + #include "virt.h" + +-static int acquire_machine_id_from_credential(sd_id128_t *ret) { ++static int acquire_machine_id_from_credential(sd_id128_t *ret_machine_id, bool *ret_machine_id_from_firmware) { ++ + _cleanup_free_ char *buf = NULL; + int r; + +@@ -38,7 +39,12 @@ + if (r == 0) /* not found */ + return -ENXIO; + +- r = sd_id128_from_string(buf, ret); ++ if (streq(buf, "firmware")) { ++ *ret_machine_id_from_firmware = true; ++ return 0; ++ } ++ ++ r = sd_id128_from_string(buf, ret_machine_id); + if (r < 0) + return log_warning_errno(r, "Failed to parse system.machine_id credential, ignoring: %m"); + +@@ -46,7 +52,7 @@ + return 0; + } + +-static int generate_machine_id(const char *root, sd_id128_t *ret) { ++static int generate_machine_id(const char *root, sd_id128_t *ret, bool machine_id_from_firmware) { + _cleanup_close_ int fd = -EBADF; + int r; + +@@ -61,7 +67,7 @@ + + if (isempty(root) && running_in_chroot() <= 0) { + /* Let's use a system credential for the machine ID if we can */ +- r = acquire_machine_id_from_credential(ret); ++ r = acquire_machine_id_from_credential(ret, &machine_id_from_firmware); + if (r >= 0) + return r; + +@@ -78,14 +84,14 @@ + return 0; + } + +- } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN)) { ++ } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN) || machine_id_from_firmware) { + + /* If we are not running in a container, see if we are running in a VM that provides + * a system UUID via the SMBIOS/DMI interfaces. Such environments include QEMU/KVM + * with the -uuid on the qemu command line or the Amazon EC2 Nitro hypervisor. */ + + if (id128_get_product(ret) >= 0) { +- log_info("Initializing machine ID from VM UUID."); ++ log_info("Initializing machine ID from SMBIOS/DMI UUID."); + return 0; + } + } +@@ -100,12 +106,16 @@ + return 0; + } + +-int machine_id_setup(const char *root, bool force_transient, sd_id128_t machine_id, sd_id128_t *ret) { ++int machine_id_setup(const char *root, sd_id128_t machine_id, MachineIdSetupFlags flags, sd_id128_t *ret) { + const char *etc_machine_id, *run_machine_id; + _cleanup_close_ int fd = -EBADF; + bool writable; ++ bool machine_id_from_firmware = false; + int r; + ++ if (flags & MACHINE_ID_SETUP_FORCE_FIRMWARE) ++ machine_id_from_firmware = true; ++ + etc_machine_id = prefix_roota(root, "/etc/machine-id"); + + WITH_UMASK(0000) { +@@ -138,14 +148,14 @@ + } + + /* A we got a valid machine ID argument, that's what counts */ +- if (sd_id128_is_null(machine_id)) { ++ if (sd_id128_is_null(machine_id) || machine_id_from_firmware) { + + /* Try to read any existing machine ID */ + if (id128_read_fd(fd, ID128_FORMAT_PLAIN, ret) >= 0) + return 0; + + /* Hmm, so, the id currently stored is not useful, then let's generate one */ +- r = generate_machine_id(root, &machine_id); ++ r = generate_machine_id(root, &machine_id, machine_id_from_firmware); + if (r < 0) + return r; + } +@@ -161,7 +171,7 @@ + * disk and overmount it with a transient file. + * + * Otherwise write the machine-id directly to disk. */ +- if (force_transient) { ++ if (flags & MACHINE_ID_SETUP_FORCE_TRANSIENT) { + r = loop_write(fd, "uninitialized\n", SIZE_MAX); + if (r < 0) + return log_error_errno(r, "Failed to write uninitialized %s: %m", etc_machine_id); +@@ -199,7 +209,7 @@ + return r; + } + +- log_full(force_transient ? LOG_DEBUG : LOG_INFO, "Installed transient %s file.", etc_machine_id); ++ log_full(flags & MACHINE_ID_SETUP_FORCE_TRANSIENT ? LOG_DEBUG : LOG_INFO, "Installed transient %s file.", etc_machine_id); + + /* Mark the mount read-only */ + r = mount_follow_verbose(LOG_WARNING, NULL, etc_machine_id, NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, NULL); Index: src/core/main.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/core/main.c b/src/core/main.c ---- a/src/core/main.c (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5) -+++ b/src/core/main.c (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85) -@@ -354,10 +354,13 @@ +--- a/src/core/main.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711) ++++ b/src/core/main.c (date 1714255351649) +@@ -144,6 +144,7 @@ + static Set* arg_syscall_archs; + static FILE* arg_serialization; + static sd_id128_t arg_machine_id; ++static bool arg_machine_id_from_firmware = false; + static EmergencyAction arg_cad_burst_action; + static CPUSet arg_cpu_affinity; + static NUMAPolicy arg_numa_policy; +@@ -352,10 +353,15 @@ if (proc_cmdline_value_missing(key, value)) return 0; - + - r = id128_from_string_nonzero(value, &arg_machine_id); - if (r < 0) - log_warning_errno(r, "MachineID '%s' is not valid, ignoring: %m", value); - -+ if (streq(value, "firmware")) { -+ arg_machine_id = SD_ID128_FIRMWARE; -+ } else { ++ if (streq(value, "firmware")) ++ arg_machine_id_from_firmware = true; ++ else { + r = id128_from_string_nonzero(value, &arg_machine_id); + if (r < 0) + log_warning_errno(r, "MachineID '%s' is not valid, ignoring: %m", value); ++ else ++ arg_machine_id_from_firmware = false; + } } else if (proc_cmdline_key_streq(key, "systemd.default_timeout_start_sec")) { - + if (proc_cmdline_value_missing(key, value)) -Index: src/shared/machine-id-setup.c +@@ -2234,8 +2240,13 @@ + + (void) os_release_status(); + (void) hostname_setup(true); +- /* Force transient machine-id on first boot. */ +- machine_id_setup(/* root= */ NULL, /* force_transient= */ first_boot, arg_machine_id, /* ret_machine_id */ NULL); ++ ++ /* Set up the machine ID flags */ ++ MachineIdSetupFlags machine_id_setup_flags = 0; ++ machine_id_setup_flags = (first_boot ? MACHINE_ID_SETUP_FORCE_TRANSIENT : 0) | ++ (arg_machine_id_from_firmware ? MACHINE_ID_SETUP_FORCE_FIRMWARE : 0); ++ ++ machine_id_setup(/* root= */ NULL, arg_machine_id, machine_id_setup_flags, /* ret_machine_id */ NULL); + (void) loopback_setup(); + bump_unix_max_dgram_qlen(); + bump_file_max_and_nr_open(); +Index: man/machine-id.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== -diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c ---- a/src/shared/machine-id-setup.c (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5) -+++ b/src/shared/machine-id-setup.c (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85) -@@ -5,6 +5,7 @@ - #include <sys/mount.h> - #include <unistd.h> - -+#include "proc-cmdline.h" - #include "sd-id128.h" - - -@@ -80,14 +81,14 @@ - return 0; - } - -- } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN)) { -+ } else if (IN_SET(detect_vm(), VIRTUALIZATION_KVM, VIRTUALIZATION_AMAZON, VIRTUALIZATION_QEMU, VIRTUALIZATION_XEN) || sd_id128_is_firmware(*ret)) { - - /* If we are not running in a container, see if we are running in a VM that provides - * a system UUID via the SMBIOS/DMI interfaces. Such environments include QEMU/KVM - * with the -uuid on the qemu command line or the Amazon EC2 Nitro hypervisor. */ - - if (id128_get_product(ret) >= 0) { -- log_info("Initializing machine ID from VM UUID."); -+ log_info("Initializing machine ID from SMBIOS/DMI UUID."); - return 0; - } - } -@@ -140,7 +141,7 @@ - } - - /* A we got a valid machine ID argument, that's what counts */ -- if (sd_id128_is_null(machine_id)) { -+ if (sd_id128_is_null(machine_id) || sd_id128_is_firmware(machine_id)) { - - /* Try to read any existing machine ID */ - if (id128_read_fd(fd, ID128_FORMAT_PLAIN, &machine_id) >= 0) -Index: src/systemd/sd-id128.h +diff --git a/man/machine-id.xml b/man/machine-id.xml +--- a/man/machine-id.xml (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711) ++++ b/man/machine-id.xml (date 1714255351569) +@@ -102,7 +102,8 @@ + value of the kernel command line option <varname>container_uuid</varname>, the KVM DMI + <filename>product_uuid</filename> or the devicetree <filename>vm,uuid</filename> + (on KVM systems), the Xen hypervisor <filename>uuid</filename>, and finally a randomly +- generated UUID.</para> ++ generated UUID. <varname>systemd.machine_id=firmware</varname> can be set to generate the machine id ++ from the firmware.</para> + + <para>After the machine ID is established, + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> +Index: src/machine-id-setup/machine-id-setup-main.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== -diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h ---- a/src/systemd/sd-id128.h (revision 99a1ef8c9cdcb0fc15265533dae2bbd8f2d7a3a5) -+++ b/src/systemd/sd-id128.h (revision 3ca51e69a32b4582cdbba583b3119b7555a4bd85) -@@ -126,11 +126,16 @@ - return a.qwords[0] == 0 && a.qwords[1] == 0; - } - -+_sd_pure_ static __inline__ int sd_id128_is_firmware(sd_id128_t a) { -+ return a.qwords[0] == 0 && a.qwords[1] == 1; -+} +diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c +--- a/src/machine-id-setup/machine-id-setup-main.c (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711) ++++ b/src/machine-id-setup/machine-id-setup-main.c (date 1714255351673) +@@ -188,7 +188,7 @@ + } else { + sd_id128_t id; + +- r = machine_id_setup(arg_root, false, SD_ID128_NULL, &id); ++ r = machine_id_setup(arg_root, SD_ID128_NULL, 0, &id); + if (r < 0) + return r; + +Index: src/shared/machine-id-setup.h +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/shared/machine-id-setup.h b/src/shared/machine-id-setup.h +--- a/src/shared/machine-id-setup.h (revision 8f4dab049074d31c31af2bb9eb76f9f4f08e3711) ++++ b/src/shared/machine-id-setup.h (date 1714255351713) +@@ -3,5 +3,10 @@ + + #include <stdbool.h> + ++typedef enum MachineIdSetupFlags { ++ MACHINE_ID_SETUP_FORCE_TRANSIENT = 1 << 0, ++ MACHINE_ID_SETUP_FORCE_FIRMWARE = 1 << 1, ++} MachineIdSetupFlags; + - _sd_pure_ static __inline__ int sd_id128_is_allf(sd_id128_t a) { - return a.qwords[0] == UINT64_C(0xFFFFFFFFFFFFFFFF) && a.qwords[1] == UINT64_C(0xFFFFFFFFFFFFFFFF); - } - - #define SD_ID128_NULL ((const sd_id128_t) { .qwords = { 0, 0 }}) -+#define SD_ID128_FIRMWARE ((const sd_id128_t) { .qwords = { 0, 1 }}) - #define SD_ID128_ALLF ((const sd_id128_t) { .qwords = { UINT64_C(0xFFFFFFFFFFFFFFFF), UINT64_C(0xFFFFFFFFFFFFFFFF) }}) - - _sd_pure_ static __inline__ int sd_id128_in_setv(sd_id128_t a, va_list ap) { + int machine_id_commit(const char *root); +-int machine_id_setup(const char *root, bool force_transient, sd_id128_t requested, sd_id128_t *ret); ++int machine_id_setup(const char *root, sd_id128_t machine_id, MachineIdSetupFlags flags, sd_id128_t *ret); @@ -6,7 +6,8 @@ pkgname=('systemd-fml' 'systemd-resolvconf-fml' 'systemd-sysvcompat-fml' 'systemd-ukify-fml') -_tag='255.4' +pkgdesc='systemd-stable with machine id from hw patch: https://github.com/systemd/systemd/pull/32086' +_tag='255.5' # Upstream versioning is incompatible with pacman's version comparisons so we # replace tildes with the empty string to make sure pacman's version comparing # does the right thing for rc versions: @@ -15,7 +16,7 @@ _tag='255.4' # ➜ vercmp 255rc1 255 # -1 pkgver="${_tag/~/}" -pkgrel=5 +pkgrel=1 arch=('x86_64') license=('LGPL-2.1-or-later') url='https://www.github.com/systemd/systemd' @@ -33,7 +34,6 @@ validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering < '9A774DB5DB996C154EBBFBFDA0099A18E29326E1' # Yu Watanabe <watanabe.yu+github@gmail.com> '5C251B5FC54EB2F80F407AAAC54CA336CFEB557E') # Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> source=("$pkgbase-stable::git+https://github.com/systemd/systemd-stable#tag=v${_tag}" -# "$pkgbase::git+https://github.com/systemd/systemd#tag=v${_tag%.*}?signed" '0001-Use-Arch-Linux-device-access-groups.patch' '0002_added_machine_id_firmware_option.patch' # bootloader files @@ -55,9 +55,9 @@ source=("$pkgbase-stable::git+https://github.com/systemd/systemd-stable#tag=v${_ '30-systemd-udev-reload.hook' '30-systemd-update.hook') -sha512sums=('0c41c21931c5f08b5c91fe718d90f8cb11fb83429b3028bde9922605a35ea81d8452b00af99775b519b19195b8ba0084147d13dec1c5dfe9c905d769018b0676' +sha512sums=('ab0d47a29d60cb88f0934a9204c71cd78e2f5f568b9da532fdd4f8da55a352fce51cbcbaf17dc1a6f5b3c43ed7579876c724abcc2af5d8c4d3979f2ede60982f' '3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e' - '9980da54a6a5a8f81cb9a5ef6fd3de70408f95b9397c15f73b4b2bfe34fe66c2a6c95346b256e79a8376b6e99c7d01cec70d20d7c15ac16e05ed25967d5730c9' + 'd2535a89e9b2326cd82e18ed4cc0e3acfb2dbac2431f64f4b9e1a4eb2fc54b4572a3ce6e480952bf5e920bb485e174eccb365667d4e433d235e5ef0649438d1c' '61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648' 'c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5' '5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75' |