summary refs log tree commit diff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-02-24 23:54:29 -0500
committerMark H Weaver <mhw@netris.org>2015-04-10 09:22:49 -0400
commit5e738ac224c7aea948773e89235dc1418bff448e (patch)
tree14b340562dbbbad8cac35a1f292e83b199fb622f /gnu/system.scm
parent1b922590d758e458ce4f9abd3d1694045bcccb58 (diff)
downloadguix-5e738ac224c7aea948773e89235dc1418bff448e.tar.gz
system: Clean /tmp and /var/run during early boot.
* gnu/system.scm (operating-system-boot-script): Clean out /tmp and
  /var/run before activating the system.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm15
1 files changed, 15 insertions, 0 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index ece61adb2b..a91c7136da 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -695,6 +696,20 @@ we're running in the final root."
                        (dmd-conf (dmd-configuration-file services)))
     (gexp->file "boot"
                 #~(begin
+                    (use-modules (guix build utils))
+
+                    ;; 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 and /var/run are on the root partition.
+                    (false-if-exception (delete-file-recursively "/tmp"))
+                    (false-if-exception (delete-file-recursively "/var/run"))
+                    (false-if-exception (mkdir "/tmp"))
+                    (false-if-exception (chmod "/tmp" #o1777))
+                    (false-if-exception (mkdir "/var/run"))
+                    (false-if-exception (chmod "/var/run" #o755))
+
                     ;; Activate the system.
                     ;; TODO: Use 'load-compiled'.
                     (primitive-load #$activate)