~ruther/guix-local

0d275f4aa3d1457658fa754e6a0c07fbcc4b88af — Andy Wingo 11 years ago 59446b2
system: Take kernel modules from the user-specified kernel.

* gnu/system/linux-initrd.scm (base-initrd): Add #:linux option to
  specify the linux kernel to use.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Propagate
  #:linux to base-initrd.
* gnu/system.scm (operating-system-initrd-file): Pass #:linux to
  'make-initrd'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
3 files changed, 9 insertions(+), 6 deletions(-)

M gnu/system.scm
M gnu/system/linux-initrd.scm
M gnu/system/vm.scm
M gnu/system.scm => gnu/system.scm +1 -0
@@ 737,6 737,7 @@ we're running in the final root."
    (operating-system-initrd os))

  (mlet %store-monad ((initrd (make-initrd boot-file-systems
                                           #:linux (operating-system-kernel os)
                                           #:mapped-devices mapped-devices)))
    (return #~(string-append #$initrd "/initrd"))))


M gnu/system/linux-initrd.scm => gnu/system/linux-initrd.scm +7 -6
@@ 143,16 143,17 @@ initrd code."

(define* (base-initrd file-systems
                      #:key
                      (linux linux-libre)
                      (mapped-devices '())
                      qemu-networking?
                      virtio?
                      volatile-root?
                      (extra-modules '()))
  "Return a monadic derivation that builds a generic initrd.  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 '--root'.
MAPPED-DEVICES is a list of device mappings to realize before FILE-SYSTEMS are
mounted.
  "Return a monadic derivation that builds a generic initrd, with kernel
modules taken from LINUX.  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 '--root'.  MAPPED-DEVICES is a list of device
mappings to realize before FILE-SYSTEMS are mounted.

When QEMU-NETWORKING? is true, set up networking with the standard QEMU
parameters.  When VIRTIO? is true, load additional modules so the initrd can


@@ 224,7 225,7 @@ loaded at boot time in the order in which they appear."
             (open source target)))
         mapped-devices))

  (mlet %store-monad ((kodir (flat-linux-module-directory linux-libre
  (mlet %store-monad ((kodir (flat-linux-module-directory linux
                                                          linux-modules)))
    (expression->initrd
     #~(begin

M gnu/system/vm.scm => gnu/system/vm.scm +1 -0
@@ 149,6 149,7 @@ made available under the /xchg CIFS share."
       (initrd       (if initrd                   ; use the default initrd?
                         (return initrd)
                         (base-initrd %linux-vm-file-systems
                                      #:linux linux
                                      #:virtio? #t
                                      #:qemu-networking? #t))))