summaryrefslogtreecommitdiff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2017-04-21 14:37:09 +0200
committerDanny Milosavljevic <dannym@scratchpost.org>2017-05-05 15:03:47 +0200
commit9530e73b496fefe65dcb936825b6beda79f7fdf2 (patch)
tree096b31fa11ea968b9b3d6cca0a30deaa5e8a0443 /gnu/system.scm
parent33f0aa88155ee0718f21e7de24eb539cb9872217 (diff)
system: Introduce read-boot-parameters-file.
* gnu/system.scm (read-boot-parameters): Remove export. (read-boot-parameters-file): New variable. Export it. * guix/scripts/system.scm (profile-boot-parameters): Use read-boot-parameters-file. (profile-grub-entries): Use read-boot-parameters-file. (reinstall-grub): Use read-boot-parameters-file. (display-system-generation): Use read-boot-parameters-file.
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm22
1 files changed, 21 insertions, 1 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index 37a05b270b..f213379f03 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -109,7 +109,7 @@
boot-parameters-kernel
boot-parameters-kernel-arguments
boot-parameters-initrd
- read-boot-parameters
+ read-boot-parameters-file
local-host-aliases
%setuid-programs
@@ -907,4 +907,24 @@ being stored into the \"parameters\" file)."
system)
#f)))
+(define (read-boot-parameters-file system)
+ "Read boot parameters from SYSTEM's (system or generation) \"parameters\"
+file and returns the corresponding <boot-parameters> object or #f if the
+format is unrecognized.
+The object has its kernel-arguments extended in order to make it bootable."
+ (let* ((file (string-append system "/parameters"))
+ (params (call-with-input-file file read-boot-parameters))
+ (root (boot-parameters-root-device params))
+ (root-device (if (bytevector? root)
+ (uuid->string root)
+ root))
+ (kernel-arguments (boot-parameters-kernel-arguments params)))
+ (if params
+ (boot-parameters
+ (inherit params)
+ (kernel-arguments (bootable-kernel-arguments kernel-arguments
+ system
+ root-device)))
+ #f)))
+
;;; system.scm ends here