Toggle diff (116 lines)
diff --git a/gnu/system.scm b/gnu/system.scm
index 40e259f43..37f0e76ec 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -73,7 +73,8 @@
operating-system-hosts-file
operating-system-kernel
operating-system-kernel-file
- operating-system-kernel-arguments
+ operating-system-boot-kernel-arguments
+ operating-system-user-kernel-arguments
operating-system-initrd
operating-system-users
operating-system-groups
@@ -90,7 +91,6 @@
operating-system-activation-script
operating-system-user-accounts
operating-system-shepherd-service-names
- operating-system-user-kernel-arguments
operating-system-derivation
operating-system-profile
@@ -126,10 +126,9 @@
;;;
;;; Code:
-(define (bootable-kernel-arguments kernel-arguments system.drv root-device)
- "Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be
-booted from ROOT-DEVICE"
- (cons* (string-append "--root="
+(define (boot-kernel-arguments system.drv root-device)
+ "Kernel-arguments that allow SYSTEM.DRV to be booted from ROOT-DEVICE"
+ (list (string-append "--root="
(if (uuid? root-device)
;; Note: Always use the DCE format because that's
@@ -138,8 +137,7 @@ booted from ROOT-DEVICE"
(uuid->string (uuid-bytevector root-device) 'dce)
root-device))
#~(string-append "--system=" #$system.drv)
- #~(string-append "--load=" #$system.drv "/boot")
- kernel-arguments))
+ #~(string-append "--load=" #$system.drv "/boot")))
;; System-wide configuration.
;; TODO: Add per-field docstrings/stexi.
@@ -201,12 +199,11 @@ booted from ROOT-DEVICE"
(sudoers-file operating-system-sudoers-file ; file-like
(default %sudoers-specification)))
-(define (operating-system-kernel-arguments os system.drv root-device)
- "Return all the kernel arguments, including the ones not specified
-directly by the user."
- (bootable-kernel-arguments (operating-system-user-kernel-arguments os)
- system.drv
- root-device))
+(define* (operating-system-boot-kernel-arguments os)
+ "Kernel arguments that allow OS (only) to be booted."
+ (let* ((root-file-system (operating-system-root-file-system os))
+ (root-device (file-system-device root-file-system)))
+ #~(boot-kernel-arguments #$os root-device)))
^L
;;;
@@ -319,8 +316,7 @@ The object has its kernel-arguments extended in order to make it bootable."
(if params
(boot-parameters
(inherit params)
- (kernel-arguments (bootable-kernel-arguments kernel-arguments
- system root)))
+ (kernel-arguments (append (boot-kernel-arguments system root) kernel-arguments)))
#f)))
(define (boot-parameters->menu-entry conf)
@@ -940,9 +936,10 @@ kernel arguments for that derivation to <boot-parameters>."
(root-device root-device)
(kernel (operating-system-kernel-file os))
(kernel-arguments
- (if system.drv
- (operating-system-kernel-arguments os system.drv root-device)
- (operating-system-user-kernel-arguments os)))
+ (append (if system.drv
+ (operating-system-boot-kernel-arguments os)
+ '())
+ (operating-system-user-kernel-arguments os)))
(initrd initrd)
(bootloader-name bootloader-name)
(store-device (ensure-not-/dev (fs->boot-device store)))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 496f2ac4e..6ba76142b 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -716,7 +716,8 @@ it is mostly useful when FULL-BOOT? is true."
#:disk-image-size disk-image-size)))
(define kernel-arguments
#~(list #$@(if graphic? #~() #~("console=ttyS0"))
- #+@(operating-system-kernel-arguments os os-drv "/dev/vda1")))
+ #+@(append (operating-system-boot-kernel-arguments os)
+ (operating-system-user-kernel-arguments os))))
(define qemu-exec
#~(list (string-append #$qemu "/bin/" #$(qemu-command (%current-system)))
I get this error message:
In gnu/system.scm:
905:2 2 (_ _)
939:14 1 (_ _)
In unknown file:
0 (append #<gexp (boot-kernel-arguments #<gexp-input #<<?> ?)
ERROR: In procedure append: Wrong type argument in position 1 (expecting empty list): #<gexp (boot-kernel-arguments #<gexp-input #<<operating-system> kern...
gnu/system.scm:939 is the "append" in the middle of "operating-system-boot-parameters".
What now?