summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-11-07 22:43:33 +0100
committerLudovic Courtès <ludo@gnu.org>2014-11-08 01:05:35 +0100
commitab11f0bed4084f19698752fa5451ea73a52400f9 (patch)
tree07d857fc35ec8182091e137f70f0c72084b85e51 /guix
parentc1941588dd7d3ca34bcf7480bdc578b7a1110160 (diff)
vm: Support 'guix system vm --full-boot'.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add #:full-boot? parameter and honor it. * guix/scripts/system.scm (system-derivation-for-action): Likewise. (perform-action): Likewise. (show-help): Document '--full-boot'. (%options): Add '--full-boot'. (guix-system): Add #:full-boot? argument in call to 'perform-action'. * doc/guix.texi (Invoking guix system): Document it.
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/system.scm18
1 files changed, 13 insertions, 5 deletions
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 056c8e6d30..7eb86c293d 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -250,7 +250,7 @@ it atomically, and then run OS's activation script."
;;;
(define* (system-derivation-for-action os action
- #:key image-size)
+ #:key image-size full-boot?)
"Return as a monadic value the derivation for OS according to ACTION."
(case action
((build init reconfigure)
@@ -258,7 +258,7 @@ it atomically, and then run OS's activation script."
((vm-image)
(system-qemu-image os #:disk-image-size image-size))
((vm)
- (system-qemu-image/shared-store-script os))
+ (system-qemu-image/shared-store-script os #:full-boot? full-boot?))
((disk-image)
(system-disk-image os #:disk-image-size image-size))))
@@ -282,14 +282,16 @@ true."
(define* (perform-action action os
#:key grub? dry-run?
use-substitutes? device target
- image-size)
+ image-size full-boot?)
"Perform ACTION for OS. GRUB? specifies whether to install GRUB; DEVICE is
the target devices for GRUB; TARGET is the target root directory; IMAGE-SIZE
is the size of the image to be built, for the 'vm-image' and 'disk-image'
-actions."
+actions. FULL-BOOT? is used for the 'vm' action; it determines whether to
+boot directly to the kernel or to the bootloader."
(mlet* %store-monad
((sys (system-derivation-for-action os action
- #:image-size image-size))
+ #:image-size image-size
+ #:full-boot? full-boot?))
(grub (package->derivation grub))
(grub.cfg (grub.cfg os))
(drvs -> (if (and grub? (memq action '(init reconfigure)))
@@ -361,6 +363,8 @@ Build the operating system declared in FILE according to ACTION.\n"))
--image-size=SIZE for 'vm-image', produce an image of SIZE"))
(display (_ "
--no-grub for 'init', do not install GRUB"))
+ (display (_ "
+ --full-boot for 'vm', make a full boot sequence"))
(newline)
(display (_ "
-h, --help display this help and exit"))
@@ -385,6 +389,9 @@ Build the operating system declared in FILE according to ACTION.\n"))
(option '("no-grub") #f #f
(lambda (opt name arg result)
(alist-delete 'install-grub? result)))
+ (option '("full-boot") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'full-boot? #t result)))
(option '(#\n "dry-run") #f #f
(lambda (opt name arg result)
(alist-cons 'dry-run? #t result)))
@@ -478,6 +485,7 @@ Build the operating system declared in FILE according to ACTION.\n"))
#:dry-run? dry?
#:use-substitutes? (assoc-ref opts 'substitutes?)
#:image-size (assoc-ref opts 'image-size)
+ #:full-boot? (assoc-ref opts 'full-boot?)
#:grub? grub?
#:target target #:device device)
#:system system))))