aboutsummaryrefslogtreecommitdiff
path: root/gnu/system/vm.scm
Commit message (Collapse)AuthorAge
* system: vm: Support cross-compilation.Mathieu Othacehe2019-12-01
| | | | | | | | | | | | | | * gnu/system.scm (system-linux-image-file-name): Add support for cross-built systems. Remove system argument that was ignored, (operating-system-kernel-file): adapt by removing ignored os argument. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Add target argument and turn inputs into native-inputs. Pass target to qemu-command and gexp->derivation calls. (iso9660-image): Add target argument and pass it to expression->derivation-in-linux-vm. Remove qemu from inputs as it is not necessary. (qemu-image): Add target argument, also remove qemu from inputs. Pass target argument to expression->derivation-in-linux-vm call.
* system: vm: Add arm64 support.Mathieu Othacehe2019-11-22
| | | | | | | | * gnu/build/vm.scm (load-in-linux-vm): Add target-arm64? argument and use it to pass correct arguments to qemu. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass the new target-arm64? argument added above. Do not add ESP partition on all ARM targets. Do not pass grub-efi package to initialize-hard-disk on ARM targets.
* vm: Honor the VOLATILE? parameter when producing a system disk image.Maxim Cournoyer2019-11-18
| | | | | | | * gnu/system/vm.scm (system-disk-image): Honor the VOLATILE? parameter instead of hard coding its value to #t. Reported-by: Jelle Licht <jlicht@fsfe.org>
* maint: Switch to Guile-JSON 3.x.Ludovic Courtès2019-07-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on until now: it maps JSON dictionaries to alists (instead of hash tables), and JSON arrays to vectors (instead of lists). This commit is about adjusting all the existing code to this new mapping. * m4/guix.m4 (GUIX_CHECK_GUILE_JSON): New macro. * configure.ac: Use it. * doc/guix.texi (Requirements): Mention the Guile-JSON version. * guix/git-download.scm (git-fetch)[guile-json]: Use GUILE-JSON-3. * guix/import/cpan.scm (string->license): Expect vectors instead of lists. (module->dist-name): Use 'json-fetch' instead of 'json-fetch-alist'. (cpan-fetch): Likewise. * guix/import/crate.scm (crate-fetch): Likewise, and call 'vector->list' for DEPS. * guix/import/gem.scm (rubygems-fetch): Likewise. * guix/import/json.scm (json-fetch-alist): Remove. * guix/import/pypi.scm (pypi-fetch): Use 'json-fetch' instead of 'json-fetch-alist'. (latest-source-release, latest-wheel-release): Call 'vector->list' on RELEASES. * guix/import/stackage.scm (stackage-lts-info-fetch): Use 'json-fetch' instead of 'json-fetch-alist'. (lts-package-version): Use 'vector->list'. * guix/import/utils.scm (hash-table->alist): Remove. (alist->package): Pass 'vector->list' on the inputs fields, and default to the empty vector. * guix/scripts/import/json.scm (guix-import-json): Remove call to 'hash-table->alist'. * guix/swh.scm (define-json-reader): Expect pair? or null? instead of hash-table?. [extract-field]: Use 'assoc-ref' instead of 'hash-ref'. (json->branches): Use 'map' instead of 'hash-map->list'. (json->checksums): Likewise. (json->directory-entries, origin-visits): Call 'vector->list' on the result of 'json->scm'. * tests/import-utils.scm ("alist->package with dependencies"): New test. * gnu/installer.scm (build-compiled-file)[builder]: Use GUILE-JSON-3. * gnu/installer.scm (installer-program)[installer-builder]: Likewise. * gnu/installer/locale.scm (iso639->iso639-languages): Use 'assoc-ref' instead of 'hash-ref', and pass vectors through 'vector->list'. (iso3166->iso3166-territories): Likewise. * gnu/system/vm.scm (system-docker-image)[build]: Use GUILE-JSON-3. * guix/docker.scm (manifest, config): Adjust for Guile-JSON 3. * guix/scripts/pack.scm (docker-image)[build]: Use GUILE-JSON-3. * guix/import/github.scm (fetch-releases-or-tags): Update docstring. (latest-released-version): Use 'assoc-ref' instead of 'hash-ref'. Pass the result of 'fetch-releases-or-tags' to 'vector->list'. * guix/import/launchpad.scm (latest-released-version): Likewise.
* vm: 'system-docker-image' builds in a UTF-8 locale.Ludovic Courtès2019-06-17
| | | | | | | | | | Fixes <https://bugs.gnu.org/36215>. Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>. This is a followup to 9c941364bfc0120e3ab5c5c4cc71a9a302d59a2b. * gnu/system/vm.scm (system-docker-image)[build]: Set GUIX_LOCPATH and call 'setlocale'.
* vm: Create installation media with MBR and HFS only, no GPT.Danny Milosavljevic2019-05-18
| | | | | | | | | | | | | | | * gnu/build/vm.scm (make-iso9660-image): Accept XORRISO, GRUB-MKRESCUE-ENVIRONMENT. * gnu/system/vm.scm (iso9660-image): Pass XORRISO; accept GRUB-MKRESCUE-ENVIRONMENT. (system-disk-image): Pass GRUB-MKRESCUE-ENVIRONMENT. * gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch: New file. * gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/cdrom.scm (xorriso)[source]: Add patches. [arguments]<#:phases>[install-frontends]: Add phase.
* vm: 'system-docker-image' provides an entry point.Ludovic Courtès2019-05-15
| | | | | | | | | | | | | This simplifies use of images created with 'guix system docker-image'. * gnu/system/vm.scm (system-docker-image)[boot-program]: New variable. [os]: Add it to the GC roots. [build]: Pass #:entry-point to 'build-docker-image'. * gnu/tests/docker.scm (run-docker-system-test): New procedure. (%test-docker-system): New variable. * doc/guix.texi (Invoking guix system): Remove GUIX_NEW_SYSTEM hack and '--entrypoint' from the example. Mention 'docker create', 'docker start', and 'docker exec'.
* vm: Auto-detect if inputs should be registered.Maxim Cournoyer2019-05-13
| | | | | | | | | | | | | | | | | | | | | The default value of the argument REGISTER-CLOSURE? of the ISO9660-IMAGE, QEMU-IMAGE and SYSTEM-DOCKER-IMAGE procedures can be computed automatically, since the operating-system definition is available in its context. When the operating-system definition does not contain the GUIX-SERVICE-TYPE, do not register the closure in the database of Guix, as it takes time and doesn't serve a purpose. * gnu/system/vm.scm (has-guix-service-type): Add predicate. (iso9660-image)[register-closures?]: Use it to compute the argument's default value. (qemu-image)[register-closures?]: Likewise, and update docstring. (system-docker-image)[register-closures?]: Likewise. (system-disk-image): Do not explicit a value for the REGISTER-CLOSURES? argument of the ISO9660-IMAGE and QEMU-IMAGE procedure calls, so that its default value is used instead. * guix/scripts/system.scm (system-derivation-for-action): Do not explicit a value for the REGISTER-CLOSURES? argument of the SYSTEM-DOCKER-IMAGE procedure call, so that its default value is used instead.
* vm: Build ISOs and VM images in a UTF-8 environment.Ludovic Courtès2019-05-01
| | | | | | | | Fixes a bug whereby building an image containing non-ASCII file names would fail due to improper decoding of file names. * gnu/system/vm.scm (iso9660-image, qemu-image): Set GUIX_LOCPATH and call 'setlocale' in the build environment.
* vm: 'system-disk-image' no longer requires the OS to define the "/" file system.Ludovic Courtès2019-04-25
| | | | | | | | | | Previously 'guix system disk-image' would fail if the OS didn't define a "/" file system, even though it actually overrides that file system. * gnu/system/vm.scm (system-disk-image)[root-uuid]: Turn into a procedure. Call 'root-uuid' on a variant of OS with a "/" file system and inherit from that.
* vm: Do not mount /xchg with "cache=loose".Ludovic Courtès2019-04-14
| | | | | | | | Fixes <https://bugs.gnu.org/33639>. * gnu/system/vm.scm (%linux-vm-file-systems): Remove "cache=loose" for /xchg. (system-docker-image): Remove 'sync' call, now unneeded, and which was probably insufficient.
* vm: Ask QEMU for more RAM in the VM that makes ISO9660 images.Ludovic Courtès2019-03-27
| | | | | * gnu/system/vm.scm (iso9660-image): Pass #:memory-size to 'expression->derivation-in-linux-vm'.
* system: Add 'essential-services' field to <operating-system>.Ludovic Courtès2019-03-25
| | | | | | | | | | | | | | | | | | * gnu/system.scm (<operating-system>)[essential-services]: New field. (operating-system-directory-base-entries): Remove #:container? keyword and keep only the not-container branch. (essential-services): Likewise. (operating-system-services): Likewise, and call 'operating-system-essential-services' instead of 'essential-services'. (operating-system-activation-script): Remove #:container?. (operating-system-boot-script): Likewise. (operating-system-derivation): Likewise. * gnu/system/linux-container.scm (container-essential-services): New procedure. (containerized-operating-system): Use it and set the 'essential-services' field. (container-script): Remove call to 'operating-system-derivation'. * gnu/system/vm.scm (system-docker-image): Likewise. * doc/guix.texi (operating-system Reference): Document 'essential-services'.
* vm: 'virtualized-operating-system' inherits from the user's bootloader config.Ludovic Courtès2019-03-24
| | | | | * gnu/system/vm.scm (virtualized-operating-system): Inherit from the bootloader of OS.
* vm: 'system-docker-image' calls 'sync' before rebooting.Ludovic Courtès2019-03-22
| | | | | | Previously we could end up silently building truncated tarballs. * gnu/system/vm.scm (system-docker-image)[build]: Add call to 'sync'.
* vm: 'expression->derivation-in-linux-vm' leads to a kernel panic upon failure.Ludovic Courtès2019-03-17
| | | | | | | | Partially fixes <https://bugs.gnu.org/34276>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * gnu/system/vm.scm (expression->derivation-in-linux-vm)[loader]: Call 'exit' when USER-BUILDER exits with a non-zero code.
* Remove traces of "GuixSD".Ludovic Courtès2019-03-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/bootloader/extlinux.scm (extlinux-configuration-file): Remove mentions of "GuixSD". * gnu/bootloader/grub.scm (install-grub-efi): Likewise. * gnu/build/vm.scm (make-iso9660-image): Change default #:volume-id to "Guix_image". (initialize-hard-disk): Search for the "Guix_image" label. * gnu/ci.scm (system-test-jobs, tarball-jobs): Remove "GuixSD". * gnu/installer/newt/welcome.scm (run-welcome-page): Likewise. * gnu/packages/audio.scm (supercollider)[description]: Likewise. * gnu/packages/curl.scm (curl): Likewise. * gnu/packages/emacs.scm (emacs): Likewise. * gnu/packages/gnome.scm (network-manager): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/linux.scm (alsa-plugins): Likewise. (powertop, wireless-regdb): Likewise. * gnu/packages/package-management.scm (guix): Likewise. * gnu/packages/polkit.scm (polkit): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/services/base.scm (file-systems->fstab): Likewise. * gnu/services/cups.scm (%cups-activation): Likewise. * gnu/services/mail.scm (%dovecot-activation): Likewise. * gnu/services/messaging.scm (prosody-configuration)[log]: Likewise. * gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise. * gnu/system/install.scm (installation-os)[file-systems]: Change root file system label to "Guix_image". * gnu/system/mapped-devices.scm (check-device-initrd-modules): Remove "GuixSD". * gnu/system/vm.scm (system-docker-image): Likewise. (system-disk-image)[root-label]: Change to "Guix_image". * gnu/tests/install.scm (run-install): Remove "GuixSD". * guix/modules.scm (guix-module-name?): Likewise. * nix/libstore/optimise-store.cc: Likewise.
* pack, vm: Fix incorrect use of 'package-transitive-propagated-inputs'.Ludovic Courtès2019-02-11
| | | | | | | | | | In practice the error was not triggered because 'package-transitive-propagated-inputs' currently returns the empty list for these two packages. * guix/scripts/pack.scm (gcrypt-sqlite3&co): Remove labels from the result. * gnu/system/vm.scm (gcrypt-sqlite3&co): Likewise.
* vm: Remove unnecessary import.Ludovic Courtès2019-01-22
| | | | * gnu/system/vm.scm: Remove unnecessary (guix scripts pack) import.
* linux-initrd: 'expression->initrd' returns the complete file name.Ludovic Courtès2018-11-21
| | | | | | | | | | | | | | | | Previously 'expression->initrd' would return the directory that contains the 'initrd' file; now it returns the complete file name for that file. * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Change output file name to "initrd.cpio.gz". Tail-call 'file-append' to return the complete file name. * gnu/system.scm (operating-system-initrd-file): Remove 'file-append' call. * gnu/build/linux-initrd.scm (write-cpio-archive): Check whether OUTPUT already has the ".gz" suffix; rename if before invoking GZIP if it does, and otherwise after. * gnu/system/vm.scm (expression->derivation-in-linux-vm)[builder]: Do not append "/initrd" to #$initrd.
* vm: Remove explicit calls to 'operating-system-derivation'.Ludovic Courtès2018-11-18
| | | | | | | * gnu/system/vm.scm (iso9660-image): Change 'os-drv' to 'os' and remove call to 'operating-system-derivation'. (system-qemu-image): Likewise. (system-qemu-image/shared-store): Likewise.
* system: De-monadify 'operating-system-bootcfg'.Ludovic Courtès2018-11-18
| | | | | | | | | * gnu/system.scm (operating-system-bootcfg): Remove 'mlet*' and 'lower-object' call. * gnu/system/vm.scm (system-disk-image) (system-qemu-image/shared-store): Adjust accordingly. * guix/scripts/system.scm (perform-action): Add 'lower-object' call for BOOTCFG.
* linux-initrd: Return file-like objects instead of monadic values.Ludovic Courtès2018-11-18
| | | | | | | | | | | | | | | | | | | This is an incompatible change visible to users via the 'initrd' field of 'operating-system'. However, assuming the user's 'initrd' value tail-calls to 'raw-initrd' or 'base-initrd', the switch to non-monadic style is invisible. * gnu/system/linux-initrd.scm (expression->initrd): Use 'computed-file' instead of 'gexp->derivation'. (raw-initrd, base-initrd): Adjust docstring to mention non-monadic return. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust accordingly. * gnu/system.scm (operating-system-directory-base-entries) (operating-system-initrd-file) (operating-system-boot-parameters): Adjust accordingly. * doc/guix.texi (operating-system Reference) (Initial RAM Disk): Update.
* system: Simplify kernel argument handling.Ludovic Courtès2018-11-18
| | | | | | | | | | | | | | | | * gnu/system.scm (bootable-kernel-arguments): Remove 'kernel-arguments' parameter and return only the base list of kernel arguments. Rename 'system.drv' to 'system'. (operating-system-kernel-arguments): Adjust accordingly and remove 'system.drv' parameter. (read-boot-parameters-file): Adjust accordingly. Remove 'if params' since dominating code assumed PARAMS is always true. (operating-system-boot-parameters): Remove 'system.drv' parameter; add #:system-kernel-arguments? instead and honor it. (operating-system-bootcfg): Adjust accordingly. (operating-system-boot-parameters-file): Likewise. * gnu/system/vm.scm (system-qemu-image/shared-store-script): Remove 'os-drv' variable. Adjust call to 'operating-system-kernel-arguments'.
* vm: Use "cache=loose" for all 9p mounts.Ludovic Courtès2018-09-23
| | | | | | | | This significantly improves read throughput when running things like "guix hash -r ...". * gnu/system/vm.scm (%linux-vm-file-systems): Add 'flags' for "store". Add "cache=loose" to every file system.
* vm: Disable deduplication for 'guix system vm-image'.Ludovic Courtès2018-09-23
| | | | | * gnu/system/vm.scm (qemu-image): Pass #:deduplicate? #f to 'root-partition-initializer'.
* vm: Make UUID computation really deterministic.Ludovic Courtès2018-09-07
| | | | | | | | | Fixes <https://bugs.gnu.org/32652>. * gnu/system/vm.scm (operating-system-uuid)[service-name, file-system-digest]: New procedures. Map these over services and file systems and hash the result. * tests/guix-system.sh: Add test.
* Switch to Guile-Gcrypt.Ludovic Courtès2018-09-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes (guix hash) and (guix pk-crypto), which now live as part of Guile-Gcrypt (version 0.1.0.) * guix/gcrypt.scm, guix/hash.scm, guix/pk-crypto.scm, tests/hash.scm, tests/pk-crypto.scm: Remove. * configure.ac: Test for Guile-Gcrypt. Remove LIBGCRYPT and LIBGCRYPT_LIBDIR assignments. * m4/guix.m4 (GUIX_ASSERT_LIBGCRYPT_USABLE): Remove. * README: Add Guile-Gcrypt to the dependencies; move libgcrypt as "required unless --disable-daemon". * doc/guix.texi (Requirements): Likewise. * gnu/packages/bash.scm, guix/derivations.scm, guix/docker.scm, guix/git.scm, guix/http-client.scm, guix/import/cpan.scm, guix/import/cran.scm, guix/import/crate.scm, guix/import/elpa.scm, guix/import/gnu.scm, guix/import/hackage.scm, guix/import/texlive.scm, guix/import/utils.scm, guix/nar.scm, guix/pki.scm, guix/scripts/archive.scm, guix/scripts/authenticate.scm, guix/scripts/download.scm, guix/scripts/hash.scm, guix/scripts/pack.scm, guix/scripts/publish.scm, guix/scripts/refresh.scm, guix/scripts/substitute.scm, guix/store.scm, guix/store/deduplication.scm, guix/tests.scm, tests/base32.scm, tests/builders.scm, tests/challenge.scm, tests/cpan.scm, tests/crate.scm, tests/derivations.scm, tests/gem.scm, tests/nar.scm, tests/opam.scm, tests/pki.scm, tests/publish.scm, tests/pypi.scm, tests/store-deduplication.scm, tests/store.scm, tests/substitute.scm: Adjust imports. * gnu/system/vm.scm: Likewise. (guile-sqlite3&co): Rename to... (gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT. (expression->derivation-in-linux-vm)[config]: Remove. (iso9660-image)[config]: Remove. (qemu-image)[config]: Remove. (system-docker-image)[config]: Remove. * guix/scripts/pack.scm: Adjust imports. (guile-sqlite3&co): Rename to... (gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT. (self-contained-tarball)[build]: Call 'make-config.scm' without #:libgcrypt argument. (squashfs-image)[libgcrypt]: Remove. [build]: Call 'make-config.scm' without #:libgcrypt. (docker-image)[config, json]: Remove. [build]: Add GUILE-GCRYPT to the extensions Remove (guix config) from the imported modules. * guix/self.scm (specification->package): Remove "libgcrypt", add "guile-gcrypt". (compiled-guix): Remove #:libgcrypt. [guile-gcrypt]: New variable. [dependencies]: Add it. [*core-modules*]: Remove #:libgcrypt from 'make-config.scm' call. Add #:extensions. [*config*]: Remove #:libgcrypt from 'make-config.scm' call. (%dependency-variables): Remove %libgcrypt. (make-config.scm): Remove #:libgcrypt. * build-aux/build-self.scm (guile-gcrypt): New variable. (make-config.scm): Remove #:libgcrypt. (build-program)[fake-gcrypt-hash]: New variable. Add (gcrypt hash) to the imported modules. Adjust load path assignments. * gnu/packages/package-management.scm (guix)[propagated-inputs]: Add GUILE-GCRYPT. [arguments]: In 'wrap-program' phase, add GUILE-GCRYPT to the search path.
* install: Use (guix store database) instead of 'guix-register'.Ludovic Courtès2018-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/build/install.scm (register-closure): Add #:reset-timestamps? and and #:schema; honor them. Rewrite in terms of 'register-path'. (populate-single-profile-directory): Add #:schema and honor it. Make /var/guix/profiles and /var/guix/gcroots. * gnu/build/vm.scm (root-partition-initializer): Pass #:reset-timestamps? to 'register-closure'. * gnu/system/vm.scm (not-config?): New procedure. (guile-sqlite3&co): New variable. (expression->derivation-in-linux-vm)[config]: New variable. [builder]: Use 'with-extensions'. (iso9660-image)[schema, config]: New variables. Wrap build expression in 'with-extensions'; add 'sql-schema' call. Remove GUIX from INPUTS. (qemu-image)[schema, config]: New variables. Wrap body in 'with-extensions'. (system-docker-image)[not-config?]: Remove. [config]: Use 'make-config.scm'. [schema]: New variable. [build]: Use 'with-extensions'. Add call to 'sql-schema'. Remove GUIX from INPUTS. * gnu/system/file-systems.scm (%store-prefix): Check whether '%store-prefix' is defined. * guix/scripts/pack.scm (self-contained-tarball)[not-config?] [libgcrypt, schema]: New variables. [build]: Wrap in 'with-extensions'. Adjust imported module list to use 'make-config.scm' for (guix config).
* vm: 'expression->derivation-in-linux-vm' code can now use dlopen.Ludovic Courtès2018-06-14
| | | | | | | | | * gnu/system/vm.scm (expression->derivation-in-linux-vm) [user-builder]: Define in non-monadic style as 'program-file'. [loader]: Likewise, and 'execl' USER-BUILDER instead of loading it. (system-docker-image): Pass BUILD as the second argument to 'expression->derivation-in-linux-vm'. (make-iso9660-image, qemu-image): Remove call to 'reboot'.
* store-copy: 'read-reference-graph' returns a list of records.Ludovic Courtès2018-06-14
| | | | | | | | | | | | | | The previous implementation of 'read-reference-graph' was good enough for many use cases, but it discarded the graph structure, which is useful information in some cases. * guix/build/store-copy.scm (<store-info>): New record type. (read-reference-graph): Rewrite to return a list of <store-info>. (closure-size, populate-store): Adjust accordingly. * gnu/services/base.scm (references-file): Adjust accordingly. * gnu/system/vm.scm (system-docker-image): Likewise. * guix/scripts/pack.scm (squashfs-image, docker-image): Likewise. * tests/gexp.scm ("gexp->derivation #:references-graphs"): Likewise.
* vm: 'iso9660-image' uses a local /tmp.Ludovic Courtès2018-06-08
| | | | | | | | Fixes <https://bugs.gnu.org/31752>. Regression introduced in commit 8c9bf2946a1cb58c5b7b941db3a37830ece80708. * gnu/system/vm.scm (iso9660-image): Pass #:file-systems to 'expression->derivation-in-linux-vm'.
* vm: 'expression->derivation-in-linux-vm' takes a #:file-systems parameter.Ludovic Courtès2018-06-08
| | | | | * gnu/system/vm.scm (expression->derivation-in-linux-vm): Add #:file-systems and use it instead of %LINUX-VM-FILE-SYSTEMS.
* vm: Use 'with-extensions'.Ludovic Courtès2018-06-01
| | | | | * gnu/system/vm.scm (system-docker-image)[build]: Use 'with-extensions'. Remove 'add-to-load-path' calls.
* vm: Remove unneeded dependency on Guile-JSON.Ludovic Courtès2018-05-29
| | | | | | | Fixes <https://bugs.gnu.org/31581>. Reported by Leo Famulari <leo@famulari.name>. * gnu/system/vm.scm: Remove unneeded (guix docker) import.
* system: Remove uses of the 'title' field of <file-system>.Ludovic Courtès2018-05-28
| | | | | | | | | | | | | | * gnu/system/install.scm (installation-os): Remove uses of the 'title' field of 'file-system'; use 'file-system-label' as appropriate. * gnu/system/vm.scm (system-disk-image, system-qemu-image): Likewise. * gnu/tests.scm (%simple-os): Likewise. * gnu/tests/install.scm (%minimal-os, %minimal-extlinux-os) (%minimal-os-on-vda, %separate-home-os, %separate-store-os) (%raid-root-os, %encrypted-root-os, %btrfs-root-os): Likewise. * gnu/build/shepherd.scm (default-mounts)[tmpfs]: Likewise. * tests/guix-system.sh: Likewise. * tests/system.scm (%root-fs): Likewise. ("operating-system-boot-mapped-devices, implicit dependency"): Likewise.
* file-systems: Remove 'title' field and add <file-system-label>.Ludovic Courtès2018-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'title' field was easily overlooked and was an endless source of confusion. Now, the value of the 'device' field is self-contained. * gnu/system/file-systems.scm (<file-system>): Change constructor name to '%file-system'. [title]: Remove. (<file-system-label>): New record type with printer. (report-deprecation, device-expression) (process-file-system-declaration, file-system): New macros. (file-system-title): New procedure. (file-system->spec, spec->file-system): Adjust to handle <file-system-label>. * gnu/system.scm (bootable-kernel-arguments): Add case for 'file-system-label?'. (read-boot-parameters): Likewise. (mapped-device-user): Avoid 'file-system-title'. (fs->boot-device): Remove. (operating-system-boot-parameters): Use 'file-system-device' instead of 'fs->boot-device'. (device->sexp): Add case for 'file-system-label?'. * gnu/bootloader/grub.scm (grub-root-search): Add case for 'file-system-label?'. * gnu/system/examples/bare-bones.tmpl, gnu/system/examples/beaglebone-black.tmpl, gnu/system/examples/lightweight-desktop.tmpl, gnu/system/examples/vm-image.tmpl: Remove uses of 'title'. * gnu/system/vm.scm (virtualized-operating-system): Remove uses of 'file-system-title'. * guix/scripts/system.scm (check-file-system-availability): Likewise, and adjust fix-it hint. (check-initrd-modules)[file-system-/dev]: Likewise. * gnu/build/file-systems.scm (canonicalize-device-spec): Remove 'title' parameter. [canonical-title]: Remove. Match on SPEC's type rather than on CANONICAL-TITLE. (mount-file-system): Adjust caller. * gnu/build/linux-boot.scm (boot-system): Interpret ROOT here. * gnu/services/base.scm (file-system->fstab-entry): Remove use of 'file-system-title'. * doc/guix.texi (File Systems): Remove documentation of the 'title' field. Rewrite documentation of 'device' and document 'file-system-label'.
* vm: Use a deterministic file system UUID in shared-store VMs.Ludovic Courtès2018-05-23
| | | | | * gnu/system/vm.scm (system-qemu-image/shared-store): Pass #:file-system-uuid to 'qemu-image'.
* system: Add "guix system docker-image" command.Chris Marusich2018-03-24
| | | | | | | | | | | * gnu/system/vm.scm (system-docker-image): New procedure. * guix/scripts/system.scm (system-derivation-for-action): Add a case for docker-image, and in that case, call system-docker-image. (show-help): Document docker-image. (guix-system): Parse arguments for docker-image. * doc/guix.texi (Invoking guix system): Document "guix system docker-image". * gnu/system/examples/docker-image.tmpl: New file.
* gnu: When building in a VM, share a temporary directory.Chris Marusich2018-03-24
| | | | | | * gnu/build/vm.scm (load-in-linux-vm): Make a shared temporary directory available in the VM. * gnu/system/vm.scm (%linux-vm-file-systems): Add a corresponding entry.
* vm: Display a backtrace upon error by default.Ludovic Courtès2018-03-18
| | | | | * gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass #:on-error to 'base-initrd'.
* vm: Use 9p mount tags below 32 chars.Ludovic Courtès2018-03-08
| | | | | | | | Fixes <https://bugs.gnu.org/30667>. Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>. * gnu/system/vm.scm (file-system->mount-tag): Use 'sha1' to compute the tag.
* linux-initrd: Add virtio modules to '%base-initrd-modules'.Ludovic Courtès2018-03-03
| | | | | | | | | | | | | | | | | | | Fixes a regression in installation tests, whereby 'guix system init' would report that virtio modules are missing for the target devices. In practice virtio modules were always available since 'base-initrd' was always called with #:virtio? #t. This commit simply moves them to '%base-initrd-modules' so that 'guix system' knows they're available. Reported by Danny Milosavljevic <dannym@scratchpost.org> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30629#112>. * gnu/system/linux-initrd.scm (default-initrd-modules): Add virtio modules. (base-initrd): Remove #:virtio? and 'virtio-modules'. * gnu/system/vm.scm (expression->derivation-in-linux-vm) (system-qemu-image, virtualized-operating-system): Remove uses of #:virtio?. * doc/guix.texi (Initial RAM Disk): Update 'base-initrd' doc.
* vm: Add missing modules to the 'expression->derivation-in-linux-vm' initrd.Ludovic Courtès2018-03-03
| | | | | | | | | | Fixes a regression introduced in bc499b113a598c0e7863da9887a4133472985713, whereby the default initrd used by 'expression->derivation-in-linux-vm' would lack all the usual modules: virtio, nls_iso8859-1, etc. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass #:linux-modules to 'base-initrd'.
* gnu: Consistently Write ‘file system(s)’.Tobias Geerinckx-Rice2018-01-19
| | | | | | | | | | | | | | | | | | | | | | | | | It is the GNU way. * doc/guix.texi (Build Systems, DNS Services): Write ‘file system(s)’. * gnu/build/vm.scm (create-ext-file-system, create-fat-file-system): Likewise. * gnu/packages/backup.scm (dirvish, rsnapshot)[description]: Likewise. * gnu/packages/check.scm (python-testpath)[description]: Likewise. * gnu/packages/disk.scm (pydf)[description]: Likewise. * gnu/packages/file-systems.scm (disorderfs)[synopsis, description]: Likewise. (glusterfs)[description]: Likewise. * gnu/packages/haskell.scm (ghc-directory, ghc-system-fileio-bootstrap) (ghc-system-fileio)[synopsis]: Likewise. (ghc-fsnotify)[description]: Likewise. * gnu/packages/linux.scm (proot)[description]: Likewise. (jmtpfs)[synopsis, description]: Likewise. * gnu/packages/mate.scm (caja, caja-extensions)[description]: Likewise. * gnu/packages/storage.scm (ceph)[description]: Likewise. * gnu/packages/sync.scm (lsyncd)[description]: Likewise. * gnu/packages/syncthing.scm (syncthing)[synopsis]: Likewise. (go-github-com-zillode-notify)[description]: Likewise. * gnu/services/nfs.scm (pipefs-service-type): Likewise. * guix/scripts/system.scm (perform-action): Likewise.
* vm: 'vm-image' images refer to the root file system by UUID.Ludovic Courtès2018-01-07
| | | | | | | | | | | This avoids the hard-coded "/dev/sda1", which only made sense when the image is run with "qemu-system-x86_64 -hda", not when it's passed to Xen, etc. Reported by Andreas Enge <andreas@enge.fr>. * gnu/system/vm.scm (system-qemu-image): Define 'root-uuid', use it as the 'device' field for "/", and pass it to 'qemu-image'.
* vm: Pass the host's /dev/urandom to the guest at /dev/hwrng.Leo Famulari2017-12-18
| | | | | * gnu/build/vm.scm (load-in-linux-vm): Use QEMU's virtio-rng-pci. * gnu/system/vm.scm (common-qemu-options): Likewise.
* gnu: system: vm: Use loose cache for 9p file system.Christopher Baines2017-12-17
| | | | | | | This improves the performance of the shared store for operations involving lots of files, e.g. searching through the store. * gnu/system/vm.scm (mapping->file-system): Add cache=loose to options.
* bootloader: Factorize write-file-on-device.Mathieu Othacehe2017-12-15
| | | | | | | | | | | * gnu/bootloader/extlinux.scm (install-extlinux): Factorize bootloader writing in a new procedure write-file-on-device defined in (gnu build bootloader). * gnu/build/bootloader.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add new file. * gnu/system/vm.scm (qemu-img): Adapt to import and use (gnu build bootloader) module during derivation building. * gnu/scripts/system.scm (bootloader-installer-derivation): Ditto.
* vm: Adapt qemu command to ARM.Mathieu Othacehe2017-12-15
| | | | | | | | | | | * gnu/build/vm.scm (load-in-linux-vm): New argument #:target-arm32. Use it to adapt command for qemu-system-arm. This implies to choose a machine ("virt"), use the correct console port "ttyAMA0", disable KVM use that is buggy on some ARM boards (Odroid XU4 for example) and use user mode network stack instead of NIC. Gather all those options in a new variable "arch-specific-flags". * gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass to load-in-linux-vm "#:target-arm32?" argument.