all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#73494] [PATCH 0/2] tmpfs /run.
@ 2024-09-26  6:44 Hilton Chain via Guix-patches via
  2024-09-26  7:05 ` [bug#73494] [PATCH 1/2] file-systems: %base-file-systems: Add " Hilton Chain via Guix-patches via
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Hilton Chain via Guix-patches via @ 2024-09-26  6:44 UTC (permalink / raw)
  To: 73494; +Cc: Hilton Chain

Hi Guix,

This series adds a tmpfs /run to %base-file-systems and symlinks /var/run to
it.

Mount options are taken from Systemd[1], OpenRC also uses the same ones[2].
(Except no-suid since we have /run/privileged/bin.)

Thanks

[1]: https://github.com/systemd/systemd/blob/v256.6/src/shared/mount-setup.c#L102
[2]: https://github.com/OpenRC/openrc/blob/0.55.1/sh/init.sh.Linux.in#L74

Hilton Chain (2):
  file-systems: %base-file-systems: Add tmpfs /run.
  services: cleanup: Make /var/run a symlink of /run.

 doc/guix.texi               |  5 +++++
 gnu/services.scm            |  6 +-----
 gnu/services/dbus.scm       | 31 -------------------------------
 gnu/system/file-systems.scm | 15 ++++++++++++++-
 4 files changed, 20 insertions(+), 37 deletions(-)


base-commit: 8576aaf5f90db9b385ea8cf6dc98bf3c062959dc
--
2.46.0




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#73494] [PATCH 1/2] file-systems: %base-file-systems: Add tmpfs /run.
  2024-09-26  6:44 [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
@ 2024-09-26  7:05 ` Hilton Chain via Guix-patches via
  2024-09-26  7:05 ` [bug#73494] [PATCH 2/2] services: cleanup: Make /var/run a symlink of /run Hilton Chain via Guix-patches via
  2024-09-29  3:18 ` [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
  2 siblings, 0 replies; 4+ messages in thread
From: Hilton Chain via Guix-patches via @ 2024-09-26  7:05 UTC (permalink / raw)
  To: 73494; +Cc: Hilton Chain, Florian Pelz, Ludovic Courtès, Maxim Cournoyer

* gnu/system/file-systems (%runtime-variable-data): New variable.
(%base-file-systems): Add it.
* doc/guix.texi (File Systems): Document it.
* gnu/services.scm (cleanup-gexp): Adjust accordingly.

Change-Id: I3a95e49d396fbb2577026aefc247cfe996c5f267
---
 doc/guix.texi               |  5 +++++
 gnu/services.scm            |  5 +----
 gnu/system/file-systems.scm | 15 ++++++++++++++-
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 52e36e4354..54edd14d1b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17988,6 +17988,11 @@ File Systems
 read-write in its own ``name space.''
 @end defvar
 
+@defvar %runtime-variable-data
+This file system is mounted as @file{/run} and contains system
+information data describing the system since it was booted.
+@end defvar
+
 @defvar %binary-format-file-system
 The @code{binfmt_misc} file system, which allows handling of arbitrary
 executable file types to be delegated to user space.  This requires the
diff --git a/gnu/services.scm b/gnu/services.scm
index 8a4002e072..ea855ad193 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -632,7 +632,7 @@ (define (cleanup-gexp _)
     #~(begin
         (use-modules (guix build utils))
 
-        ;; Clean out /tmp, /var/run, and /run.
+        ;; Clean out /tmp and /var/run.
         ;;
         ;; XXX This needs to happen before service activations, so it
         ;; has to be here, but this also implicitly assumes that /tmp
@@ -663,15 +663,12 @@ (define (cleanup-gexp _)
            (setlocale LC_CTYPE "en_US.utf8")
            (delete-file-recursively "/tmp")
            (delete-file-recursively "/var/run")
-           (delete-file-recursively "/run")
 
            ;; Note: The second argument to 'mkdir' is and'ed with umask,
            ;; hence the 'chmod' calls.
            (mkdir "/tmp" #o1777)
            (chmod "/tmp" #o1777)
            (mkdir "/var/run" #o755)
-           (chmod "/var/run" #o755)
-           (mkdir "/run" #o755)
            (chmod "/var/run" #o755))))))
 
 (define cleanup-service-type
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 4ea8237c70..65704d7681 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -82,6 +82,7 @@ (define-module (gnu system file-systems)
             %pseudo-terminal-file-system
             %tty-gid
             %immutable-store
+            %runtime-variable-data
             %control-groups
             %elogind-file-systems
 
@@ -448,6 +449,17 @@ (define %immutable-store
     (check? #f)
     (flags '(read-only bind-mount no-atime))))
 
+(define %runtime-variable-data
+  (file-system
+    (type "tmpfs")
+    (mount-point "/run")
+    (device "tmpfs")
+    (flags '(no-dev strict-atime))
+    (options "mode=0755,nr_inodes=800k,size=20%")
+    (needed-for-boot? #t)
+    (check? #f)
+    (create-mount-point? #t)))
+
 (define %control-groups
   ;; The cgroup2 file system.
   (list (file-system
@@ -497,7 +509,8 @@ (define %base-file-systems
         %debug-file-system
         %shared-memory-file-system
         %efivars-file-system
-        %immutable-store))
+        %immutable-store
+        %runtime-variable-data))
 
 (define %base-live-file-systems
   ;; This is the bare minimum to use live file-systems.

base-commit: 8576aaf5f90db9b385ea8cf6dc98bf3c062959dc
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#73494] [PATCH 2/2] services: cleanup: Make /var/run a symlink of /run.
  2024-09-26  6:44 [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
  2024-09-26  7:05 ` [bug#73494] [PATCH 1/2] file-systems: %base-file-systems: Add " Hilton Chain via Guix-patches via
@ 2024-09-26  7:05 ` Hilton Chain via Guix-patches via
  2024-09-29  3:18 ` [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
  2 siblings, 0 replies; 4+ messages in thread
From: Hilton Chain via Guix-patches via @ 2024-09-26  7:05 UTC (permalink / raw)
  To: 73494; +Cc: Hilton Chain

* gnu/services.scm (cleanup-gexp): Make /var/run a symlink of /run.
* gnu/services/dbus.scm (dbus-activation): Adjust accordingly.

Change-Id: I7b94d3e2fe1bef66f435e84bc77f32311dddd0ce
---
 gnu/services.scm      |  3 +--
 gnu/services/dbus.scm | 31 -------------------------------
 2 files changed, 1 insertion(+), 33 deletions(-)

diff --git a/gnu/services.scm b/gnu/services.scm
index ea855ad193..50af5f56b6 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -668,8 +668,7 @@ (define (cleanup-gexp _)
            ;; hence the 'chmod' calls.
            (mkdir "/tmp" #o1777)
            (chmod "/tmp" #o1777)
-           (mkdir "/var/run" #o755)
-           (chmod "/var/run" #o755))))))
+           (symlink "/run" "/var/run"))))))
 
 (define cleanup-service-type
   ;; Service that cleans things up in /tmp and similar.
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 76e04bf221..9292172e01 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -190,37 +190,6 @@ (define (dbus-activation config)
           ;; world-readable.
           (mkdir-p/perms "/run/dbus" user #o755))
 
-        (catch 'system-error
-          (lambda ()
-            (symlink "/run/dbus" "/var/run/dbus"))
-          (lambda args
-            (let ((errno (system-error-errno args)))
-              (cond
-               ((= errno EEXIST)
-                (let ((existing-name
-                       (false-if-exception
-                        (readlink "/var/run/dbus"))))
-                  (unless (equal? existing-name "/run/dbus")
-                    ;; Move the content of /var/run/dbus to /run/dbus, and
-                    ;; retry.
-                    (let ((dir (opendir "/var/run/dbus")))
-                      (let loop ((next (readdir dir)))
-                        (cond
-                         ((eof-object? next) (closedir dir))
-                         ((member next '("." "..")) (loop (readdir dir)))
-                         (else
-                          (begin
-                            (rename-file (string-append "/var/run/dbus/" next)
-                                         (string-append "/run/dbus/" next))
-                            (loop (readdir dir)))))))
-                    (rmdir "/var/run/dbus")
-                    (symlink "/run/dbus" "/var/run/dbus"))))
-               (else
-                (format (current-error-port)
-                        "Failed to symlink /run/dbus to /var/run/dbus: ~s~%"
-                        (strerror errno))
-                (error "cannot create /var/run/dbus"))))))
-
         (unless (file-exists? "/etc/machine-id")
           (format #t "creating /etc/machine-id...~%")
           (invoke (string-append #$(dbus-configuration-dbus config)
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#73494] [PATCH 0/2] tmpfs /run.
  2024-09-26  6:44 [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
  2024-09-26  7:05 ` [bug#73494] [PATCH 1/2] file-systems: %base-file-systems: Add " Hilton Chain via Guix-patches via
  2024-09-26  7:05 ` [bug#73494] [PATCH 2/2] services: cleanup: Make /var/run a symlink of /run Hilton Chain via Guix-patches via
@ 2024-09-29  3:18 ` Hilton Chain via Guix-patches via
  2 siblings, 0 replies; 4+ messages in thread
From: Hilton Chain via Guix-patches via @ 2024-09-29  3:18 UTC (permalink / raw)
  To: 73494

On Thu, 26 Sep 2024 14:44:52 +0800,
Hilton Chain wrote:
>
> Hi Guix,
>
> This series adds a tmpfs /run to %base-file-systems and symlinks /var/run to
> it.
>
> Mount options are taken from Systemd[1], OpenRC also uses the same ones[2].
> (Except no-suid since we have /run/privileged/bin.)
>
> Thanks
>
> [1]: https://github.com/systemd/systemd/blob/v256.6/src/shared/mount-setup.c#L102
> [2]: https://github.com/OpenRC/openrc/blob/0.55.1/sh/init.sh.Linux.in#L74
>
> Hilton Chain (2):
>   file-systems: %base-file-systems: Add tmpfs /run.
>   services: cleanup: Make /var/run a symlink of /run.
>
>  doc/guix.texi               |  5 +++++
>  gnu/services.scm            |  6 +-----
>  gnu/services/dbus.scm       | 31 -------------------------------
>  gnu/system/file-systems.scm | 15 ++++++++++++++-
>  4 files changed, 20 insertions(+), 37 deletions(-)
>
>
> base-commit: 8576aaf5f90db9b385ea8cf6dc98bf3c062959dc
> --
> 2.46.0

As adding mount point to /run requires an immediate reboot after reconfiguring
from a system without it, I'll also add a news entry for the change.

Merging /var/run and /run is the easiest part, since they are supposed to be
cleaned upon booting and nothing will break with the change.  However there're
many references to both directories in our codebase.  I'm not sure if these
references should be unified as well.

I won't hurry on pushing this change, please leave a comment if you want the
change or there's any concern about it.


Thanks




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-09-29  3:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-26  6:44 [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via
2024-09-26  7:05 ` [bug#73494] [PATCH 1/2] file-systems: %base-file-systems: Add " Hilton Chain via Guix-patches via
2024-09-26  7:05 ` [bug#73494] [PATCH 2/2] services: cleanup: Make /var/run a symlink of /run Hilton Chain via Guix-patches via
2024-09-29  3:18 ` [bug#73494] [PATCH 0/2] tmpfs /run Hilton Chain via Guix-patches via

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.