aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-03-03 09:33:34 +0100
committerLudovic Courtès <ludo@gnu.org>2018-03-03 09:41:21 +0100
commiteac026e5c80caae88a6cef317a46007dca343578 (patch)
treea5aa55267a87e3c53b626960a14f837539521da5
parentf850e0da8e56b8e38b0a6c49f4c0618f16c8c572 (diff)
downloadguix-eac026e5c80caae88a6cef317a46007dca343578.tar
guix-eac026e5c80caae88a6cef317a46007dca343578.tar.gz
linux-initrd: Add virtio modules to '%base-initrd-modules'.
Fixes a regression in installation tests, whereby 'guix system init' would report that virtio modules are missing for the target devices. In practice virtio modules were always available since 'base-initrd' was always called with #:virtio? #t. This commit simply moves them to '%base-initrd-modules' so that 'guix system' knows they're available. Reported by Danny Milosavljevic <dannym@scratchpost.org> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30629#112>. * gnu/system/linux-initrd.scm (default-initrd-modules): Add virtio modules. (base-initrd): Remove #:virtio? and 'virtio-modules'. * gnu/system/vm.scm (expression->derivation-in-linux-vm) (system-qemu-image, virtualized-operating-system): Remove uses of #:virtio?. * doc/guix.texi (Initial RAM Disk): Update 'base-initrd' doc.
-rw-r--r--doc/guix.texi18
-rw-r--r--gnu/system/linux-initrd.scm26
-rw-r--r--gnu/system/vm.scm9
3 files changed, 20 insertions, 33 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 70e53b3825..50438f7cb4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19893,18 +19893,18 @@ to it are lost.
@deffn {Monadic Procedure} base-initrd @var{file-systems} @
[#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@
- [#:virtio? #t] [#:extra-modules '()]
-Return a monadic derivation that builds a generic initrd. @var{file-systems} is
-a list of file systems to be mounted by the initrd like for @code{raw-initrd}.
-@var{mapped-devices}, @var{qemu-networking?} and @var{volatile-root?}
-also behaves as in @code{raw-initrd}.
+ [#:linux-modules '()]
+Return a monadic derivation that builds a generic initrd, with kernel
+modules taken from @var{linux}. @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.
-When @var{virtio?} is true, load additional modules so that the
-initrd can be used as a QEMU guest with para-virtualized I/O drivers.
+@var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}.
The initrd is automatically populated with all the kernel modules necessary
-for @var{file-systems} and for the given options. However, additional kernel
-modules can be listed in @var{extra-modules}. They will be added to the initrd, and
+for @var{file-systems} and for the given options. Additional kernel
+modules can be listed in @var{linux-modules}. They will be added to the initrd, and
loaded at boot time in the order in which they appear.
@end deffn
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 7a7592bf0a..e0cb59c009 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -280,6 +280,11 @@ FILE-SYSTEMS."
(define* (default-initrd-modules #:optional (system (%current-system)))
"Return the list of modules included in the initrd by default."
+ (define virtio-modules
+ ;; Modules for Linux para-virtualized devices, for use in QEMU guests.
+ '("virtio_pci" "virtio_balloon" "virtio_blk" "virtio_net"
+ "virtio_console"))
+
`("ahci" ;for SATA controllers
"usb-storage" "uas" ;for the installation image etc.
"usbhid" "hid-generic" "hid-apple" ;keyboards during early boot
@@ -288,7 +293,9 @@ FILE-SYSTEMS."
,@(if (string-match "^(x86_64|i[3-6]86)-" system)
'("pata_acpi" "pata_atiixp" ;for ATA controllers
"isci") ;for SAS controllers like Intel C602
- '())))
+ '())
+
+ ,@virtio-modules))
(define-syntax %base-initrd-modules
;; This more closely matches our naming convention.
@@ -301,7 +308,6 @@ FILE-SYSTEMS."
(mapped-devices '())
qemu-networking?
volatile-root?
- (virtio? #t)
(extra-modules '()) ;deprecated
(on-error 'debug))
"Return a monadic derivation that builds a generic initrd, with kernel
@@ -312,25 +318,13 @@ mappings to realize before FILE-SYSTEMS are mounted.
QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd.
-When VIRTIO? is true, load additional modules so the initrd can
-be used as a QEMU guest with the root file system on a para-virtualized block
-device.
-
The initrd is automatically populated with all the kernel modules necessary
-for FILE-SYSTEMS and for the given options. However, additional kernel
-modules can be listed in EXTRA-MODULES. They will be added to the initrd, and
+for FILE-SYSTEMS and for the given options. Additional kernel
+modules can be listed in LINUX-MODULES. They will be added to the initrd, and
loaded at boot time in the order in which they appear."
- (define virtio-modules
- ;; Modules for Linux para-virtualized devices, for use in QEMU guests.
- '("virtio_pci" "virtio_balloon" "virtio_blk" "virtio_net"
- "virtio_console"))
-
(define linux-modules*
;; Modules added to the initrd and loaded from the initrd.
`(,@linux-modules
- ,@(if (or virtio? qemu-networking?)
- virtio-modules
- '())
,@(file-system-modules file-systems)
,@(if volatile-root?
'("overlay")
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index db29fd5ce9..91ff32ce9a 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -144,7 +144,6 @@ made available under the /xchg CIFS share."
(base-initrd %linux-vm-file-systems
#:linux linux
#:linux-modules %base-initrd-modules
- #:virtio? #t
#:qemu-networking? #t))))
(define builder
@@ -513,12 +512,7 @@ of the GNU system as described by OS."
(let ((os (operating-system (inherit os)
- ;; Use an initrd with the whole QEMU shebang.
- (initrd (lambda (file-systems . rest)
- (apply (operating-system-initrd os)
- file-systems
- #:virtio? #t
- rest)))
+ ;; Assume we have an initrd with the whole QEMU shebang.
;; Force our own root file system. Refer to it by UUID so that
;; it works regardless of how the image is used ("qemu -hda",
@@ -615,7 +609,6 @@ environment with the store shared with the host. MAPPINGS is a list of
(apply (operating-system-initrd os)
file-systems
#:volatile-root? #t
- #:virtio? #t
rest)))
;; Disable swap.