aboutsummaryrefslogtreecommitdiff
path: root/gnu/system/vm.scm
Commit message (Collapse)AuthorAge
* bootloader: extlinux: Stop using dd binary.Mathieu Othacehe2017-12-04
| | | | | | | | * gnu/bootloader/extlinux.scm (dd): Remove it, (install-extlinux): replace dd call by Guile I/O procedures. * gnu/system/vm.scm (qemu-image): Add (ice-9 binary-ports) to used-modules list to provide "get-bytevector-n" and "put-bytevector". * guix/scripts/system.scm (bootloader-installer-derivation): Ditto.
* system: vm: Fix typo in comment.Mathieu Othacehe2017-12-02
| | | | * gnu/system/vm.scm (qemu-image): Fix typo targetting -> targeting.
* system: vm: Do not add EFI partition on ARM system.Mathieu Othacehe2017-12-01
| | | | | | | | * gnu/system/vm.scm (qemu-img): Do not add EFI partition if we are targetting ARM. UEFI support on u-boot is still experimental, so do not add EFI partition on ARM for now.
* vm: Filter out file systems that refer to UUIDs or labels.Ludovic Courtès2017-11-30
| | | | | * gnu/system/vm.scm (virtualized-operating-system)[user-file-systems]: Filter out things that refer to file system UUIDs or labels.
* vm: Use os-defined initrd intead of base-initrd.Mathieu Othacehe2017-11-26
| | | | | | | | | * gnu/system/vm.scm (system-disk-image, system-qemu-image, virtualized-operating-system): Replace base-initrd by (operating-system-initrd os). The system produced were always using base-initrd even if the user had defined a custom initrd based on raw-initrd in the os declaration.
* system: vm: Use 2^32 - 1 as hash size.Mathieu Othacehe2017-11-06
| | | | | | | | * gnu/system/vm.scm (operating-system-uuid): Use 2^32 - 1 instead of 2^32 as hash size. On some 32 bit system (ARM for example), 2^32 exceeds hash max size (ULONG_MAX = 2^32 - 1).
* vm: Always use GRUB/i386.Ludovic Courtès2017-10-19
| | | | | | | | Fixes <https://bugs.gnu.org/28768>. Reported by Oleg Pykhalov <go.wigust@gmail.com>. * gnu/system/vm.scm (virtualized-operating-system): Override the 'bootloader' field.
* vm: Add disk-image-size to <virtual-machine>.Christopher Baines2017-10-04
| | | | | | * gnu/system/vm.scm (<virtual-machine>): Add disk-image-size. (port-forwardings->qemu-options): Use disk-image-size from <virtual-machine>.
* vm: Add a minimum root size.Christopher Baines2017-10-04
| | | | | | * gnu/system/vm.scm (qemu-image): When guessing the root-size, use a lower bound of 20 MiB, otherwise the root file system size is sometimes 0 MiB in size.
* vm: Generate a UUID to identify the root file system.Ludovic Courtès2017-09-11
| | | | | | | | | This makes collisions less likely than when using a label to look up the partition. See <https://bugs.gnu.org/27735>. * gnu/system/vm.scm (operating-system-uuid): New procedure. (system-disk-image): Define 'root-uuid' and use it for the root file system. Pass it to 'iso9660-image' and 'qemu-image'.
* vm: Allow users to specify a UUID for the root partition.Ludovic Courtès2017-09-11
| | | | | * gnu/system/vm.scm (qemu-image): Add #:file-system-uuid parameter; pass it as the 'uuid' field of the root partition.
* system: Introduce a disjoint UUID type.Ludovic Courtès2017-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conceptually a UUID is just a bytevector. However, there's software out there such as GRUB that relies on the string representation of different UUID types (e.g., the string representation of DCE UUIDs differs from that of ISO-9660 UUIDs, even if they are actually bytevectors of the same length). This new <uuid> record type allows us to preserve information about the type of UUID so we can eventually convert it to a string using the right representation. * gnu/system/uuid.scm (<uuid>): New record type. (bytevector->uuid): New procedure. (uuid): Return calls to 'make-uuid'. (uuid->string): Rewrite using 'match-lambda*' to accept a single 'uuid?' argument. * gnu/bootloader/grub.scm (grub-root-search): Check for 'uuid?' instead of 'bytevector?'. * gnu/system.scm (bootable-kernel-arguments): Check whether ROOT-DEVICE is 'uuid?'. (read-boot-parameters): Use 'bytevector->uuid' when the store device is a bytevector. (read-boot-parameters-file): Check for 'uuid?' instead of 'bytevector?'. (device->sexp): New procedure. (operating-system-boot-parameters-file): Use it for 'root-device' and 'store'. (operating-system-bootcfg): Remove conditional in definition of 'root-device'. * gnu/system/file-systems.scm (file-system->spec): Check for 'uuid?' on DEVICE and take its bytevector. * gnu/system/mapped-devices.scm (open-luks-device): Likewise. * gnu/system/vm.scm (iso9660-image): Call 'uuid-bytevector' for the #:volume-uuid argument.
* vm: Call iso9660-image with #:register-closures? as #t.Christopher Baines2017-09-06
| | | | | * gnu/system/vm.scm (system-disk-image): Call iso9660-image with #:register-closures? as #t.
* vm: Add support for registering closures to iso9660-image.Christopher Baines2017-09-06
| | | | * gnu/system/vm.scm (iso9660-image): Add support for registering closures.
* vm: Remove redundant conditional in system-disk-image.Christopher Baines2017-09-04
| | | | | * gnu/system/vm.scm (system-disk-image): Remove redundant conditional for #:file-system-type when calling qemu-image.
* vm: Use grub-hybrid's grub-mkrescue.Danny Milosavljevic2017-08-03
| | | | | * gnu/system/vm.scm (system-disk-image): Use grub-hybrid's grub-mkrescue. * gnu/bootlader/grub.scm (grub-mkrescue-bootloader): New variable.
* vm: Add a <virtual-machine> type and associated gexp compiler.Ludovic Courtès2017-07-20
| | | | | | | | | * gnu/system/vm.scm (system-qemu-image/shared-store-script): Add #:options parameter and honor it. (<virtual-machine>): New record type. (virtual-machine): New macro. (port-forwardings->qemu-options, virtual-machine-compiler): New procedures.
* vm: 'iso9660-image' produces a single-file output.Ludovic Courtès2017-07-18
| | | | | | | | | * gnu/system/vm.scm (expression->derivation-in-linux-vm): Add #:single-file-output? and pass it to 'load-in-linux-vm'. (iso9660-image): Pass #:single-file-output? to 'expression->derivation-in-linux-vm'. * gnu/build/vm.scm (load-in-linux-vm): Add #:single-file-output? and honor it.
* build, vm: Use a less common label.Tobias Geerinckx-Rice2017-07-17
| | | | | | * gnu/build/vm.scm (initialize-hard-disk): Use "GuixSD_image" as label. * gnu/system/install.scm (installation-os): Likewise. * gnu/system/vm.scm (system-disk-image): Likewise.
* gnu: Rename (gnu packages qemu) to (gnu packages virtualization).宋文武2017-07-15
| | | | | | | | | * gnu/packages/qemu.scm: Rename this ... * gnu/packages/virtualization.scm: ... to this. * gnu/local.mk (GNU_SYSTEM_MODULES), gnu/packages/bootloaders.scm, gnu/packages/debug.scm, gnu/packages/gnome.scm, gnu/system/vm.scm, gnu/tests/install.scm: Adjust accordingly.
* build, vm: Use "GuixSD" or "GUIXSD" as volume label.Danny Milosavljevic2017-07-10
| | | | | | | | | * gnu/build/vm.scm (initialize-hard-disk): Use "GuixSD" as label. * gnu/system/install.scm (installation-os): Use "GuixSD" as label. * gnu/system/vm.scm (system-disk-image): Use "GuixSD" or "GUIXSD" as volume label. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* guix system: Add file system label and uuid to iso9660-image.Danny Milosavljevic2017-07-07
| | | | | | * gnu/system/vm.scm (system-disk-image): Pass root-label to ... (iso9660-image): ... here. Add keyword arguments #:file-system-label and #:file-system-uuid.
* build: Add iso9660 system image generator.Danny Milosavljevic2017-07-03
| | | | | | | * build-aux/hydra/gnu-system.scm (qemu-jobs): Add 'iso9660-image . * gnu/build/vm.scm (make-iso9660-image): New variable. Export it. * gnu/system/vm.scm (iso9660-image): New variable. Use make-iso9660-image. (system-disk-image): Use iso9660-image.
* vm: Estimate the disk size by default.Ludovic Courtès2017-06-30
| | | | | | | | | | | | | | | * gnu/build/vm.scm (estimated-partition-size): New procedure. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Change #:disk-image-size default to 'guess. [builder]: When DISK-IMAGE-SIZE is 'guess, use 'estimated-partition-size' and compute and estimate of the image size. (qemu-image): Likewise. * guix/build/store-copy.scm (file-size, closure-size): New procedures. * guix/scripts/system.scm (%default-options): Change 'image-size' to 'guess. * doc/guix.texi (Building the Installation Image): Remove '--image-size' flag from example. (Invoking guix system): Document the image size estimate.
* tests: Allow setting of qemu memory-size for system tests.Jan Nieuwenhuizen2017-06-16
| | | | | * gnu/system/vm.scm (common-qemu-options): Remove hardcoded "-m 256". (system-qemu-image/shared-store-script): New keyword argument: #:memory-size.
* vm: Increase default disk size to account for ESP partition.Marius Bakke2017-05-21
| | | | | | Fixes a test regression introduced by ecf5d5376979fadd971559367bf553df89fcc62b. * gnu/system/vm.scm (system-qemu-image/shared-store-script): 30MiB -> 70MiB.
* vm: Add UEFI loader to disk images.Marius Bakke2017-05-19
| | | | | | * gnu/build/vm.scm (install-efi): New procedure. (initialize-hard-disk): Generate EFI blob when ESP is present. * gnu/system/vm.scm (qemu-image): Append 40MiB EFI System Partition.
* vm: Support creating FAT partitions.Marius Bakke2017-05-19
| | | | | | | * gnu/build/vm.scm (create-ext-file-system, create-fat-file-system): New procedures. (format-partition): Use them. Error for unknown file systems. * gnu/system/vm.scm (qemu-image): Include DOSFSTOOLS. * gnu/system/linux-initrd.scm (base-initrd): Always add nls_is8859-1.ko.
* vm: Support arbitrary partition flags.Marius Bakke2017-05-19
| | | | | | | * gnu/build/vm.scm (<partition>): Change BOOTABLE? to FLAGS. (initialize-partition-table): Pass each flag to parted. (initialize-hard-disk): Locate boot partition. * gnu/system/vm.scm (qemu-image): Adjust partition flags.
* bootloader: Adapt vm to new bootloader API.Mathieu Othacehe2017-05-16
| | | | | | | | | | | | * gnu/build/install.scm (install-boot-config): New procedure. (install-grub): Move to (gnu bootloader grub). * gnu/build/vm.scm (register-bootcfg-root): Rename register-grub.cfg-root and adjust accordingly. (initialize-hard-disk): Takes a bootloader-package, bootcfg, bootcfg-location and bootloader-installer procedure. Adjust accordingly. * gnu/system/vm.scm (qemu-image): Adjust to initialize-hard-disk. (system-disk-image, system-qemu-image, system-qemu-image/shared-store): Adjust to qemu-image.
* bootloader: Add extlinux support.Mathieu Othacehe2017-05-16
| | | | | | | | | | | | | | | * gnu/bootloader.scm: New file. * gnu/bootloader/extlinux.scm: New file. * gnu/bootloader/grub.scm: New file. * gnu/local.mk: Build new files. * gnu/system.scm: Adapt to new bootloader api. * gnu/scripts/system.scm: Adapt to new bootloader api. * gnu.scm: Remove (gnu system grub) and replace by (gnu bootloader) and (gnu bootloader grub) modules. * gnu/system/grub.scm: Moved content to gnu/bootloader/grub.scm. * gnu/system/vm: Replace (gnu system grub) module by (gnu bootloader). * gnu/tests.scm: Ditto. * gnu/tests/nfs.scm: Ditto.
* system: vm: Use operating-system-kernel-arguments.Danny Milosavljevic2017-05-05
| | | | | * gnu/system/vm.scm (system-qemu-image/shared-store-script): Use operating-system-kernel-arguments.
* system: Rename operating-system-kernel-arguments to ↵Danny Milosavljevic2017-04-22
| | | | | | | | | | | | operating-system-user-kernel-arguments. * gnu/system.scm (operating-system-kernel-arguments): Rename to ... (operating-system-user-kernel-arguments): ... this. (<operating-system>): Adapt accordingly. (operating-system-bootcfg): Adapt accordingly. (operating-system-parameters-file): Adapt accordingly. * gnu/system/vm.scm (system-qemu-image/shared-store-script): Adapt accordingly.
* vm: Reword grub.cfg to bootcfg.Mathieu Othacehe2017-04-15
| | | | | | | | | | * gnu/build/vm.scm (register-grub.cfg-root): Reword grub.cfg to bootcfg, (initialize-hard-disk): ditto, * gnu/system/vm.scm (system-disk-image): ditto, (system-qemu-image): ditto, (system-qemu-image/shared-store): ditto. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
* system: Rename operating-system-grub.cfg to operating-system-bootcfg.Mathieu Othacehe2017-04-15
| | | | | | | | | | | * gnu/system.scm (operating-system-grub.cfg): Rename to... (operating-system-bootcfg): ... this. * gnu/system/vm.scm (system-disk-image): Use operating-system-bootcfg. (system-qemu-image): Use operating-system-bootcfg. (system-qemu-image/shared-store): Use operating-system-bootcfg. * guix/scripts/system.scm (perform-action): Use operating-system-bootcfg. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
* vm: Fix full-boot? option.David Craven2017-03-06
| | | | | | | | | * gnu/system/vm.scm (virtualized-operating-system): Add full-boot? option. Don't add a %store-mapping when full-boot? is passed. This leads the grub-configuration-file procedure to look for the kernel and initrd in / instead of /gnu/store. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* vm: Improve readability of run-vm.sh generation.David Craven2017-03-01
| | | | | * gnu/system/vm.scm (common-qemu-options, system-qemu-image/shared-store-script): Improve readability.
* vm: Remove hard coded kernel file name.David Craven2017-02-28
| | | | | | | * gnu/system/vm.scm (system-qemu-image/shared-store-script, expression->derivation-in-linux-vm): Use operating-system-kernel-file and system-linux-image-file-name. * gnu/system.scm (system-linux-image-file-name): Add ARM.
* gnu: Move (gnu packages grub) and (gnu packages u-boot) ...David Craven2017-02-10
| | | | | | | | | | | | to (gnu packages bootloaders). * gnu/packages/grub.scm: Rename to bootloaders.scm. * gnu/packages/u-boot.scm: Move to bootloaders.scm. * gnu/local.mk (GNU_SYSTEM_MODULES): Add bootloaders.scm, remove grub.scm and u-boot.scm; * gnu/system/grub.scm: Import (gnu packages bootloaders). * gnu/system/install.scm: Import (gnu packages bootloaders). * gnu/system/vm.scm: Import (gnu packages bootloaders).
* vm: Disable initrd-time QEMU networking for VM images.Ludovic Courtès2016-11-19
| | | | | | | | | Fixes <http://bugs.gnu.org/24943>. Reported by dian_cecht@zoho.com. * gnu/system/vm.scm (system-qemu-image)[initrd]: Remove #:qemu-networking? #t. (virtualized-operating-system): Likewise
* system: vm: Remove -net user flag.David Craven2016-09-06
| | | | * gnu/system/vm.scm (common-qemu-options): Remove -net user flag.
* system: Use 'source-module-closure' where needed.Ludovic Courtès2016-09-05
| | | | | | | | | | * gnu/system/vm.scm (%vm-module-closure): Remove. (expression->derivation-in-linux-vm): Use 'source-module-closure' instead of %VM-MODULE-CLOSURE. (qemu-image): Likewise. * gnu/system/linux-initrd.scm (expression->initrd): Likewise. (flat-linux-module-directory, base-initrd): Likewise. * gnu/system/mapped-devices.scm (open-luks-device): Likewise.
* gnu: Use 'gexp->file' in conjunction with 'with-imported-modules'.Ludovic Courtès2016-07-12
| | | | | | | | | | | * gnu/services.scm (activation-script): Remove code to set '%load-path' and use 'with-imported-modules' instead. (cleanup-gexp): Likewise. * gnu/system/vm.scm (%vm-module-closure): New variable. (expression->derivation-in-linux-vm): Remove #:modules. [loader]: Remove code to set '%load-path'. [builder]: Use %VM-MODULE-CLOSURE. (qemu-image): Use 'with-imported-modules'.
* gnu: Switch to 'with-imported-modules'.Ludovic Courtès2016-07-12
| | | | | | | | | | | | | | | | | | | | | | | | * gnu/services.scm (directory-union): Use 'with-imported-modules' instead of the '#:modules' argument of 'computed-file'. * gnu/services/base.scm (udev-rules-union): Likewise. * gnu/services/dbus.scm (system-service-directory): Likewise. * gnu/services/desktop.scm (wrapped-dbus-service): (polkit-directory): Likewise. * gnu/services/networking.scm (tor-configuration->torrc): Likewise. * gnu/services/xorg.scm (xorg-configuration-directory): Likewise. * gnu/system/install.scm (self-contained-tarball): Likewise. * gnu/system/linux-container.scm (container-script): Likewise. * gnu/system/linux-initrd.scm (expression->initrd): Likewise, and remove #:modules parameter. (flat-linux-module-directory): Use 'with-imported-modules'. (base-initrd): Likewise. * gnu/system/locale.scm (locale-directory): Likewise. * gnu/system/shadow.scm (default-skeletons): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise. * gnu/tests/base.scm (run-basic-test): Likewise. * gnu/tests/install.scm (run-install): Likewise. * doc/guix.texi (Initial RAM Disk): Update 'expression->initrd' documentation.
* tests: Add whole-system test.Ludovic Courtès2016-05-04
| | | | | | | * gnu/system/vm.scm (virtualized-operating-system): Export. * gnu/tests/base.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * Makefile.am (check-system): New target.
* Add (gnu tests) and (gnu build marionette).Ludovic Courtès2016-05-04
| | | | | | * gnu/build/marionette.scm, gnu/tests.scm: New files. * gnu/local.mk (GNU_SYSTEM_MODULES): Add them. * gnu/system/vm.scm (common-qemu-options): Remove '-serial stdio'.
* guix system: Reduce size of image produced for 'vm' action.Ludovic Courtès2016-04-29
| | | | | | | | | | | This reduces the size of the image produced by 'guix system vm' from 26 MiB to 9 MiB. * gnu/system/vm.scm (system-qemu-image/shared-store): (system-qemu-image/shared-store-script): Change the default value of #:disk-image-size to 30 MiB when not FULL-BOOT?. * guix/scripts/system.scm (system-derivation-for-action): Likewise for the 'vm' action.
* vm: Only pass "-enable-kvm" to qemu if /dev/kvm is present.Christopher Allan Webber2016-02-22
| | | | | | | | Fixes <http://bugs.gnu.org/22633>. * gnu/build/vm.scm (load-in-linux-vm): Only pass "-enable-kvm" flag to qemu if "/dev/kvm" is present. * gnu/system/vm.scm (common-kvm-options): Same as above.
* file-systems: Spawn a Bournish REPL upon fsck failure.Ludovic Courtès2016-02-08
| | | | | | | | | | | | | Fixes <http://bugs.gnu.org/22588>. Reported by Mark H Weaver <mhw@netris.org>. * gnu/build/file-systems.scm (check-file-system): Pass %BOURNISH-LANGUAGE as the argument to 'start-repl'. * gnu/services.scm (activation-script): Add (guix build bournish). * gnu/services/base.scm (file-system-shepherd-service)[imported-modules]: Likewise. * gnu/system/linux-container.scm (container-script): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.
* system: Allow the root file system to have a UUID.Ludovic Courtès2016-01-01
| | | | | | | | | This is a followup to ab64483. * gnu/system.scm (mapped-device-user): Check whether the title of FS is 'device before calling 'string=?'. * gnu/system/vm.scm (virtualized-operating-system)[user-file-systems]: Likewise.