summary refs log tree commit diff
path: root/gnu/build/linux-boot.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/build/linux-boot.scm')
-rw-r--r--gnu/build/linux-boot.scm60
1 files changed, 27 insertions, 33 deletions
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 001c52fa3d..ea1971ff9c 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -255,39 +255,33 @@ UNIONFS."
       (newline port)
       (close-port port)))
 
-  (catch #t
-    (lambda ()
-      (if volatile-root?
-          (begin
-            (mkdir-p "/real-root")
-            (mount root "/real-root" type MS_RDONLY)
-            (mkdir-p "/rw-root")
-            (mount "none" "/rw-root" "tmpfs")
-
-            ;; We want read-write /dev nodes.
-            (make-essential-device-nodes #:root "/rw-root")
-
-            ;; Make /root a union of the tmpfs and the actual root.  Use
-            ;; 'max_files' to set a high RLIMIT_NOFILE for the unionfs process
-            ;; itself.  Failing to do that, we quickly run out of file
-            ;; descriptors; see <http://bugs.gnu.org/17827>.
-            (unless (zero? (system* unionfs "-o"
-                                    "cow,allow_other,use_ino,suid,dev,max_files=65536"
-                                    "/rw-root=RW:/real-root=RO"
-                                    "/root"))
-              (error "unionfs failed"))
-
-            ;; Make sure unionfs remains alive till the end.  Because
-            ;; 'fuse_daemonize' doesn't tell the PID of the forked daemon, we
-            ;; have to resort to 'pidof' here.
-            (mark-as-not-killable (pidof unionfs)))
-          (begin
-            (check-file-system root type)
-            (mount root "/root" type))))
-    (lambda args
-      (format (current-error-port) "exception while mounting '~a': ~s~%"
-              root args)
-      (start-repl)))
+  (if volatile-root?
+      (begin
+        (mkdir-p "/real-root")
+        (mount root "/real-root" type MS_RDONLY)
+        (mkdir-p "/rw-root")
+        (mount "none" "/rw-root" "tmpfs")
+
+        ;; We want read-write /dev nodes.
+        (make-essential-device-nodes #:root "/rw-root")
+
+        ;; Make /root a union of the tmpfs and the actual root.  Use
+        ;; 'max_files' to set a high RLIMIT_NOFILE for the unionfs process
+        ;; itself.  Failing to do that, we quickly run out of file
+        ;; descriptors; see <http://bugs.gnu.org/17827>.
+        (unless (zero? (system* unionfs "-o"
+                                "cow,allow_other,use_ino,suid,dev,max_files=65536"
+                                "/rw-root=RW:/real-root=RO"
+                                "/root"))
+          (error "unionfs failed"))
+
+        ;; Make sure unionfs remains alive till the end.  Because
+        ;; 'fuse_daemonize' doesn't tell the PID of the forked daemon, we
+        ;; have to resort to 'pidof' here.
+        (mark-as-not-killable (pidof unionfs)))
+      (begin
+        (check-file-system root type)
+        (mount root "/root" type)))
 
   (copy-file "/proc/mounts" "/root/etc/mtab"))