From de1c158f32e1d4060daa600a62b68fe22b613424 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 22 Sep 2014 11:06:42 +0200 Subject: system: Add support for boot-time mapped devices. * gnu/build/linux-boot.scm (boot-system): Add #:pre-mount parameter and honor it. * gnu/system/linux-initrd.scm (base-initrd): Add #:mapped-devices parameter. Add 'device-mapping-commands' variable, and use it to build the #:pre-mount argument of 'boot-system'. * gnu/system.scm (mapped-device-user, operating-system-user-mapped-devices, operating-system-boot-mapped-devices): New procedures. (device-mapping-services): Use 'operating-system-user-mapped-devices' instead of 'operating-system-mapped-devices'. (operating-system-initrd-file): Call the initrd with #:mapped-devices. --- gnu/build/linux-boot.scm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'gnu/build/linux-boot.scm') diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 56042da8f6..a58232c815 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -340,13 +340,14 @@ (define* (boot-system #:key (linux-modules '()) qemu-guest-networking? volatile-root? + pre-mount (mounts '())) "This procedure is meant to be called from an initrd. Boot a system by first loading LINUX-MODULES (a list of absolute file names of '.ko' files), then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true, -mounting the file systems specified in MOUNTS, and finally booting into the -new root if any. The initrd supports kernel command-line options '--load', -'--root', and '--repl'. +calling PRE-MOUNT, mounting the file systems specified in MOUNTS, and finally +booting into the new root if any. The initrd supports kernel command-line +options '--load', '--root', and '--repl'. Mount the root file system, specified by the '--root' command-line argument, if any. @@ -403,6 +404,11 @@ (define root-fs-type (mkdir "/root/dev") (make-essential-device-nodes #:root "/root")) + (when (procedure? pre-mount) + ;; Do whatever actions are needed before mounting--e.g., installing + ;; device mappings. + (pre-mount)) + ;; Mount the specified file systems. (for-each mount-file-system (remove root-mount-point? mounts)) -- cgit v1.2.3