diff mbox series

[bug#51548] services: Create /run and /var/run on activation.

Message ID 9da03290-b031-fec0-11fe-a3f591b38f61@tom-fitzhenry.me.uk
State New
Headers show
Series [bug#51548] services: Create /run and /var/run on activation. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Tom Fitzhenry Nov. 1, 2021, 11:39 a.m. UTC
This is needed as part of being able to boot with just /boot, /guix and 
/var/guix, per https://issues.guix.gnu.org/51547.

Without this patch, activation-on-boot fails due to the inability to 
open /var/run/utmpx and symlink /run/current-system.

This is similar to what activation-script does with /var/log/.

* gnu/services.scm (activation-script): Create /run/ and /var/run/.
---
  gnu/services.scm | 2 ++
  1 file changed, 2 insertions(+)


                        ;; Same for 'wtmp', which is populated by 
mingetty et
@@ -630,6 +631,7 @@ (define actions
                        ;; Set up /run/current-system.  Among other 
things this
                        ;; sets up locales, which the activation snippets
                        ;; executed below may expect.
+                      (mkdir-p "/run")
                        (activate-current-system)

                        ;; Run the services' activation snippets.

Comments

Tom Fitzhenry Nov. 4, 2021, 7 a.m. UTC | #1
Having thought about this patch some more, I think it can be better done.

On 1/11/21 22:39, Tom Fitzhenry wrote:
>                         ;; thus there is no accounting at all.
> +                      (mkdir-p "/var/run")

This line will create /var/run if it doesn't exist during activation. 
This is safe, but there is already code that creates /var/run : 
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/build/install.scm?id=63c356fe13f0c7cc560a1f9aeec4926422c22137#n120 
. This runs on installation.

By adding this line, this responsibility is split across two parts of 
the code base: installation and activation. This could cause confusion.

If, as this patch intends, we want to be able to boot from just /boot, 
/gnu and /var/guix, perhaps we should move 
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/build/install.scm?id=63c356fe13f0c7cc560a1f9aeec4926422c22137#n120 
(and surrounding code) from running at install-time to running at 
activation-time.
diff mbox series

Patch

diff --git a/gnu/services.scm b/gnu/services.scm
index 1655218f2d..f60d7dc4c3 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -620,6 +620,7 @@  (define actions
                        ;; Make sure the user accounting database 
exists.  If it
                        ;; does not exist, 'setutxent' does not create 
it and
                        ;; thus there is no accounting at all.
+                      (mkdir-p "/var/run")
                        (close-port (open-file "/var/run/utmpx" "a0"))