[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/06: system: Avoid using device paths in <menu-entry> device field.
From: |
Ludovic Courtès |
Subject: |
01/06: system: Avoid using device paths in <menu-entry> device field. |
Date: |
Sun, 6 Nov 2016 17:13:57 +0000 (UTC) |
civodul pushed a commit to branch master
in repository guix.
commit 3382bfe9ea199086134d90e45e3d759aefed3dcf
Author: Chris Marusich <address@hidden>
Date: Thu Nov 3 06:10:28 2016 -0700
system: Avoid using device paths in <menu-entry> device field.
This fixes a regression introduced by
1ef8b72a7f87afe7cffe52393d99e1b14e4770e1, in which we would incorrectly use
a
device path in a label-based grub root search command, e.g. 'search --label
--set /dev/sda4'.
* gnu/system.scm (grub-device): New procedure.
(operating-system-grub.cfg, operating-system-parameters-file): Use it.
(read-boot-parameters): Handle device paths correctly.
Signed-off-by: Ludovic Courtès <address@hidden>
---
gnu/system.scm | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/gnu/system.scm b/gnu/system.scm
index 259875d..ad4492d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -60,6 +60,7 @@
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
+ #:use-module (rnrs bytevectors)
#:export (operating-system
operating-system?
@@ -738,7 +739,7 @@ listed in OS. The C library expects to find it under
(label label)
;; The device where the kernel and initrd live.
- (device (file-system-device store-fs))
+ (device (grub-device store-fs))
(device-mount-point
(file-system-mount-point store-fs))
@@ -753,6 +754,14 @@ listed in OS. The C library expects to find it under
(grub-configuration-file (operating-system-bootloader os) entries
#:old-entries old-entries)))
+(define (grub-device fs)
+ "Given FS, a <file-system> object, return a value suitable for use as the
+device in a <menu-entry>."
+ (case (file-system-title fs)
+ ((uuid) (file-system-device fs))
+ ((label) (file-system-device fs))
+ (else #f)))
+
(define (operating-system-parameters-file os)
"Return a file that describes the boot parameters of OS. The primary use of
this file is the reconstruction of GRUB menu entries for old configurations."
@@ -771,10 +780,7 @@ this file is the reconstruction of GRUB menu entries for
old configurations."
#$(operating-system-kernel-arguments os))
(initrd #$initrd)
(store
- (device #$(case (file-system-title store)
- ((uuid) (file-system-device store))
- ((label) (file-system-device store))
- (else #f)))
+ (device #$(grub-device store))
(mount-point #$(file-system-mount-point store))))
#:set-load-path? #f)))
@@ -836,7 +842,11 @@ this file is the reconstruction of GRUB menu entries for
old configurations."
(('store ('device device) _ ...)
device)
(_ ;the old format
- root)))
+ ;; Root might be a device path like "/dev/sda1", which is not a
+ ;; suitable GRUB device identifier.
+ (if (string-prefix? "/" root)
+ #f
+ root))))
(store-mount-point
(match (assq 'store rest)
- branch master updated (f4dc22b -> 8074b33), Ludovic Courtès, 2016/11/06
- 01/06: system: Avoid using device paths in <menu-entry> device field.,
Ludovic Courtès <=
- 03/06: system: Rename previous-grub-entries to profile-grub-entries., Ludovic Courtès, 2016/11/06
- 04/06: system: Optionally limit the entries returned by profile-grub-entries., Ludovic Courtès, 2016/11/06
- 05/06: install: Extract procedure: install-grub-config., Ludovic Courtès, 2016/11/06
- 02/06: profiles: Extract a procedure for getting relative generation numbers., Ludovic Courtès, 2016/11/06
- 06/06: system: Add 'guix system' actions: switch-generation and roll-back., Ludovic Courtès, 2016/11/06