--- /dev/null
+From: Colin Walters <walters@verbum.org>
+Date: Tue, 24 Oct 2023 10:40:51 -0400
+Subject: bootloader/zipl: No-op if run as non-root
+
+Not the most elegant fix but should get the job done.
+
+Bug: https://github.com/ostreedev/ostree/issues/3084
+Origin: upstream, 2023.8, commit:75c7e51a8bedb5edeadb9f54e84ccfff2adcc755
+---
+ src/libostree/ostree-bootloader-zipl.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/libostree/ostree-bootloader-zipl.c b/src/libostree/ostree-bootloader-zipl.c
+index c0a2a14..4579a89 100644
+--- a/src/libostree/ostree-bootloader-zipl.c
++++ b/src/libostree/ostree-bootloader-zipl.c
+@@ -381,6 +381,12 @@ _ostree_bootloader_zipl_post_bls_sync (OstreeBootloader *bootloader, int bootver
+ {
+ OstreeBootloaderZipl *self = OSTREE_BOOTLOADER_ZIPL (bootloader);
+
++ // This can happen in a unit testing environment; at some point what we want to do here
++ // is move all of the zipl logic to a systemd unit instead that's keyed of
++ // ostree-finalize-staged.service.
++ if (getuid () != 0)
++ return TRUE;
++
+ /* Note that unlike the grub2-mkconfig backend, we make no attempt to
+ * chroot().
+ */