guix system: Add 'disk-image' action.
* guix/scripts/system.scm (show-help): Add 'disk-image'. (guix-system)[parse-options]: Support 'disk-image' action. [option-arguments]: Likewise. Handle the 'disk-image' action. * doc/guix.texi (Invoking guix system): Document 'disk-image'.
This commit is contained in:
parent
1e77fedb46
commit
fb729425dc
@ -3236,9 +3236,23 @@ Build a virtual machine that contain the operating system declared in
|
||||
The VM shares its store with the host system.
|
||||
|
||||
@item vm-image
|
||||
Return a virtual machine image of the operating system declared in
|
||||
@var{file} that stands alone. Use the @option{--image-size} option to
|
||||
specify the size of the image.
|
||||
@itemx disk-image
|
||||
Return a virtual machine or disk image of the operating system declared
|
||||
in @var{file} that stands alone. Use the @option{--image-size} option
|
||||
to specify the size of the image.
|
||||
|
||||
When using @code{vm-image}, the returned image is in qcow2 format, which
|
||||
the QEMU emulator can efficiently use.
|
||||
|
||||
When using @code{disk-image}, a raw disk image is produced; it can be
|
||||
copied as is to a USB stick, for instance. Assuming @code{/dev/sdc} is
|
||||
the device corresponding to a USB stick, one can copy the image on it
|
||||
using the following command:
|
||||
|
||||
@example
|
||||
# dd if=$(guix system disk-image my-os.scm) of=/dev/sdc
|
||||
@end example
|
||||
|
||||
@end table
|
||||
|
||||
@var{options} can contain any of the common build options provided by
|
||||
|
@ -129,6 +129,8 @@ Build the operating system declared in FILE according to ACTION.\n"))
|
||||
(display (_ "\
|
||||
- 'vm-image', build a freestanding virtual machine image\n"))
|
||||
(display (_ "\
|
||||
- 'disk-image', build a disk image, suitable for a USB stick\n"))
|
||||
(display (_ "\
|
||||
- 'init', initialize a root file system to run GNU.\n"))
|
||||
|
||||
(show-build-options-help)
|
||||
@ -191,7 +193,7 @@ Build the operating system declared in FILE according to ACTION.\n"))
|
||||
(alist-cons 'argument arg result)
|
||||
(let ((action (string->symbol arg)))
|
||||
(case action
|
||||
((build vm vm-image init)
|
||||
((build vm vm-image disk-image init)
|
||||
(alist-cons 'action action result))
|
||||
(else (leave (_ "~a: unknown action~%")
|
||||
action))))))
|
||||
@ -214,7 +216,7 @@ Build the operating system declared in FILE according to ACTION.\n"))
|
||||
action))
|
||||
|
||||
(case action
|
||||
((build vm vm-image)
|
||||
((build vm vm-image disk-image)
|
||||
(unless (= count 1)
|
||||
(fail)))
|
||||
((init)
|
||||
@ -238,7 +240,11 @@ Build the operating system declared in FILE according to ACTION.\n"))
|
||||
(system-qemu-image os
|
||||
#:disk-image-size size)))
|
||||
((vm)
|
||||
(system-qemu-image/shared-store-script os))))
|
||||
(system-qemu-image/shared-store-script os))
|
||||
((disk-image)
|
||||
(let ((size (assoc-ref opts 'image-size)))
|
||||
(system-disk-image os
|
||||
#:disk-image-size size)))))
|
||||
(store (open-connection))
|
||||
(dry? (assoc-ref opts 'dry-run?))
|
||||
(drv (run-with-store store mdrv))
|
||||
|
Loading…
Reference in New Issue
Block a user