From 64e40dbb692d537e67d1dccd727dd5c36e39a10e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Jun 2014 22:48:25 +0200 Subject: system: Store boot parameters in the system derivation. * gnu/system.scm (operating-system-parameters-file): New procedure. (operating-system-derivation): Use it to produce a 'parameters' files. --- gnu/system.scm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gnu/system.scm b/gnu/system.scm index e1337da749..12d9f5fe02 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -511,6 +511,20 @@ we're running in the final root." (initrd #~(string-append #$system "/initrd")))))) (grub-configuration-file (operating-system-bootloader os) entries))) +(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." + (mlet %store-monad ((initrd (operating-system-initrd-file os)) + (root -> (operating-system-root-file-system os)) + (label -> (kernel->grub-label + (operating-system-kernel os)))) + (gexp->file "parameters" + #~(boot-parameters (version 0) + (label #$label) + (root-device #$(file-system-device root)) + (kernel #$(operating-system-kernel os)) + (initrd #$initrd))))) + (define (operating-system-derivation os) "Return a derivation that builds OS." (mlet* %store-monad @@ -518,10 +532,12 @@ we're running in the final root." (etc (operating-system-etc-directory os)) (boot (operating-system-boot-script os)) (kernel -> (operating-system-kernel os)) - (initrd (operating-system-initrd-file os))) + (initrd (operating-system-initrd-file os)) + (params (operating-system-parameters-file os))) (file-union "system" `(("boot" ,#~#$boot) ("kernel" ,#~#$kernel) + ("parameters" ,#~#$params) ("initrd" ,initrd) ("profile" ,#~#$profile) ("etc" ,#~#$etc))))) -- cgit v1.2.3