system: Add 'kernel-arguments' field.
* gnu/system.scm (<operating-system>)[kernel-arguments]: New field. (operating-system-grub.cfg): Honor it. (operating-system-parameters-file): Add 'kernel-arguments' to the parameters file. * guix/scripts/system.scm (previous-grub-entries)[system->grub-entry]: Read the 'kernel-arguments' field of the parameters file, when available. * gnu/system/vm.scm (system-qemu-image/shared-store-script): Use (operating-system-kernel-arguments os) in '-append'. * doc/guix.texi (operating-system Reference): Document it.
This commit is contained in:
parent
2378df558a
commit
ee2a6304f3
|
@ -4825,6 +4825,10 @@ The package object of the operating system kernel to use@footnote{Currently
|
||||||
only the Linux-libre kernel is supported. In the future, it will be
|
only the Linux-libre kernel is supported. In the future, it will be
|
||||||
possible to use the GNU@tie{}Hurd.}.
|
possible to use the GNU@tie{}Hurd.}.
|
||||||
|
|
||||||
|
@item @code{kernel-arguments} (default: @code{'()})
|
||||||
|
List of strings or gexps representing additional arguments to pass on
|
||||||
|
the kernel's command-line---e.g., @code{("console=ttyS0")}.
|
||||||
|
|
||||||
@item @code{bootloader}
|
@item @code{bootloader}
|
||||||
The system bootloader configuration object. @xref{GRUB Configuration}.
|
The system bootloader configuration object. @xref{GRUB Configuration}.
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
operating-system-host-name
|
operating-system-host-name
|
||||||
operating-system-hosts-file
|
operating-system-hosts-file
|
||||||
operating-system-kernel
|
operating-system-kernel
|
||||||
|
operating-system-kernel-arguments
|
||||||
operating-system-initrd
|
operating-system-initrd
|
||||||
operating-system-users
|
operating-system-users
|
||||||
operating-system-groups
|
operating-system-groups
|
||||||
|
@ -103,6 +104,8 @@
|
||||||
operating-system?
|
operating-system?
|
||||||
(kernel operating-system-kernel ; package
|
(kernel operating-system-kernel ; package
|
||||||
(default linux-libre))
|
(default linux-libre))
|
||||||
|
(kernel-arguments operating-system-kernel-arguments
|
||||||
|
(default '())) ; list of gexps/strings
|
||||||
(bootloader operating-system-bootloader) ; <grub-configuration>
|
(bootloader operating-system-bootloader) ; <grub-configuration>
|
||||||
|
|
||||||
(initrd operating-system-initrd ; (list fs) -> M derivation
|
(initrd operating-system-initrd ; (list fs) -> M derivation
|
||||||
|
@ -866,11 +869,12 @@ listed in OS. The C library expects to find it under
|
||||||
(label (kernel->grub-label kernel))
|
(label (kernel->grub-label kernel))
|
||||||
(linux kernel)
|
(linux kernel)
|
||||||
(linux-arguments
|
(linux-arguments
|
||||||
(list (string-append "--root="
|
(cons* (string-append "--root="
|
||||||
(file-system-device root-fs))
|
(file-system-device root-fs))
|
||||||
#~(string-append "--system=" #$system)
|
#~(string-append "--system=" #$system)
|
||||||
#~(string-append "--load=" #$system
|
#~(string-append "--load=" #$system
|
||||||
"/boot")))
|
"/boot")
|
||||||
|
(operating-system-kernel-arguments os)))
|
||||||
(initrd #~(string-append #$system "/initrd"))))))
|
(initrd #~(string-append #$system "/initrd"))))))
|
||||||
(grub-configuration-file (operating-system-bootloader os) entries
|
(grub-configuration-file (operating-system-bootloader os) entries
|
||||||
#:old-entries old-entries)))
|
#:old-entries old-entries)))
|
||||||
|
@ -887,6 +891,8 @@ this file is the reconstruction of GRUB menu entries for old configurations."
|
||||||
(label #$label)
|
(label #$label)
|
||||||
(root-device #$(file-system-device root))
|
(root-device #$(file-system-device root))
|
||||||
(kernel #$(operating-system-kernel os))
|
(kernel #$(operating-system-kernel os))
|
||||||
|
(kernel-arguments
|
||||||
|
#$(operating-system-kernel-arguments os))
|
||||||
(initrd #$initrd)))))
|
(initrd #$initrd)))))
|
||||||
|
|
||||||
(define (operating-system-derivation os)
|
(define (operating-system-derivation os)
|
||||||
|
|
|
@ -493,7 +493,8 @@ exec " #$qemu "/bin/" #$(qemu-command (%current-system))
|
||||||
#~(" -kernel " #$(operating-system-kernel os) "/bzImage \
|
#~(" -kernel " #$(operating-system-kernel os) "/bzImage \
|
||||||
-initrd " #$os-drv "/initrd \
|
-initrd " #$os-drv "/initrd \
|
||||||
-append \"" #$(if graphic? "" "console=ttyS0 ")
|
-append \"" #$(if graphic? "" "console=ttyS0 ")
|
||||||
"--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1\" "))
|
"--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1 "
|
||||||
|
(string-join (list #+@(operating-system-kernel-arguments os))) "\" "))
|
||||||
#$(common-qemu-options image
|
#$(common-qemu-options image
|
||||||
(map file-system-mapping-source
|
(map file-system-mapping-source
|
||||||
(cons %store-mapping mappings)))
|
(cons %store-mapping mappings)))
|
||||||
|
|
|
@ -249,16 +249,19 @@ it atomically, and then run OS's activation script."
|
||||||
(('boot-parameters ('version 0)
|
(('boot-parameters ('version 0)
|
||||||
('label label) ('root-device root)
|
('label label) ('root-device root)
|
||||||
('kernel linux)
|
('kernel linux)
|
||||||
_ ...)
|
rest ...)
|
||||||
(menu-entry
|
(menu-entry
|
||||||
(label (string-append label " (#"
|
(label (string-append label " (#"
|
||||||
(number->string number) ", "
|
(number->string number) ", "
|
||||||
(seconds->string time) ")"))
|
(seconds->string time) ")"))
|
||||||
(linux linux)
|
(linux linux)
|
||||||
(linux-arguments
|
(linux-arguments
|
||||||
(list (string-append "--root=" root)
|
(cons* (string-append "--root=" root)
|
||||||
#~(string-append "--system=" #$system)
|
#~(string-append "--system=" #$system)
|
||||||
#~(string-append "--load=" #$system "/boot")))
|
#~(string-append "--load=" #$system "/boot")
|
||||||
|
(match (assq 'kernel-arguments rest)
|
||||||
|
((_ args) args)
|
||||||
|
(#f '())))) ;old format
|
||||||
(initrd #~(string-append #$system "/initrd"))))
|
(initrd #~(string-append #$system "/initrd"))))
|
||||||
(_ ;unsupported format
|
(_ ;unsupported format
|
||||||
(warning (_ "unrecognized boot parameters for '~a'~%")
|
(warning (_ "unrecognized boot parameters for '~a'~%")
|
||||||
|
|
Loading…
Reference in New Issue