linux-initrd: Rewrite using gexps.
* gnu/system/linux-initrd.scm (expression->initrd): Rename 'inputs'
parameter to 'to-copy'. Remove 'files-to-copy'. Rewrite 'builder' as
a gexp, and use 'gexp->derivation'.
(qemu-initrd): Adjust accordingly.
linux-initrd: Mount / as a unionfs when asking for a volatile root.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
/dev/fuse.
(boot-system): Add #:unionfs parameter. Invoke UNIONFS instead of
copying files over when VOLATILE-ROOT? is true.
* gnu/system/linux-initrd.scm (expression->initrd): Add #:inputs
parameter.
[files-to-copy]: New procedure.
[builder]: Add 'to-copy' parameter; honor it.
(qemu-initrd)[linux-modules]: Add 'fuse.ko' when VOLATILE-ROOT?.
Pass UNIONFS-FUSE/STATIC as #:inputs; change builder to pass #:unionfs
to 'boot-system'.
gnu: linux-initrd: Default initrd has no network mounts.
* gnu/system/linux-initrd.scm (gnu-system-initrd): Add #:mounts
argument.
Merge branch 'master' into core-updates
Conflicts:
gnu-system.am
gnu: linux-initrd: Allow the root file system to be volatile.
* gnu/system/linux-initrd.scm (qemu-initrd): Add 'volatile-root?'
parameter.
* guix/build/linux-initrd.scm (boot-system): Likewise. Honor it.
gnu: linux-initrd: Recognize 9p file systems.
* gnu/system/linux-initrd.scm (qemu-initrd)[virtio-9p-modules]: New
variable.
[linux-modules]: Append VIRTIO-9P-MODULES when a 9p file system is in
MOUNTS.
* guix/build/linux-initrd.scm (mount-qemu-9p): New procedure.
(boot-system): Recognize '9p' in MOUNTS, and use 'mount-qemu-9p'.
gnu: linux-initrd: Match kernel module file names exactly.
* gnu/system/linux-initrd.scm (expression->initrd)[string->regexp]: New
procedure. Use it in the call to 'find-files'.
gnu: linux-initrd: Factorize boot code.
* guix/build/linux-initrd.scm (boot-system): New procedure.
* gnu/system/linux-initrd.scm (qemu-initrd): Add keyword parameters
'guile-modules-in-chroot?' and 'mounts'. Change builder to simply
call 'boot-system'.
(gnu-system-initrd): Change to a simple call to 'qemu-initrd'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Call
'qemu-initrd' with #:guile-modules-in-chroot?.
gnu: Lower initrd makers from packages to monadic procedures.
* gnu/packages/linux-initrd.scm: Remove.
* gnu/system/linux-initrd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/system.scm (<operating-system>): Change default 'initrd' value
to (gnu-system-initrd).
(operating-system-derivation): Bind 'operating-system-initrd'. Pass
'menu-entry' an initrd file name instead of a package.
* gnu/system/grub.scm (grub-configuration-file): Expect 'initrd' to be
file name.
gnu: qemu-initrd: Adjust to allow booting with a non-empty /root.
* gnu/packages/linux-initrd.scm (qemu-initrd): Use 'mkdir-p' instead of
'mkdir' for /root/xchg and /root/{share,lib}. When TO-LOAD is a
symlink, resolve it.
(gnu-system-initrd): Fix typo in message.
Merge branch 'master' into core-updates
Remove weirdnesses caused by 'letrec*' behavior of record field initializers.
* gnu/packages/bootstrap.scm (package-from-tarball): Remove '*' from
parameter names. Adjust accordingly.
* gnu/packages/linux-initrd.scm (expression->initrd): Use 'name'
directly, removing the 'name*' alias.
* gnu/packages/linux.scm (linux-libre-headers, linux-libre): Rename
'version*' to 'version'.
gnu: linux-initrd: Mount /tmp as a tmpfs.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): Make sure /root/tmp
exists; mount it as a tmpfs.
Merge branch 'master' into core-updates
gnu: linux-initrd: Fix typo.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): Add missing
argument to 'format' call.
Merge branch 'master' into core-updates
gnu: vm: First stab at building a populated QEMU image.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): New variable.
* gnu/system/vm.scm (qemu-image): Add #:linux-arguments parameter.
[input->name+derivation]: Add case for 'store-path?' items.
Remove LOADER from `inputs'.
gnu: vm: 'qemu-image' populates /dev on the target root file system.
* gnu/system/vm.scm (qemu-image): Use (guix build linux-initrd). Remove
'mknod' calls; use 'make-essential-device-nodes' to populate /dev on
the target image.
* gnu/packages/linux-initrd.scm (qemu-initrd): When /root/dev exists,
don't call 'make-essential-device-nodes'.
gnu: linux-initrd: Factorize device node creation.
* guix/build/linux-initrd.scm (make-essential-device-nodes): New
procedure.
* gnu/packages/linux-initrd.scm (qemu-initrd): Use it.
gnu: linux-initrd: Make device nodes for QEMU's hard disk.
* gnu/packages/linux-initrd.scm (qemu-initrd): Make /dev/vda*.