~ruther/guix-local

52ac153e2a83035ce2bc875f9c414cb26db5f6fc — Ludovic Courtès 11 years ago 8591fae
linux-initrd: Adjust VM code and doc to new 'base-initrd' signature.

This fixes regressions introduced in de1c158 ("system: Add support for
boot-time mapped devices.").

* doc/guix.texi (Initial RAM Disk): Adjust example with custom use of
  'base-initrd'.  Document #:mapped-devices parameter of 'base-initrd'.
* gnu/system/vm.scm (system-disk-image, system-qemu-image,
  virtualized-operating-system): Adjust call to 'base-initrd' to new
  signature.
2 files changed, 26 insertions(+), 19 deletions(-)

M doc/guix.texi
M gnu/system/vm.scm
M doc/guix.texi => doc/guix.texi +10 -9
@@ 3649,23 3649,24 @@ at boot time, you can define the @code{initrd} field of the operating
system declaration like this:

@example
(initrd (cut base-initrd <>
             #:extra-modules '("my.ko" "modules.ko")))
(initrd (lambda (file-systems . rest)
          (apply base-initrd file-systems
                 #:extra-modules '("my.ko" "modules.ko")
                 rest)))
@end example

@noindent
Note that for the example above, the SRFI-26 module needs to be imported
(@pxref{SRFI-26,,, guile, GNU Guile Reference Manual}).

It also handles common use cases that involves using the system as a
QEMU guest, or as a ``live'' system whose root file system is volatile.
The @code{base-initrd} procedure also handles common use cases that
involves using the system as a QEMU guest, or as a ``live'' system whose
root file system is volatile.

@deffn {Monadic Procedure} base-initrd @var{file-systems} @
       [#:qemu-networking? #f] [#:virtio? #f] [#:volatile-root? #f] @
       [#:extra-modules '()]
       [#:extra-modules '()] [#:mapped-devices '()]
Return a monadic derivation that builds a generic initrd.  @var{file-systems} is
a list of file-systems to be mounted by the initrd, possibly in addition to
the root file system specified on the kernel command line via @code{--root}.
@var{mapped-devices} is a list of device mappings to realize before
@var{file-systems} are mounted (@pxref{Mapped Devices}).

When @var{qemu-networking?} is true, set up networking with the standard QEMU
parameters.  When @var{virtio?} is true, load additional modules so the initrd can

M gnu/system/vm.scm => gnu/system/vm.scm +16 -10
@@ 289,9 289,11 @@ to USB sticks meant to be read-only."
              ;; Since this is meant to be used on real hardware, don't
              ;; install QEMU networking or anything like that, but make sure
              ;; USB mass storage devices are available.
              (initrd (cut base-initrd <>
                           #:volatile-root? #t
                           #:extra-modules '("usb-storage.ko")))
              (initrd (lambda (file-systems . rest)
                        (apply base-initrd file-systems
                               #:volatile-root? #t
                               #:extra-modules '("usb-storage.ko")
                               rest)))

              ;; Force our own root file system.
              (file-systems (cons (file-system


@@ 333,9 335,11 @@ of the GNU system as described by OS."

  (let ((os (operating-system (inherit os)
              ;; Use an initrd with the whole QEMU shebang.
              (initrd (cut base-initrd <>
                           #:virtio? #t
                           #:qemu-networking? #t))
              (initrd (lambda (file-systems . rest)
                        (apply base-initrd file-systems
                               #:virtio? #t
                               #:qemu-networking? #t
                               rest)))

              ;; Force our own root file system.
              (file-systems (cons (file-system


@@ 358,10 362,12 @@ of the GNU system as described by OS."
  "Return an operating system based on OS suitable for use in a virtualized
environment with the store shared with the host."
  (operating-system (inherit os)
    (initrd (cut base-initrd <>
                 #:volatile-root? #t
                 #:virtio? #t
                 #:qemu-networking? #t))
    (initrd (lambda (file-systems . rest)
              (apply base-initrd file-systems
                     #:volatile-root? #t
                     #:virtio? #t
                     #:qemu-networking? #t
                     rest)))
    (file-systems (cons* (file-system
                           (mount-point "/")
                           (device "/dev/vda1")