diff options
-rw-r--r-- | doc/guix.texi | 19 | ||||
-rw-r--r-- | gnu/system/vm.scm | 26 |
2 files changed, 26 insertions, 19 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 9630ae1c58..51884c3c6f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index fa4ae78077..799ab51d41 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -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") |