In NixOS, /etc is NOT read-only, and most things in /etc are symlinks to /etc/static, which is a symlink into the nix store - so the upstream systemd "/etc is read-only" detection doesn't work. Fixes #224080.
34 lines
1.3 KiB
Diff
34 lines
1.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: oxalica <oxalicc@pm.me>
|
|
Date: Tue, 4 Oct 2022 09:18:07 +0800
|
|
Subject: [PATCH] core: don't taint on unmerged /usr
|
|
|
|
NixOS has very different approach towards /bin and /sbin - they don't
|
|
really exist (except for /bin/sh and /usr/bin/env, because these are used
|
|
heavily in shebangs around the world). The concept of merged or unmerged
|
|
usr doesn't really apply here at all, it's neither of the two.
|
|
Users don't execute things from /bin or /sbin, there's nothing else in
|
|
there. In all cases, systemd doesn't look things up from /usr/bin or /bin,
|
|
so showing the taint isn't really helpful.
|
|
|
|
See also: https://github.com/systemd/systemd/issues/24191
|
|
---
|
|
src/core/manager.c | 4 ----
|
|
1 file changed, 4 deletions(-)
|
|
|
|
diff --git a/src/core/manager.c b/src/core/manager.c
|
|
index 3f31359f8a..0c4ec0b4fb 100644
|
|
--- a/src/core/manager.c
|
|
+++ b/src/core/manager.c
|
|
@@ -4556,10 +4556,6 @@ char* manager_taint_string(const Manager *m) {
|
|
if (m->taint_usr)
|
|
stage[n++] = "split-usr";
|
|
|
|
- _cleanup_free_ char *usrbin = NULL;
|
|
- if (readlink_malloc("/bin", &usrbin) < 0 || !PATH_IN_SET(usrbin, "usr/bin", "/usr/bin"))
|
|
- stage[n++] = "unmerged-usr";
|
|
-
|
|
if (access("/proc/cgroups", F_OK) < 0)
|
|
stage[n++] = "cgroups-missing";
|
|
|