summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorToshit Chawda2023-10-15 21:15:55 -0700
committerToshit Chawda2023-10-15 21:15:55 -0700
commitd731d3759650f3677f5cd22fc788c08f21ae2c1a (patch)
treedd6cb612d7f533a4c6af665a13df9f2e68862103
downloadaur-d731d3759650f3677f5cd22fc788c08f21ae2c1a.tar.gz
initial commit - create package
-rw-r--r--.SRCINFO224
-rw-r--r--0001-Use-Arch-Linux-device-access-groups.patch181
-rw-r--r--0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch30
-rw-r--r--20-systemd-sysusers.hook10
-rw-r--r--30-systemd-binfmt.hook10
-rw-r--r--30-systemd-catalog.hook11
-rw-r--r--30-systemd-daemon-reload.hook11
-rw-r--r--30-systemd-hwdb.hook11
-rw-r--r--30-systemd-sysctl.hook10
-rw-r--r--30-systemd-tmpfiles.hook10
-rw-r--r--30-systemd-udev-reload.hook11
-rw-r--r--30-systemd-update.hook11
-rw-r--r--PKGBUILD337
-rw-r--r--arch.conf7
-rw-r--r--initcpio-hook-udev26
-rw-r--r--initcpio-install-systemd165
-rw-r--r--initcpio-install-udev33
-rw-r--r--keys/pgp/5C251B5FC54EB2F80F407AAAC54CA336CFEB557E.asc51
-rw-r--r--keys/pgp/63CDA1E5D3FC22B998D20DD6327F26951A015CC4.asc72
-rw-r--r--keys/pgp/9A774DB5DB996C154EBBFBFDA0099A18E29326E1.asc52
-rw-r--r--keys/pgp/A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E.asc241
-rw-r--r--loader.conf1
-rw-r--r--splash-arch.bmpbin0 -> 378226 bytes
-rw-r--r--systemd-hook78
-rw-r--r--systemd-user.pam5
-rw-r--r--systemd.install62
26 files changed, 1660 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..e303e1e3f8fd
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,224 @@
+pkgbase = systemd-chromiumos
+ pkgver = 254.5
+ pkgrel = 1
+ url = https://www.github.com/systemd/systemd
+ arch = x86_64
+ checkdepends = python-pefile
+ makedepends = acl
+ makedepends = cryptsetup
+ makedepends = docbook-xsl
+ makedepends = gperf
+ makedepends = lz4
+ makedepends = xz
+ makedepends = pam
+ makedepends = libelf
+ makedepends = intltool
+ makedepends = iptables
+ makedepends = kmod
+ makedepends = libcap
+ makedepends = libidn2
+ makedepends = libgcrypt
+ makedepends = libmicrohttpd
+ makedepends = libxcrypt
+ makedepends = libxslt
+ makedepends = util-linux
+ makedepends = linux-api-headers
+ makedepends = python-jinja
+ makedepends = python-lxml
+ makedepends = quota-tools
+ makedepends = shadow
+ makedepends = git
+ makedepends = meson
+ makedepends = libseccomp
+ makedepends = pcre2
+ makedepends = audit
+ makedepends = kexec-tools
+ makedepends = libxkbcommon
+ makedepends = bash-completion
+ makedepends = p11-kit
+ makedepends = systemd
+ makedepends = libfido2
+ makedepends = tpm2-tss
+ makedepends = rsync
+ makedepends = bpf
+ makedepends = libbpf
+ makedepends = clang
+ makedepends = llvm
+ makedepends = curl
+ makedepends = gnutls
+ makedepends = python-pyelftools
+ makedepends = lib32-gcc-libs
+ options = strip
+ source = git+https://github.com/systemd/systemd-stable#tag=42f5ba1e56ddb81c244e0d85f13109acdb14cbee?signed
+ source = git+https://github.com/systemd/systemd#tag=v254?signed
+ source = 0001-Use-Arch-Linux-device-access-groups.patch
+ source = 0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch
+ source = initcpio-hook-udev
+ source = initcpio-install-systemd
+ source = initcpio-install-udev
+ source = arch.conf
+ source = loader.conf
+ source = splash-arch.bmp
+ source = systemd-user.pam
+ source = systemd-hook
+ source = 20-systemd-sysusers.hook
+ source = 30-systemd-binfmt.hook
+ source = 30-systemd-catalog.hook
+ source = 30-systemd-daemon-reload.hook
+ source = 30-systemd-hwdb.hook
+ source = 30-systemd-sysctl.hook
+ source = 30-systemd-tmpfiles.hook
+ source = 30-systemd-udev-reload.hook
+ source = 30-systemd-update.hook
+ validpgpkeys = 63CDA1E5D3FC22B998D20DD6327F26951A015CC4
+ validpgpkeys = A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E
+ validpgpkeys = 9A774DB5DB996C154EBBFBFDA0099A18E29326E1
+ validpgpkeys = 5C251B5FC54EB2F80F407AAAC54CA336CFEB557E
+ sha512sums = SKIP
+ sha512sums = SKIP
+ sha512sums = 3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e
+ sha512sums = 14279a57ec414dc68c25d9e0fd688c94cd078143bf144ac9081ffaa1e369527f3f04369fc27a88c03ae15cc879ac9678c38ca4c7ebfc1d7cbb40a2c2941266d1
+ sha512sums = 4a6cd0cf6764863985dc5ad774d7c93b574645a05b3295f989342951d43c71696d069641592e37eeadb6d6f0531576de96b6392224452f15cd9f056fae038f8e
+ sha512sums = 94a3bf4720d428c2ec4e6c493f78debeb3d3b865ba2bef266f388bffccda8592af81a1fa2cd98f3d60720935e796572fa07256ffafb8d73342214f0ca8ba7acc
+ sha512sums = a8c7e4a2cc9c9987e3c957a1fc3afe8281f2281fffd2e890913dcf00cf704024fb80d86cb75f9314b99b0e03bac275b22de93307bfc226d8be9435497e95b7e6
+ sha512sums = 61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648
+ sha512sums = c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5
+ sha512sums = 5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75
+ sha512sums = b90c99d768dc2a4f020ba854edf45ccf1b86a09d2f66e475de21fe589ff7e32c33ef4aa0876d7f1864491488fd7edb2682fc0d68e83a6d4890a0778dc2d6fe19
+ sha512sums = 5c4119bf1d84b22986dc8d0c4c2de26500b824c21dfac69f22e36809e2673f0652447cc8c9f77190ad098896f4a5e1d03fa33676fe962de631bbfa44513a8860
+ sha512sums = 299dcc7094ce53474521356647bdd2fb069731c08d14a872a425412fcd72da840727a23664b12d95465bf313e8e8297da31259508d1c62cc2dcea596160e21c5
+ sha512sums = 0d6bc3d928cfafe4e4e0bc04dbb95c5d2b078573e4f9e0576e7f53a8fab08a7077202f575d74a3960248c4904b5f7f0661bf17dbe163c524ab51dd30e3cb80f7
+ sha512sums = 2b50b25e8680878f7974fa9d519df7e141ca11c4bfe84a92a5d01bb193f034b1726ea05b3c0030bad1fbda8dbb78bf1dc7b73859053581b55ba813c39b27d9dc
+ sha512sums = 63e55b3acd14bc54320b6f2310b43398651ad4e262d4f4a0135e05d34a993e56ed673cc46e57f15b418371df5c4cef6f54486db96325e4abb1d33fb1a3946254
+ sha512sums = a1661ab946c6cd7d3c6251a2a9fd68afe231db58ce33c92c42594aedb5629be8f299ba08a34713327b373a3badd1554a150343d8d3e5dfb102999c281bd49154
+ sha512sums = 9426829605bbb9e65002437e02ed54e35c20fdf94706770a3dc1049da634147906d6b98bf7f5e7516c84068396a12c6feaf72f92b51bdf19715e0f64620319de
+ sha512sums = da7a97d5d3701c70dd5388b0440da39006ee4991ce174777931fea2aa8c90846a622b2b911f02ae4d5fffb92680d9a7e211c308f0f99c04896278e2ee0d9a4dc
+ sha512sums = a50d202a9c2e91a4450b45c227b295e1840cc99a5e545715d69c8af789ea3dd95a03a30f050d52855cabdc9183d4688c1b534eaa755ebe93616f9d192a855ee3
+ sha512sums = 825b9dd0167c072ba62cabe0677e7cd20f2b4b850328022540f122689d8b25315005fa98ce867cf6e7460b2b26df16b88bb3b5c9ebf721746dce4e2271af7b97
+
+pkgname = systemd-chromiumos
+ pkgdesc = system and service manager - chromiumos patches
+ install = systemd.install
+ license = GPL2
+ license = LGPL2.1
+ depends = acl
+ depends = libacl.so
+ depends = bash
+ depends = cryptsetup
+ depends = libcryptsetup.so
+ depends = dbus
+ depends = iptables
+ depends = kbd
+ depends = kmod
+ depends = libkmod.so
+ depends = hwdata
+ depends = libcap
+ depends = libcap.so
+ depends = libgcrypt
+ depends = libxcrypt
+ depends = libcrypt.so
+ depends = systemd-libs
+ depends = libidn2
+ depends = lz4
+ depends = pam
+ depends = libelf
+ depends = libseccomp
+ depends = libseccomp.so
+ depends = util-linux
+ depends = libblkid.so
+ depends = libmount.so
+ depends = xz
+ depends = pcre2
+ depends = audit
+ depends = libaudit.so
+ depends = openssl
+ depends = libcrypto.so
+ depends = libssl.so
+ optdepends = libmicrohttpd: systemd-journal-gatewayd and systemd-journal-remote
+ optdepends = quota-tools: kernel-level quota management
+ optdepends = systemd-sysvcompat: symlink package to provide sysvinit binaries
+ optdepends = systemd-ukify: combine kernel and initrd into a signed Unified Kernel Image
+ optdepends = polkit: allow administration as unprivileged user
+ optdepends = python: Unified Kernel Image with ukify
+ optdepends = curl: systemd-journal-upload, machinectl pull-tar and pull-raw
+ optdepends = gnutls: systemd-journal-gatewayd and systemd-journal-remote
+ optdepends = libbpf: support BPF programs
+ optdepends = libfido2: unlocking LUKS2 volumes with FIDO2 token
+ optdepends = libp11-kit: support PKCS#11
+ optdepends = tpm2-tss: unlocking LUKS2 volumes with TPM2
+ provides = nss-myhostname
+ provides = systemd-tools=254.5
+ provides = udev=254.5
+ provides = systemd=254.5
+ conflicts = nss-myhostname
+ conflicts = systemd-tools
+ conflicts = udev
+ conflicts = systemd
+ replaces = nss-myhostname
+ replaces = systemd-tools
+ replaces = udev
+ backup = etc/pam.d/systemd-user
+ backup = etc/systemd/coredump.conf
+ backup = etc/systemd/homed.conf
+ backup = etc/systemd/journald.conf
+ backup = etc/systemd/journal-remote.conf
+ backup = etc/systemd/journal-upload.conf
+ backup = etc/systemd/logind.conf
+ backup = etc/systemd/networkd.conf
+ backup = etc/systemd/oomd.conf
+ backup = etc/systemd/pstore.conf
+ backup = etc/systemd/resolved.conf
+ backup = etc/systemd/sleep.conf
+ backup = etc/systemd/system.conf
+ backup = etc/systemd/timesyncd.conf
+ backup = etc/systemd/user.conf
+ backup = etc/udev/iocost.conf
+ backup = etc/udev/udev.conf
+
+pkgname = systemd-chromiumos-libs
+ pkgdesc = systemd client libraries - chromiumos patches
+ license = LGPL2.1
+ depends = glibc
+ depends = gcc-libs
+ depends = libcap
+ depends = libgcrypt
+ depends = lz4
+ depends = xz
+ depends = zstd
+ provides = libsystemd
+ provides = libsystemd.so
+ provides = libudev.so
+ provides = systemd-libs=254.5
+ conflicts = libsystemd
+ conflicts = systemd-libs
+ replaces = libsystemd
+
+pkgname = systemd-chromiumos-resolvconf
+ pkgdesc = systemd resolvconf replacement (for use with systemd-resolved) - chromiumos patches
+ license = LGPL2.1
+ depends = systemd-chromiumos
+ provides = openresolv
+ provides = resolvconf
+ provides = systemd-resolvconf=254.5
+ conflicts = openresolv
+ conflicts = systemd-resolvconf
+
+pkgname = systemd-chromiumos-sysvcompat
+ pkgdesc = sysvinit compat for systemd - chromiumos patches
+ license = GPL2
+ depends = systemd-chromiumos
+ provides = systemd-sysvcompat=254.5
+ conflicts = sysvinit
+ conflicts = systemd-sysvcompat
+
+pkgname = systemd-chromiumos-ukify
+ pkgdesc = Combine kernel and initrd into a signed Unified Kernel Image - chromiumos patches
+ license = GPL2
+ depends = binutils
+ depends = python-cryptography
+ depends = python-pefile
+ optdepends = python-pillow: Show the size of splash image
+ optdepends = sbsigntools: Sign the embedded kernel
+ provides = ukify
+ provides = systemd-ukify=254.5
+ conflicts = systemd-ukify
diff --git a/0001-Use-Arch-Linux-device-access-groups.patch b/0001-Use-Arch-Linux-device-access-groups.patch
new file mode 100644
index 000000000000..d88486575209
--- /dev/null
+++ b/0001-Use-Arch-Linux-device-access-groups.patch
@@ -0,0 +1,181 @@
+From 0e8c18bc2639da328274d02d9222ee2c1f6bf696 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 6 Mar 2018 23:39:47 +0100
+Subject: [PATCH] Use Arch Linux' device access groups
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+ cdrom → optical
+ dialout → uucp
+ tape → storage
+---
+ meson.build | 6 +++---
+ meson_options.txt | 12 ++++++------
+ rules.d/50-udev-default.rules.in | 14 +++++++-------
+ sysusers.d/basic.conf.in | 6 +++---
+ 4 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 76ad51d3fb..5cf679b088 100644
+--- a/meson.build
++++ b/meson.build
+@@ -915,19 +915,19 @@ conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
+ static_ugids = []
+ foreach option : ['adm-gid',
+ 'audio-gid',
+- 'cdrom-gid',
+- 'dialout-gid',
+ 'disk-gid',
+ 'input-gid',
+ 'kmem-gid',
+ 'kvm-gid',
+ 'lp-gid',
++ 'optical-gid',
+ 'render-gid',
+ 'sgx-gid',
+- 'tape-gid',
++ 'storage-gid',
+ 'tty-gid',
+ 'users-gid',
+ 'utmp-gid',
++ 'uucp-gid',
+ 'video-gid',
+ 'wheel-gid',
+ 'systemd-journal-gid',
+diff --git a/meson_options.txt b/meson_options.txt
+index 814f340840..253a77ecb3 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -257,10 +257,6 @@ option('adm-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "adm" group')
+ option('audio-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "audio" group')
+-option('cdrom-gid', type : 'integer', value : 0,
+- description : 'soft-static allocation for the "cdrom" group')
+-option('dialout-gid', type : 'integer', value : 0,
+- description : 'soft-static allocation for the "dialout" group')
+ option('disk-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "disk" group')
+ option('input-gid', type : 'integer', value : 0,
+@@ -271,18 +267,22 @@ option('kvm-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "kvm" group')
+ option('lp-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "lp" group')
++option('optical-gid', type : 'integer', value : '0',
++ description : 'soft-static allocation for the "optical" group')
+ option('render-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "render" group')
+ option('sgx-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "sgx" group')
+-option('tape-gid', type : 'integer', value : 0,
+- description : 'soft-static allocation for the "tape" group')
++option('storage-gid', type : 'integer', value : '0',
++ description : 'soft-static allocation for the "storage" group')
+ option('tty-gid', type : 'integer', value : 5,
+ description : 'the numeric GID of the "tty" group')
+ option('users-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "users" group')
+ option('utmp-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "utmp" group')
++option('uucp-gid', type : 'integer', value : '0',
++ description : 'soft-static allocation for the "uucp" group')
+ option('video-gid', type : 'integer', value : 0,
+ description : 'soft-static allocation for the "video" group')
+ option('wheel-gid', type : 'integer', value : 0,
+diff --git a/rules.d/50-udev-default.rules.in b/rules.d/50-udev-default.rules.in
+index 843bdaf9ce..a192f091df 100644
+--- a/rules.d/50-udev-default.rules.in
++++ b/rules.d/50-udev-default.rules.in
+@@ -26,7 +26,7 @@ SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
+-KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
++KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="uucp"
+
+ SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
+
+@@ -72,13 +72,13 @@ KERNEL=="irlpt[0-9]*", GROUP="lp"
+ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp"
+
+ SUBSYSTEM=="block", GROUP="disk"
+-SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom"
+-SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom"
+-KERNEL=="sch[0-9]*", GROUP="cdrom"
+-KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+-KERNEL=="pktcdvd", GROUP="cdrom"
++SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="optical"
++SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="optical"
++KERNEL=="sch[0-9]*", GROUP="optical"
++KERNEL=="pktcdvd[0-9]*", GROUP="optical"
++KERNEL=="pktcdvd", GROUP="optical"
+
+-SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
++SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="storage"
+ SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
+ KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
+ KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control"
+diff --git a/sysusers.d/basic.conf.in b/sysusers.d/basic.conf.in
+index a602b872e4..8d38febb6a 100644
+--- a/sysusers.d/basic.conf.in
++++ b/sysusers.d/basic.conf.in
+@@ -23,17 +23,17 @@ g utmp {{UTMP_GID }} - -
+
+ # Physical and virtual hardware access groups
+ g audio {{AUDIO_GID }} - -
+-g cdrom {{CDROM_GID }} - -
+-g dialout {{DIALOUT_GID}} - -
+ g disk {{DISK_GID }} - -
+ g input {{INPUT_GID }} - -
+ g kmem {{KMEM_GID }} - -
+ g kvm {{KVM_GID }} - -
+ g lp {{LP_GID }} - -
++g optical {{OPTICAL_GID}} - -
+ g render {{RENDER_GID }} - -
+ g sgx {{SGX_GID }} - -
+-g tape {{TAPE_GID }} - -
++g storage {{STORAGE_GID}} - -
+ g tty {{TTY_GID }} - -
++g uucp {{UUCP_GID }} - -
+ g video {{VIDEO_GID }} - -
+
+ # Default group for normal users
+
+From 9e2987a7b4d09d7b554141e9ef2c911cb3fda570 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Mon, 27 Dec 2021 23:32:42 +0100
+Subject: [PATCH] generate tmpfiles.d/legacy.conf
+
+---
+ tmpfiles.d/legacy.conf.in | 3 ---
+ tmpfiles.d/meson.build | 2 +-
+ 2 files changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/tmpfiles.d/legacy.conf.in b/tmpfiles.d/legacy.conf.in
+index 4f2c0d7c43..62e2ae0986 100644
+--- a/tmpfiles.d/legacy.conf.in
++++ b/tmpfiles.d/legacy.conf.in
+@@ -12,9 +12,6 @@
+
+ d /run/lock 0755 root root -
+ L /var/lock - - - - ../run/lock
+-{% if CREATE_LOG_DIRS %}
+-L /var/log/README - - - - ../..{{DOC_DIR}}/README.logs
+-{% endif %}
+
+ # /run/lock/subsys is used for serializing SysV service execution, and
+ # hence without use on SysV-less systems.
+diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build
+index ca1abbf3fe..25e2b53402 100644
+--- a/tmpfiles.d/meson.build
++++ b/tmpfiles.d/meson.build
+@@ -29,7 +29,7 @@ foreach pair : files
+ endforeach
+
+ in_files = [['etc.conf', ''],
+- ['legacy.conf', 'HAVE_SYSV_COMPAT'],
++ ['legacy.conf', ''],
+ ['static-nodes-permissions.conf', ''],
+ ['systemd.conf', ''],
+ ['var.conf', ''],
diff --git a/0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch b/0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch
new file mode 100644
index 000000000000..d424dde18dbb
--- /dev/null
+++ b/0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch
@@ -0,0 +1,30 @@
+diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
+index bf67f7e01a..97e0615047 100644
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -605,23 +605,9 @@ int mount_nofollow(
+ const char *filesystemtype,
+ unsigned long mountflags,
+ const void *data) {
++ // Disabled due to ChromiumOS kernel already protecting against mount paths with symlinks.
+
+- _cleanup_close_ int fd = -EBADF;
+-
+- /* In almost all cases we want to manipulate the mount table without following symlinks, hence
+- * mount_nofollow() is usually the way to go. The only exceptions are environments where /proc/ is
+- * not available yet, since we need /proc/self/fd/ for this logic to work. i.e. during the early
+- * initialization of namespacing/container stuff where /proc is not yet mounted (and maybe even the
+- * fs to mount) we can only use traditional mount() directly.
+- *
+- * Note that this disables following only for the final component of the target, i.e symlinks within
+- * the path of the target are honoured, as are symlinks in the source path everywhere. */
+-
+- fd = open(target, O_PATH|O_CLOEXEC|O_NOFOLLOW);
+- if (fd < 0)
+- return -errno;
+-
+- return mount_fd(source, fd, filesystemtype, mountflags, data);
++ return RET_NERRNO(mount(source, target, filesystemtype, mountflags, data));
+ }
+
+ const char *mount_propagation_flag_to_string(unsigned long flags) {
diff --git a/20-systemd-sysusers.hook b/20-systemd-sysusers.hook
new file mode 100644
index 000000000000..edc71957b78c
--- /dev/null
+++ b/20-systemd-sysusers.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/sysusers.d/*.conf
+
+[Action]
+Description = Creating system user accounts...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook sysusers
diff --git a/30-systemd-binfmt.hook b/30-systemd-binfmt.hook
new file mode 100644
index 000000000000..19f3bcc154a5
--- /dev/null
+++ b/30-systemd-binfmt.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/binfmt.d/*.conf
+
+[Action]
+Description = Registering binary formats...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook binfmt
diff --git a/30-systemd-catalog.hook b/30-systemd-catalog.hook
new file mode 100644
index 000000000000..6e717b9a4651
--- /dev/null
+++ b/30-systemd-catalog.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/systemd/catalog/*
+
+[Action]
+Description = Updating journal message catalog...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook catalog
diff --git a/30-systemd-daemon-reload.hook b/30-systemd-daemon-reload.hook
new file mode 100644
index 000000000000..dff95e49747a
--- /dev/null
+++ b/30-systemd-daemon-reload.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/systemd/system/*
+
+[Action]
+Description = Reloading system manager configuration...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook daemon-reload
diff --git a/30-systemd-hwdb.hook b/30-systemd-hwdb.hook
new file mode 100644
index 000000000000..1d85e29e84c0
--- /dev/null
+++ b/30-systemd-hwdb.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/udev/hwdb.d/*
+
+[Action]
+Description = Updating udev hardware database...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook hwdb
diff --git a/30-systemd-sysctl.hook b/30-systemd-sysctl.hook
new file mode 100644
index 000000000000..e2354c0b1563
--- /dev/null
+++ b/30-systemd-sysctl.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/sysctl.d/*.conf
+
+[Action]
+Description = Applying kernel sysctl settings...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook sysctl
diff --git a/30-systemd-tmpfiles.hook b/30-systemd-tmpfiles.hook
new file mode 100644
index 000000000000..b07db6a84328
--- /dev/null
+++ b/30-systemd-tmpfiles.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/tmpfiles.d/*.conf
+
+[Action]
+Description = Creating temporary files...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook tmpfiles
diff --git a/30-systemd-udev-reload.hook b/30-systemd-udev-reload.hook
new file mode 100644
index 000000000000..7676cca8cda4
--- /dev/null
+++ b/30-systemd-udev-reload.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/udev/rules.d/*
+
+[Action]
+Description = Reloading device manager configuration...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook udev-reload
diff --git a/30-systemd-update.hook b/30-systemd-update.hook
new file mode 100644
index 000000000000..f95d9dcc3b9e
--- /dev/null
+++ b/30-systemd-update.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/
+
+[Action]
+Description = Arming ConditionNeedsUpdate...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/systemd-hook update
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..3a8ef87f1261
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,337 @@
+# Maintainer: r58Playz <r58Playz@gmail.com>
+# Contributor: Christian Hesse <mail@eworm.de>
+
+pkgbase=systemd-chromiumos
+_pkgbase=systemd
+pkgname=('systemd-chromiumos'
+ 'systemd-chromiumos-libs'
+ 'systemd-chromiumos-resolvconf'
+ 'systemd-chromiumos-sysvcompat'
+ 'systemd-chromiumos-ukify')
+_tag='42f5ba1e56ddb81c244e0d85f13109acdb14cbee' # git rev-parse v${_tag_name}
+_tag_name=254.5
+pkgver="${_tag_name/-/}"
+pkgrel=1
+arch=('x86_64')
+url='https://www.github.com/systemd/systemd'
+makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gperf' 'lz4' 'xz' 'pam' 'libelf'
+ 'intltool' 'iptables' 'kmod' 'libcap' 'libidn2' 'libgcrypt'
+ 'libmicrohttpd' 'libxcrypt' 'libxslt' 'util-linux' 'linux-api-headers'
+ 'python-jinja' 'python-lxml' 'quota-tools' 'shadow' 'git'
+ 'meson' 'libseccomp' 'pcre2' 'audit' 'kexec-tools' 'libxkbcommon'
+ 'bash-completion' 'p11-kit' 'systemd' 'libfido2' 'tpm2-tss' 'rsync'
+ 'bpf' 'libbpf' 'clang' 'llvm' 'curl' 'gnutls' 'python-pyelftools'
+ 'lib32-gcc-libs')
+checkdepends=('python-pefile')
+options=('strip')
+validpgpkeys=('63CDA1E5D3FC22B998D20DD6327F26951A015CC4' # Lennart Poettering <lennart@poettering.net>
+ 'A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E' # Luca Boccassi <luca.boccassi@gmail.com>
+ '9A774DB5DB996C154EBBFBFDA0099A18E29326E1' # Yu Watanabe <watanabe.yu+github@gmail.com>
+ '5C251B5FC54EB2F80F407AAAC54CA336CFEB557E') # Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
+source=("git+https://github.com/systemd/systemd-stable#tag=${_tag}?signed"
+ "git+https://github.com/systemd/systemd#tag=v${_tag_name%.*}?signed"
+ '0001-Use-Arch-Linux-device-access-groups.patch'
+ '0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch'
+ # mkinitcpio files
+ 'initcpio-hook-udev'
+ 'initcpio-install-systemd'
+ 'initcpio-install-udev'
+ # bootloader files
+ 'arch.conf'
+ 'loader.conf'
+ 'splash-arch.bmp'
+ # pam configuration
+ 'systemd-user.pam'
+ # pacman / libalpm hooks
+ 'systemd-hook'
+ '20-systemd-sysusers.hook'
+ '30-systemd-binfmt.hook'
+ '30-systemd-catalog.hook'
+ '30-systemd-daemon-reload.hook'
+ '30-systemd-hwdb.hook'
+ '30-systemd-sysctl.hook'
+ '30-systemd-tmpfiles.hook'
+ '30-systemd-udev-reload.hook'
+ '30-systemd-update.hook')
+sha512sums=('SKIP'
+ 'SKIP'
+ '3ccf783c28f7a1c857120abac4002ca91ae1f92205dcd5a84aff515d57e706a3f9240d75a0a67cff5085716885e06e62597baa86897f298662ec36a940cf410e'
+ '14279a57ec414dc68c25d9e0fd688c94cd078143bf144ac9081ffaa1e369527f3f04369fc27a88c03ae15cc879ac9678c38ca4c7ebfc1d7cbb40a2c2941266d1'
+ '4a6cd0cf6764863985dc5ad774d7c93b574645a05b3295f989342951d43c71696d069641592e37eeadb6d6f0531576de96b6392224452f15cd9f056fae038f8e'
+ '94a3bf4720d428c2ec4e6c493f78debeb3d3b865ba2bef266f388bffccda8592af81a1fa2cd98f3d60720935e796572fa07256ffafb8d73342214f0ca8ba7acc'
+ 'a8c7e4a2cc9c9987e3c957a1fc3afe8281f2281fffd2e890913dcf00cf704024fb80d86cb75f9314b99b0e03bac275b22de93307bfc226d8be9435497e95b7e6'
+ '61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648'
+ 'c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5'
+ '5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75'
+ 'b90c99d768dc2a4f020ba854edf45ccf1b86a09d2f66e475de21fe589ff7e32c33ef4aa0876d7f1864491488fd7edb2682fc0d68e83a6d4890a0778dc2d6fe19'
+ '5c4119bf1d84b22986dc8d0c4c2de26500b824c21dfac69f22e36809e2673f0652447cc8c9f77190ad098896f4a5e1d03fa33676fe962de631bbfa44513a8860'
+ '299dcc7094ce53474521356647bdd2fb069731c08d14a872a425412fcd72da840727a23664b12d95465bf313e8e8297da31259508d1c62cc2dcea596160e21c5'
+ '0d6bc3d928cfafe4e4e0bc04dbb95c5d2b078573e4f9e0576e7f53a8fab08a7077202f575d74a3960248c4904b5f7f0661bf17dbe163c524ab51dd30e3cb80f7'
+ '2b50b25e8680878f7974fa9d519df7e141ca11c4bfe84a92a5d01bb193f034b1726ea05b3c0030bad1fbda8dbb78bf1dc7b73859053581b55ba813c39b27d9dc'
+ '63e55b3acd14bc54320b6f2310b43398651ad4e262d4f4a0135e05d34a993e56ed673cc46e57f15b418371df5c4cef6f54486db96325e4abb1d33fb1a3946254'
+ 'a1661ab946c6cd7d3c6251a2a9fd68afe231db58ce33c92c42594aedb5629be8f299ba08a34713327b373a3badd1554a150343d8d3e5dfb102999c281bd49154'
+ '9426829605bbb9e65002437e02ed54e35c20fdf94706770a3dc1049da634147906d6b98bf7f5e7516c84068396a12c6feaf72f92b51bdf19715e0f64620319de'
+ 'da7a97d5d3701c70dd5388b0440da39006ee4991ce174777931fea2aa8c90846a622b2b911f02ae4d5fffb92680d9a7e211c308f0f99c04896278e2ee0d9a4dc'
+ 'a50d202a9c2e91a4450b45c227b295e1840cc99a5e545715d69c8af789ea3dd95a03a30f050d52855cabdc9183d4688c1b534eaa755ebe93616f9d192a855ee3'
+ '825b9dd0167c072ba62cabe0677e7cd20f2b4b850328022540f122689d8b25315005fa98ce867cf6e7460b2b26df16b88bb3b5c9ebf721746dce4e2271af7b97')
+
+_backports=(
+)
+
+_reverts=(
+)
+
+prepare() {
+ cd "$_pkgbase-stable"
+
+ # add upstream repository for cherry-picking
+ git remote add -f upstream ../systemd
+
+ local _c _l
+ for _c in "${_backports[@]}"; do
+ if [[ "${_c}" == *..* ]]; then _l='--reverse'; else _l='--max-count=1'; fi
+ git log --oneline "${_l}" "${_c}"
+ git cherry-pick --mainline 1 --no-commit "${_c}"
+ done
+ for _c in "${_reverts[@]}"; do
+ if [[ "${_c}" == *..* ]]; then _l='--reverse'; else _l='--max-count=1'; fi
+ git log --oneline "${_l}" "${_c}"
+ git revert --mainline 1 --no-commit "${_c}"
+ done
+
+ # Replace cdrom/dialout/tape groups with optical/uucp/storage
+ patch -Np1 -i ../0001-Use-Arch-Linux-device-access-groups.patch
+ patch -Np1 -i ../0002-Disable-mount_nofollow-for-ChromiumOS-kernels.patch
+}
+
+build() {
+ local _timeservers=({0..3}.arch.pool.ntp.org)
+ local _nameservers=(
+ # We use these public name services, ordered by their privacy policy (hopefully):
+ # * Cloudflare (https://1.1.1.1/)
+ # * Quad9 (https://www.quad9.net/)
+ # * Google (https://developers.google.com/speed/public-dns/)
+ '1.1.1.1#cloudflare-dns.com'
+ '9.9.9.9#dns.quad9.net'
+ '8.8.8.8#dns.google'
+ '2606:4700:4700::1111#cloudflare-dns.com'
+ '2620:fe::9#dns.quad9.net'
+ '2001:4860:4860::8888#dns.google'
+ )
+
+ local _meson_options=(
+ # internal version comparison is incompatible with pacman:
+ # 249~rc1 < 249 < 249.1 < 249rc
+ -Dversion-tag="${_tag_name/-/\~}-${pkgrel}-arch"
+ -Dshared-lib-tag="${pkgver}-${pkgrel}"
+ -Dmode=release
+
+ -Dbootloader=true
+ -Dbpf-framework=true
+ -Dima=false
+ -Dlibidn2=true
+ -Dlz4=true
+ -Dman=true
+ -Dnscd=false
+
+ # We disable DNSSEC by default, it still causes trouble:
+ # https://github.com/systemd/systemd/issues/10579
+
+ -Ddbuspolicydir=/usr/share/dbus-1/system.d
+ -Ddefault-dnssec=no
+ -Ddefault-hierarchy=unified
+ -Ddefault-kill-user-processes=false
+ -Ddefault-locale='C.UTF-8'
+ -Dlocalegen-path=/usr/bin/locale-gen
+ -Ddns-over-tls=openssl
+ -Dfallback-hostname='archlinux'
+ -Dnologin-path=/usr/bin/nologin
+ -Dntp-servers="${_timeservers[*]}"
+ -Ddns-servers="${_nameservers[*]}"
+ -Drpmmacrosdir=no
+ -Dsysvinit-path=
+ -Dsysvrcnd-path=
+
+ -Dsbat-distro='arch'
+ -Dsbat-distro-summary='Arch Linux'
+ -Dsbat-distro-pkgname="${pkgname}"
+ -Dsbat-distro-version="${pkgver}"
+ -Dsbat-distro-url="https://archlinux.org/packages/core/x86_64/${pkgname}/"
+ )
+
+ # this uses malloc_usable_size, which is incompatible with fortification level 3
+ export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+ export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+
+ arch-meson "$_pkgbase-stable" build "${_meson_options[@]}"
+
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package_systemd-chromiumos() {
+ pkgdesc='system and service manager - chromiumos patches'
+ license=('GPL2' 'LGPL2.1')
+ depends=('acl' 'libacl.so' 'bash' 'cryptsetup' 'libcryptsetup.so' 'dbus'
+ 'iptables' 'kbd' 'kmod' 'libkmod.so' 'hwdata' 'libcap' 'libcap.so'
+ 'libgcrypt' 'libxcrypt' 'libcrypt.so' 'systemd-libs' 'libidn2' 'lz4' 'pam'
+ 'libelf' 'libseccomp' 'libseccomp.so' 'util-linux' 'libblkid.so'
+ 'libmount.so' 'xz' 'pcre2' 'audit' 'libaudit.so'
+ 'openssl' 'libcrypto.so' 'libssl.so')
+ provides=('nss-myhostname' "systemd-tools=$pkgver" "udev=$pkgver" "systemd=$pkgver")
+ replaces=('nss-myhostname' 'systemd-tools' 'udev')
+ conflicts=('nss-myhostname' 'systemd-tools' 'udev' 'systemd')
+ optdepends=('libmicrohttpd: systemd-journal-gatewayd and systemd-journal-remote'
+ 'quota-tools: kernel-level quota management'
+ 'systemd-sysvcompat: symlink package to provide sysvinit binaries'
+ 'systemd-ukify: combine kernel and initrd into a signed Unified Kernel Image'
+ 'polkit: allow administration as unprivileged user'
+ 'python: Unified Kernel Image with ukify'
+ 'curl: systemd-journal-upload, machinectl pull-tar and pull-raw'
+ 'gnutls: systemd-journal-gatewayd and systemd-journal-remote'
+ 'libbpf: support BPF programs'
+ 'libfido2: unlocking LUKS2 volumes with FIDO2 token'
+ 'libp11-kit: support PKCS#11'
+ 'tpm2-tss: unlocking LUKS2 volumes with TPM2')
+ backup=(etc/pam.d/systemd-user
+ etc/systemd/coredump.conf
+ etc/systemd/homed.conf
+ etc/systemd/journald.conf
+ etc/systemd/journal-remote.conf
+ etc/systemd/journal-upload.conf
+ etc/systemd/logind.conf
+ etc/systemd/networkd.conf
+ etc/systemd/oomd.conf
+ etc/systemd/pstore.conf
+ etc/systemd/resolved.conf
+ etc/systemd/sleep.conf
+ etc/systemd/system.conf
+ etc/systemd/timesyncd.conf
+ etc/systemd/user.conf
+ etc/udev/iocost.conf
+ etc/udev/udev.conf)
+ install=systemd.install
+
+ meson install -C build --destdir "$pkgdir"
+
+ # we'll create this on installation
+ rmdir "$pkgdir"/var/log/journal/remote
+
+ # runtime libraries shipped with systemd-libs
+ install -d -m0755 systemd-libs/lib/
+ mv "$pkgdir"/usr/lib/lib{nss,systemd,udev}*.so* systemd-libs/lib/
+ mv "$pkgdir"/usr/lib/pkgconfig systemd-libs/lib/pkgconfig
+ mv "$pkgdir"/usr/include systemd-libs/include
+ mv "$pkgdir"/usr/share/man/man3 systemd-libs/man3
+
+ # ukify shipped in separate package
+ install -d -m0755 systemd-ukify/{systemd,man1}
+ mv "$pkgdir"/usr/lib/systemd/ukify systemd-ukify/systemd/
+ mv "$pkgdir"/usr/share/man/man1/ukify.1 systemd-ukify/man1/
+
+ # manpages shipped with systemd-sysvcompat
+ rm "$pkgdir"/usr/share/man/man8/{halt,poweroff,reboot,shutdown}.8
+
+ # executable (symlinks) shipped with systemd-sysvcompat
+ rm "$pkgdir"/usr/bin/{halt,init,poweroff,reboot,shutdown}
+
+ # files shipped with systemd-resolvconf
+ rm "$pkgdir"/usr/{bin/resolvconf,share/man/man1/resolvconf.1}
+
+ # avoid a potential conflict with [core]/filesystem
+ rm "$pkgdir"/usr/share/factory/etc/{issue,nsswitch.conf}
+ sed -i -e '/^C \/etc\/nsswitch\.conf/d' \
+ -e '/^C \/etc\/issue/d' "$pkgdir"/usr/lib/tmpfiles.d/etc.conf
+
+ # ship default policy to leave services disabled
+ echo 'disable *' >"$pkgdir"/usr/lib/systemd/system-preset/99-default.preset
+
+ # add mkinitcpio hooks
+ install -D -m0644 initcpio-install-systemd "$pkgdir"/usr/lib/initcpio/install/systemd
+ install -D -m0644 initcpio-install-udev "$pkgdir"/usr/lib/initcpio/install/udev
+ install -D -m0644 initcpio-hook-udev "$pkgdir"/usr/lib/initcpio/hooks/udev
+
+ # The group 'systemd-journal' is allocated dynamically and may have varying
+ # gid on different systems. Let's install with gid 0 (root), systemd-tmpfiles
+ # will fix the permissions for us. (see /usr/lib/tmpfiles.d/systemd.conf)
+ install -d -o root -g root -m 2755 "$pkgdir"/var/log/journal
+
+ # match directory owner/group and mode from [extra]/polkit
+ install -d -o root -g 102 -m 0750 "$pkgdir"/usr/share/polkit-1/rules.d
+
+ # add example bootctl configuration
+ install -D -m0644 arch.conf "$pkgdir"/usr/share/systemd/bootctl/arch.conf
+ install -D -m0644 loader.conf "$pkgdir"/usr/share/systemd/bootctl/loader.conf
+ install -D -m0644 splash-arch.bmp "$pkgdir"/usr/share/systemd/bootctl/splash-arch.bmp
+
+ # pacman hooks
+ install -D -m0755 systemd-hook "$pkgdir"/usr/share/libalpm/scripts/systemd-hook
+ install -D -m0644 -t "$pkgdir"/usr/share/libalpm/hooks *.hook
+
+ # overwrite the systemd-user PAM configuration with our own
+ install -D -m0644 systemd-user.pam "$pkgdir"/etc/pam.d/systemd-user
+}
+
+package_systemd-chromiumos-libs() {
+ pkgdesc='systemd client libraries - chromiumos patches'
+ depends=('glibc' 'gcc-libs' 'libcap' 'libgcrypt' 'lz4' 'xz' 'zstd')
+ license=('LGPL2.1')
+ provides=('libsystemd' 'libsystemd.so' 'libudev.so' "systemd-libs=$pkgver")
+ conflicts=('libsystemd' 'systemd-libs')
+ replaces=('libsystemd')
+
+ install -d -m0755 "$pkgdir"/usr/share/man
+ mv systemd-libs/lib "$pkgdir"/usr/lib
+ mv systemd-libs/include "$pkgdir"/usr/include
+ mv systemd-libs/man3 "$pkgdir"/usr/share/man/man3
+}
+
+package_systemd-chromiumos-resolvconf() {
+ pkgdesc='systemd resolvconf replacement (for use with systemd-resolved) - chromiumos patches'
+ license=('LGPL2.1')
+ depends=('systemd-chromiumos')
+ provides=('openresolv' 'resolvconf' "systemd-resolvconf=$pkgver")
+ conflicts=('openresolv' 'systemd-resolvconf')
+
+ install -d -m0755 "$pkgdir"/usr/bin
+ ln -s resolvectl "$pkgdir"/usr/bin/resolvconf
+
+ install -d -m0755 "$pkgdir"/usr/share/man/man1
+ ln -s resolvectl.1.gz "$pkgdir"/usr/share/man/man1/resolvconf.1.gz
+}
+
+package_systemd-chromiumos-sysvcompat() {
+ pkgdesc='sysvinit compat for systemd - chromiumos patches'
+ license=('GPL2')
+ provides=("systemd-sysvcompat=$pkgver")
+ conflicts=('sysvinit' 'systemd-sysvcompat')
+ depends=('systemd-chromiumos')
+
+ install -D -m0644 -t "$pkgdir"/usr/share/man/man8 \
+ build/man/{halt,poweroff,reboot,shutdown}.8
+
+ install -d -m0755 "$pkgdir"/usr/bin
+ ln -s ../lib/systemd/systemd "$pkgdir"/usr/bin/init
+ for tool in halt poweroff reboot shutdown; do
+ ln -s systemctl "$pkgdir"/usr/bin/$tool
+ done
+}
+
+package_systemd-chromiumos-ukify() {
+ pkgdesc='Combine kernel and initrd into a signed Unified Kernel Image - chromiumos patches'
+ license=('GPL2')
+ provides=('ukify' "systemd-ukify=$pkgver")
+ conflicts=('systemd-ukify')
+ depends=('binutils' 'python-cryptography' 'python-pefile')
+ optdepends=('python-pillow: Show the size of splash image'
+ 'sbsigntools: Sign the embedded kernel')
+
+ install -d -m0755 "$pkgdir"/usr/{lib,share/man}
+ mv systemd-ukify/systemd "$pkgdir"/usr/lib/systemd
+ mv systemd-ukify/man1 "$pkgdir"/usr/share/man/man1
+}
+
+# vim:ft=sh syn=sh et sw=2:
diff --git a/arch.conf b/arch.conf
new file mode 100644
index 000000000000..250b7785e94b
--- /dev/null
+++ b/arch.conf
@@ -0,0 +1,7 @@
+## This is just an example config file.
+## Please edit the paths and kernel parameters according to your system.
+
+title Arch Linux
+linux /vmlinuz-linux
+initrd /initramfs-linux.img
+options root=PARTUUID=XXXX rootfstype=XXXX add_efi_memmap
diff --git a/initcpio-hook-udev b/initcpio-hook-udev
new file mode 100644
index 000000000000..dfa875067ee3
--- /dev/null
+++ b/initcpio-hook-udev
@@ -0,0 +1,26 @@
+#!/usr/bin/ash
+
+run_earlyhook() {
+ kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
+ systemd-tmpfiles --prefix=/dev --create --boot
+ if [ "${quiet}" = "y" ]; then
+ /usr/lib/systemd/systemd-udevd --daemon --resolve-names=never >/dev/null 2>&1
+ else
+ /usr/lib/systemd/systemd-udevd --daemon --resolve-names=never
+ fi
+ udevd_running=1
+}
+
+run_hook() {
+ msg ":: Triggering uevents..."
+ udevadm trigger --action=add --type=subsystems
+ udevadm trigger --action=add --type=devices
+ udevadm settle
+}
+
+run_cleanuphook() {
+ udevadm control --exit
+ udevadm info --cleanup-db
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/initcpio-install-systemd b/initcpio-install-systemd
new file mode 100644
index 000000000000..d59900c35b51
--- /dev/null
+++ b/initcpio-install-systemd
@@ -0,0 +1,165 @@
+#!/bin/bash
+
+add_systemd_unit() {
+ # Add a systemd unit file to the initcpio image. Hard dependencies on binaries
+ # and other unit files will be discovered and added.
+ # $1: path to rules file (or name of rules file)
+
+ local unit= rule= entry= key= value= binary= dep=
+
+ unit=$(PATH=/usr/lib/systemd/system:/lib/systemd/system type -P "$1")
+ if [[ -z $unit ]]; then
+ # complain about not found unit file
+ return 1
+ fi
+
+ add_file "$unit"
+
+ while IFS='=' read -r key values; do
+ read -ra values <<< "$values"
+
+ case $key in
+ Requires|OnFailure)
+ # only add hard dependencies (not Wants)
+ map add_systemd_unit "${values[@]}"
+ ;;
+ Exec*)
+ # do not add binaries unless they are required,
+ # strip special executable prefixes
+ case ${values[0]} in
+ -*) ;;
+ !!*) add_binary "${values[0]#!!}" ;;
+ *) add_binary "${values[0]#[@!:+]}" ;;
+ esac
+ ;;
+ esac
+
+ done <"$unit"
+
+ # preserve reverse soft dependency
+ for dep in {/usr,}/lib/systemd/system/*.wants/${unit##*/}; do
+ if [[ -L $dep ]]; then
+ add_symlink "$dep"
+ fi
+ done
+
+ # add hard dependencies
+ if [[ -d $unit.requires ]]; then
+ for dep in "$unit".requires/*; do
+ add_systemd_unit ${dep##*/}
+ done
+ fi
+}
+
+add_systemd_drop_in() {
+ local unit=$1 dropin_name=$2
+
+ mkdir -p "$BUILDROOT/etc/systemd/system/$unit.d"
+ cat >"$BUILDROOT/etc/systemd/system/$unit.d/$2.conf"
+}
+
+build() {
+ local rules unit
+
+ add_binary /usr/bin/kmod /usr/bin/modprobe
+ add_binary /usr/bin/mount
+ add_binary /usr/bin/sulogin
+ add_binary /usr/bin/umount
+ add_binary /usr/lib/systemd/systemd /init
+
+ map add_binary \
+ /usr/bin/journalctl \
+ /usr/bin/systemd-tmpfiles \
+ /usr/lib/systemd/systemd-hibernate-resume \
+ /usr/lib/systemd/systemd-shutdown \
+ /usr/lib/systemd/systemd-sulogin-shell \
+ /usr/lib/systemd/system-generators/systemd-fstab-generator \
+ /usr/lib/systemd/system-generators/systemd-gpt-auto-generator \
+ /usr/lib/systemd/system-generators/systemd-hibernate-resume-generator
+
+ # udev rules
+ map add_udev_rule "$rules" \
+ 50-udev-default.rules \
+ 60-persistent-storage.rules \
+ 64-btrfs.rules \
+ 80-drivers.rules \
+ 99-systemd.rules
+
+ # systemd units
+ map add_systemd_unit \
+ initrd-cleanup.service \
+ initrd-fs.target \
+ initrd-parse-etc.service \
+ initrd-root-fs.target \
+ initrd-root-device.target \
+ initrd-switch-root.service \
+ initrd-switch-root.target \
+ initrd-udevadm-cleanup-db.service \
+ initrd.target \
+ kmod-static-nodes.service \
+ local-fs.target \
+ local-fs-pre.target \
+ paths.target \
+ reboot.target \
+ slices.target \
+ sockets.target \
+ swap.target \
+ systemd-battery-check.service \
+ systemd-fsck@.service \
+ systemd-journald-audit.socket \
+ systemd-journald-dev-log.socket \
+ systemd-journald.service \
+ systemd-modules-load.service \
+ systemd-pcrphase-initrd.service \
+ systemd-tmpfiles-setup-dev.service \
+ systemd-udevd-control.socket \
+ systemd-udevd-kernel.socket \
+ systemd-udevd.service \
+ systemd-udev-trigger.service \
+ systemd-vconsole-setup.service \
+ timers.target \
+ rescue.target \
+ emergency.target
+
+ # add libraries dlopen()ed by tpm2-util
+ for LIB in tss2-{esys,rc,mu,tcti-'*'}; do
+ for FILE in $(find /usr/lib/ -maxdepth 1 -name "lib${LIB}.so*"); do
+ if [[ -L "${FILE}" ]]; then
+ add_symlink "${FILE}"
+ else
+ add_binary "${FILE}"
+ fi
+ done
+ done
+
+ add_symlink "/usr/lib/systemd/system/default.target" "initrd.target"
+ add_symlink "/usr/lib/systemd/system/ctrl-alt-del.target" "reboot.target"
+
+ printf '%s\n' >"$BUILDROOT/etc/nsswitch.conf" \
+ 'passwd: files' \
+ 'group: files' \
+ 'shadow: files'
+
+ echo "root:x:0:0:root:/root:/bin/sh" >"$BUILDROOT/etc/passwd"
+ echo 'root:*:::::::' >"$BUILDROOT/etc/shadow"
+ getent group root audio disk input kmem kvm lp optical render sgx storage tty uucp video | awk -F: ' { print $1 ":x:" $3 ":" }' >"$BUILDROOT/etc/group"
+
+ add_dir "/etc/modules-load.d"
+ (
+ . "$_f_config"
+ set -f
+ printf '%s\n' ${MODULES[@]} >"$BUILDROOT/etc/modules-load.d/MODULES.conf"
+ )
+}
+
+help() {
+ cat <<HELPEOF
+This will install a basic systemd setup in your initramfs, and is meant to
+replace the 'base', 'usr', 'udev' and 'resume' hooks. Other hooks with runtime
+components will need to be ported, and will not work as intended. You also may
+wish to still include the 'base' hook (before this hook) to ensure that a
+rescue shell exists on your initramfs.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/initcpio-install-udev b/initcpio-install-udev
new file mode 100644
index 000000000000..fef6f9bb7235
--- /dev/null
+++ b/initcpio-install-udev
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+build() {
+ local rules tool
+
+ map add_binary \
+ '/usr/lib/systemd/systemd-udevd' \
+ '/usr/bin/udevadm' \
+ '/usr/bin/systemd-tmpfiles'
+
+ map add_udev_rule \
+ '50-udev-default.rules' \
+ '60-persistent-storage.rules' \
+ '64-btrfs.rules' \
+ '80-drivers.rules'
+
+ map add_file \
+ '/usr/lib/udev/ata_id' \
+ '/usr/lib/udev/scsi_id'
+
+ add_runscript
+}
+
+help() {
+ cat <<HELPEOF
+This hook adds the udev daemon to the initramfs, allowing for dynamic loading
+of modules and reliable detection of the root device via tags (e.g. UUID or
+LABEL). Do not remove this hook unless you are using the systemd hook, or you
+know what you're doing.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/keys/pgp/5C251B5FC54EB2F80F407AAAC54CA336CFEB557E.asc b/keys/pgp/5C251B5FC54EB2F80F407AAAC54CA336CFEB557E.asc
new file mode 100644
index 000000000000..4940079d4ee2
--- /dev/null
+++ b/keys/pgp/5C251B5FC54EB2F80F407AAAC54CA336CFEB557E.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+NHq9Ahd8L7JVIsbKtcoP
+=a25g
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/keys/pgp/63CDA1E5D3FC22B998D20DD6327F26951A015CC4.asc b/keys/pgp/63CDA1E5D3FC22B998D20DD6327F26951A015CC4.asc
new file mode 100644
index 000000000000..c889904eab14
--- /dev/null
+++ b/keys/pgp/63CDA1E5D3FC22B998D20DD6327F26951A015CC4.asc
@@ -0,0 +1,72 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBDjDxTgRBADILCd6h0DKdoY0bkATA20IBHAQ8axjpzVFocYco9w90jWRYj0y
+5JntFUdXB20qh/tr1+H3p7Wr/9MNJDX/k+EJ8LCbqouFItfyE1m5k2iaqlGn3MBG
+z+gbadL5x+01zZcuJmkhMa/xogs3OGvuw4QU0lRf/3VRgEvGQxh/DCQI7wCg91fQ
+X5nGmLfaEajvZk622f4cmXED/jCtmntvBwk9J8jkYDrINEeglEcF8naA/qr20AkD
+hvupalZDEL8CJVh+jKA9HcF584mQzV9BURxaWsU89sT7Jg7incdsOOSOJkCyaasO
+slt7vGKlUjHBqYCUCp336BVDOY5k2c6U52bsMvfywVAAFf4cDn3S9QHDyaYkur2R
+aqMrA/4giC+bF/K1sn4MHacr97QxEeeGNM6KG4z4QDmLeNdAANmJOLQaQFH+84Qj
+r8KyRV0zd0sioh3419AsZ/o41W4cIahovJKWyDcNwKI0tP2y3KZDVtmD26RQ/BO4
+aFEqv3Uii0Cop6j495XmSvteL7CZHLEog90hexe9ExI0xIIBs7QqTGVubmFydCBQ
+b2V0dGVyaW5nIDxsZW5uYXJ0QHBvZXR0ZXJpbmcuZGU+iF4EExECABYECwoEAwMV
+AwIDFgIBAheABQJGZKVoABIHZUdQRwABAQkQMn8mlRoBXMSoAACcCNTEt7jdZvVV
+eAYZQu5caidHZvUAnArwD7mJLWddEUK2XXWOeyOY+0WmtCtMZW5uYXJ0IFBvZXR0
+ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+iGMEExECACMCGwMGCwkIBwMC
+BBUCCAMEFgIDAQIeAQIXgAUCRmSlaQIZAQAKCRAyfyaVGgFcxNX0AKDeFj3gF+Fl
+CMgnw1JWu/fM5H8pYgCg7VRzOxtpEEiDSw37hv4eifyo7P60L0xlbm5hcnQgUG9l
+dHRlcmluZyAoTGlzYSkgPGxwb2V0dGVyaW5nQGxpc2EuZGU+iEkEMBECAAkFAk6K
+PXcCHSAACgkQMn8mlRoBXMSZNgCgjKt+QUMXVT1a2h25RkUyiiBPeAYAnRpV0f+q
+i9N55hov5qCieRGUdvVctDJMZW5uYXJ0IFBvZXR0ZXJpbmcgKFJlZCBIYXQpIDxs
+cG9ldHRlckByZWRoYXQuY29tPohgBBMRAgAgAhsDBgsJCAcDAgQVAggDBBYCAwEC
+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
+sDadOQCg30tdWRaNvasUMaTQL+fqE/pFzeI=
+=mDgC
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/keys/pgp/9A774DB5DB996C154EBBFBFDA0099A18E29326E1.asc b/keys/pgp/9A774DB5DB996C154EBBFBFDA0099A18E29326E1.asc
new file mode 100644
index 000000000000..bc801dc50de0
--- /dev/null
+++ b/keys/pgp/9A774DB5DB996C154EBBFBFDA0099A18E29326E1.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+HcRCOxTr2xTemQ==
+=+88M
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/keys/pgp/A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E.asc b/keys/pgp/A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E.asc
new file mode 100644
index 000000000000..bc71b06db318
--- /dev/null
+++ b/keys/pgp/A9EA9081724FFAE0484C35A1A81CEA22BC8C7E2E.asc
@@ -0,0 +1,241 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=OCJO
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/loader.conf b/loader.conf
new file mode 100644
index 000000000000..1f7cd7ef493d
--- /dev/null
+++ b/loader.conf
@@ -0,0 +1 @@
+default arch
diff --git a/splash-arch.bmp b/splash-arch.bmp
new file mode 100644
index 000000000000..f083d4bbf5ac
--- /dev/null
+++ b/splash-arch.bmp
Binary files differ
diff --git a/systemd-hook b/systemd-hook
new file mode 100644
index 000000000000..63f27e0bd58a
--- /dev/null
+++ b/systemd-hook
@@ -0,0 +1,78 @@
+#!/bin/sh -e
+
+is_chrooted() {
+ if systemd-detect-virt --chroot; then
+ echo >&2 " Skipped: Running in chroot."
+ exit 0
+ fi
+}
+
+systemd_live() {
+ is_chrooted
+ if [ ! -d /run/systemd/system ]; then
+ echo >&2 " Skipped: Current root is not booted."
+ exit 0
+ fi
+}
+
+udevd_live() {
+ is_chrooted
+ if [ ! -S /run/udev/control ]; then
+ echo >&2 " Skipped: Device manager is not running."
+ exit 0
+ fi
+}
+
+op="$1"; shift
+
+case "$op" in
+ catalog)
+ /usr/bin/journalctl --update-catalog
+ ;;
+ hwdb)
+ /usr/bin/systemd-hwdb --usr update
+ ;;
+ update)
+ touch -c /usr
+ ;;
+ sysusers)
+ /usr/bin/systemd-sysusers
+ ;;
+ tmpfiles)
+ /usr/bin/systemd-tmpfiles --create
+ ;;
+
+ daemon-reload)
+ systemd_live
+ /usr/bin/systemctl daemon-reload
+ ;;
+ udev-reload)
+ udevd_live
+ /usr/bin/udevadm control --reload
+ if [ ! -e /etc/systemd/do-not-udevadm-trigger-on-update ]; then
+ /usr/bin/udevadm trigger -c change
+ /usr/bin/udevadm settle
+ fi
+ ;;
+ binfmt)
+ systemd_live
+ /usr/lib/systemd/systemd-binfmt
+ ;;
+ sysctl)
+ systemd_live
+ /usr/lib/systemd/systemd-sysctl
+ ;;
+
+ # For use by other packages
+ reload)
+ systemd_live
+ /usr/bin/systemctl try-reload-or-restart "$@"
+ ;;
+
+ *)
+ echo >&2 " Invalid operation '$op'"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/systemd-user.pam b/systemd-user.pam
new file mode 100644
index 000000000000..83f762696e0e
--- /dev/null
+++ b/systemd-user.pam
@@ -0,0 +1,5 @@
+# Used by systemd --user instances.
+
+account include system-login
+session required pam_loginuid.so
+session include system-login
diff --git a/systemd.install b/systemd.install
new file mode 100644
index 000000000000..536e54d1b8a8
--- /dev/null
+++ b/systemd.install
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+sd_booted() {
+ [[ -d run/systemd/system && ! -L run/systemd/system ]]
+}
+
+add_journal_acls() {
+ # ignore errors, since the filesystem might not support ACLs
+ setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx var/log/journal/ 2>/dev/null
+ :
+}
+
+post_common() {
+ systemd-sysusers
+ journalctl --update-catalog
+}
+
+_242_0_2_changes() {
+ if [[ -L var/lib/systemd/timesync ]]; then
+ rm var/lib/systemd/timesync
+ if [[ -d var/lib/private/systemd/timesync ]]; then
+ mv var/lib/{private/,}systemd/timesync
+ fi
+ fi
+}
+
+post_install() {
+ systemd-machine-id-setup
+
+ post_common "$@"
+
+ add_journal_acls
+
+ # enable some services by default, but don't track them
+ systemctl enable \
+ getty@tty1.service \
+ remote-fs.target
+
+ # group 'systemd-journal-remote' is created by systemd-sysusers
+ mkdir -m2755 var/log/journal/remote
+ chgrp systemd-journal-remote var/log/journal/remote
+}
+
+post_upgrade() {
+ post_common "$@"
+
+ if sd_booted; then
+ systemctl --system daemon-reexec
+ fi
+
+ local v upgrades=(
+ 242.0-2
+ )
+
+ for v in "${upgrades[@]}"; do
+ if [[ $(vercmp "$v" "$2") -eq 1 ]]; then
+ "_${v//[.-]/_}_changes"
+ fi
+ done
+}
+
+# vim:set ts=2 sw=2 et: