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:
parent
f8865db6a0
commit
f453f637d5
|
@ -295,9 +295,12 @@ the following:
|
||||||
;; The realm of canonicalization.
|
;; The realm of canonicalization.
|
||||||
(if (eq? title 'any)
|
(if (eq? title 'any)
|
||||||
(if (string? spec)
|
(if (string? spec)
|
||||||
(if (string-prefix? "/" spec)
|
;; The "--root=SPEC" kernel command-line option always provides a
|
||||||
'device
|
;; string, but the string can represent a device, a UUID, or a
|
||||||
'label)
|
;; label. So check for all three.
|
||||||
|
(cond ((string-prefix? "/" spec) 'device)
|
||||||
|
((string->uuid spec) 'uuid)
|
||||||
|
(else 'label))
|
||||||
'uuid)
|
'uuid)
|
||||||
title))
|
title))
|
||||||
|
|
||||||
|
@ -323,7 +326,11 @@ the following:
|
||||||
;; Resolve the label.
|
;; Resolve the label.
|
||||||
(resolve find-partition-by-label spec identity))
|
(resolve find-partition-by-label spec identity))
|
||||||
((uuid)
|
((uuid)
|
||||||
(resolve find-partition-by-uuid spec uuid->string))
|
(resolve find-partition-by-uuid
|
||||||
|
(if (string? spec)
|
||||||
|
(string->uuid spec)
|
||||||
|
spec)
|
||||||
|
uuid->string))
|
||||||
(else
|
(else
|
||||||
(error "unknown device title" title))))
|
(error "unknown device title" title))))
|
||||||
|
|
||||||
|
|
|
@ -673,12 +673,14 @@ listed in OS. The C library expects to find it under
|
||||||
((system (operating-system-derivation os))
|
((system (operating-system-derivation os))
|
||||||
(root-fs -> (operating-system-root-file-system os))
|
(root-fs -> (operating-system-root-file-system os))
|
||||||
(kernel -> (operating-system-kernel 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
|
(entries -> (list (menu-entry
|
||||||
(label (kernel->grub-label kernel))
|
(label (kernel->grub-label kernel))
|
||||||
(linux kernel)
|
(linux kernel)
|
||||||
(linux-arguments
|
(linux-arguments
|
||||||
(cons* (string-append "--root="
|
(cons* (string-append "--root=" root-device)
|
||||||
(file-system-device root-fs))
|
|
||||||
#~(string-append "--system=" #$system)
|
#~(string-append "--system=" #$system)
|
||||||
#~(string-append "--load=" #$system
|
#~(string-append "--load=" #$system
|
||||||
"/boot")
|
"/boot")
|
||||||
|
|
Loading…
Reference in New Issue