~ruther/guix-local

ee2a6304f3bcf19df895310aedff372ed7e17c34 — Ludovic Courtès 10 years ago 2378df5
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.
4 files changed, 24 insertions(+), 10 deletions(-)

M doc/guix.texi
M gnu/system.scm
M gnu/system/vm.scm
M guix/scripts/system.scm
M doc/guix.texi => doc/guix.texi +4 -0
@@ 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
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}
The system bootloader configuration object.  @xref{GRUB Configuration}.


M gnu/system.scm => gnu/system.scm +11 -5
@@ 68,6 68,7 @@
            operating-system-host-name
            operating-system-hosts-file
            operating-system-kernel
            operating-system-kernel-arguments
            operating-system-initrd
            operating-system-users
            operating-system-groups


@@ 103,6 104,8 @@
  operating-system?
  (kernel operating-system-kernel                 ; package
          (default linux-libre))
  (kernel-arguments operating-system-kernel-arguments
                    (default '()))                ; list of gexps/strings
  (bootloader operating-system-bootloader)        ; <grub-configuration>

  (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))
                           (linux kernel)
                           (linux-arguments
                            (list (string-append "--root="
                                                 (file-system-device root-fs))
                                  #~(string-append "--system=" #$system)
                                  #~(string-append "--load=" #$system
                                                   "/boot")))
                            (cons* (string-append "--root="
                                                  (file-system-device root-fs))
                                   #~(string-append "--system=" #$system)
                                   #~(string-append "--load=" #$system
                                                    "/boot")
                                   (operating-system-kernel-arguments os)))
                           (initrd #~(string-append #$system "/initrd"))))))
    (grub-configuration-file (operating-system-bootloader os) entries
                             #:old-entries old-entries)))


@@ 887,6 891,8 @@ this file is the reconstruction of GRUB menu entries for old configurations."
                                   (label #$label)
                                   (root-device #$(file-system-device root))
                                   (kernel #$(operating-system-kernel os))
                                   (kernel-arguments
                                    #$(operating-system-kernel-arguments os))
                                   (initrd #$initrd)))))

(define (operating-system-derivation os)

M gnu/system/vm.scm => gnu/system/vm.scm +2 -1
@@ 493,7 493,8 @@ exec " #$qemu "/bin/" #$(qemu-command (%current-system))
       #~(" -kernel " #$(operating-system-kernel os) "/bzImage \
            -initrd " #$os-drv "/initrd \
            -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
                       (map file-system-mapping-source
                            (cons %store-mapping mappings)))

M guix/scripts/system.scm => guix/scripts/system.scm +7 -4
@@ 249,16 249,19 @@ it atomically, and then run OS's activation script."
           (('boot-parameters ('version 0)
                              ('label label) ('root-device root)
                              ('kernel linux)
                              _ ...)
                              rest ...)
            (menu-entry
             (label (string-append label " (#"
                                   (number->string number) ", "
                                   (seconds->string time) ")"))
             (linux linux)
             (linux-arguments
              (list (string-append "--root=" root)
                    #~(string-append "--system=" #$system)
                    #~(string-append "--load=" #$system "/boot")))
              (cons* (string-append "--root=" root)
                     #~(string-append "--system=" #$system)
                     #~(string-append "--load=" #$system "/boot")
                     (match (assq 'kernel-arguments rest)
                       ((_ args) args)
                       (#f       '()))))          ;old format
             (initrd #~(string-append #$system "/initrd"))))
           (_                                     ;unsupported format
            (warning (_ "unrecognized boot parameters for '~a'~%")