summary refs log tree commit diff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-01-01 22:45:58 +0100
committerLudovic Courtès <ludo@gnu.org>2016-01-01 22:50:26 +0100
commitf453f637d5410f4d1e0b3787caa8d34b9b72d7d8 (patch)
tree20d946f09635783e3683dcb75a1c8c5b0e56e393 /gnu/system.scm
parentf8865db6a002c9b968d39d0d91524edf55e0d873 (diff)
downloadguix-f453f637d5410f4d1e0b3787caa8d34b9b72d7d8.tar.gz
system: Allow the root file system to be named by UUID.
* gnu/build/file-systems.scm (canonicalize-device-spec)[canonical-title]:
Use 'string->uuid' to check whether SPEC is a UUID.
When SPEC is a string and CANONICAL-TITLE is 'uuid, call 'string->uuid'.
* gnu/system.scm (operating-system-grub.cfg): Add 'root-device'
variable and use it for the "--root=" argument.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm6
1 files changed, 4 insertions, 2 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index acb7f15e4e..6dfcc0fe3a 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -673,12 +673,14 @@ listed in OS.  The C library expects to find it under
       ((system      (operating-system-derivation os))
        (root-fs ->  (operating-system-root-file-system os))
        (kernel ->   (operating-system-kernel os))
+       (root-device -> (if (eq? 'uuid (file-system-title root-fs))
+                           (uuid->string (file-system-device root-fs))
+                           (file-system-device root-fs)))
        (entries ->  (list (menu-entry
                            (label (kernel->grub-label kernel))
                            (linux kernel)
                            (linux-arguments
-                            (cons* (string-append "--root="
-                                                  (file-system-device root-fs))
+                            (cons* (string-append "--root=" root-device)
                                    #~(string-append "--system=" #$system)
                                    #~(string-append "--load=" #$system
                                                     "/boot")