diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-09-21 22:30:59 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-09-21 22:30:59 +0200 |
commit | db4e8fd5d4a07d3be8ce68fb96722ef7077c0eee (patch) | |
tree | 6376f7c744e71b089bdea3bc78d7e151acdc034d /gnu | |
parent | e2a95f8b16674ae2965bf155b6d28ca5942abb03 (diff) | |
download | guix-db4e8fd5d4a07d3be8ce68fb96722ef7077c0eee.tar guix-db4e8fd5d4a07d3be8ce68fb96722ef7077c0eee.tar.gz |
system: <boot-parameters> does not use "/dev" device names.
Fixes <https://bugs.gnu.org/28445>.
Reported by Mark H Weaver and Roel Janssen.
* gnu/system.scm (read-boot-parameters)[ensure-not-/dev]: New procedure.
Use it.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/system.scm | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index b6c087a031..8ab4801b74 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -243,6 +243,11 @@ directly by the user." ((? string? device) device))) + (define (ensure-not-/dev device) + (if (and (string? device) (string-prefix? "/" device)) + #f + device)) + (match (read port) (('boot-parameters ('version 0) ('label label) ('root-device root) @@ -277,17 +282,16 @@ directly by the user." file))) (store-device - (match (assq 'store rest) - (('store ('device #f) _ ...) - root-device) - (('store ('device device) _ ...) - (device-sexp->device device)) - (_ ;the old format - ;; Root might be a device path like "/dev/sda1", which is not a - ;; suitable GRUB device identifier. - (if (string-prefix? "/" root) - #f - root)))) + ;; Linux device names like "/dev/sda1" are not suitable GRUB device + ;; identifiers, so we just filter them out. + (ensure-not-/dev + (match (assq 'store rest) + (('store ('device #f) _ ...) + root-device) + (('store ('device device) _ ...) + (device-sexp->device device)) + (_ ;the old format + root-device)))) (store-mount-point (match (assq 'store rest) |