* gnu/build/linux-initrd.scm (cache-compiled-file-name,
compile-to-cache, build-initrd): New procedures.
* gnu/system/linux-initrd.scm (expression->initrd)[builder]: Remove code
now moved above. Use 'build-initrd'.
* gnu/system/linux-initrd.scm (expression->initrd): Remove calls to
'imported-modules' and 'compiled-modules'. Use 'gexp->script' with
EXP. Add the result to TO-COPY. Make /init a symlink to that script,
and copy its closure into the "contents" directory. Add fake
/proc/self/exe symlink.
* gnu/build/linux-boot.scm (load-linux-module*): Add comment about mmap.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add "-m
256". This turns out to be needed for initrds containing things like
e2fsck and several modules; with the default of 128 MiB, loading
libahci.ko may fail with -1.
* gnu/build/linux-initrd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/system/linux-initrd.scm (expression->initrd): Use (gnu build
linux-initrd) and 'write-cpio-archive' instead of the inlined code.