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.
This commit is contained in:
Ludovic Courtès 2016-01-01 22:45:58 +01:00
parent f8865db6a0
commit f453f637d5
2 changed files with 15 additions and 6 deletions

View file

@ -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")