Commit Graph

536 Commits

Author SHA1 Message Date
Mathieu Othacehe 2cf5f4c144
file-systems: Move %control-groups from %base-file-systems to
%elogind-file-systems.

* gnu/system/file-systems.scm (%base-file-systems): Move %control-groups from
here, to ...
(%elogind-file-systems): ... here.
2017-12-22 15:03:10 +01:00
Mathieu Othacehe c729225b0f
file-systems: Do not mount hugetlb cgroup filesystem.
On ARM32 without LPAE support, hugetlb control group is not supported.
As it is not needed by elogind, remove it for all platforms.

* gnu/system/file-systems.scm (%control-groups): Remove hugetlb from control
  groups platforms.
2017-12-22 15:03:10 +01:00
Ludovic Courtès 42ff7d3be6
mapped-devices: 'luks-device-mapping' checks its source device.
* gnu/system/mapped-devices.scm (check-luks-device): New procedure.
(luks-device-mapping)[check]: New field.
2017-12-22 09:48:38 +01:00
Ludovic Courtès 4ca90ff597
mapped-devices: Add 'location' and 'check' fields.
* gnu/system/mapped-devices.scm (<mapped-device>)[location]: New field.
(<mapped-device-type>)[check]: New field.
2017-12-22 09:48:36 +01:00
Mathieu Othacehe a468f89743
system: examples: Add missing initrd to beaglebone-black.tmpl.
* gnu/system/examples/beaglebone-black.tmpl (operating-system): Add the
  initrd with "omap_hsmmc" as an extra-module.
2017-12-22 08:49:57 +01:00
Mathieu Othacehe 9f1e39d1fc
system: examples: Add a template for BeagleBone Black.
* gnu/system/examples/beaglebone-black.tmpl: New file.
* Makefile.am (EXAMPLES): Add it.
* gnu/system/install.scm (/etc/configuration-files): Add it.
2017-12-18 15:28:14 +01:00
Leo Famulari 2ca712bdba
vm: Pass the host's /dev/urandom to the guest at /dev/hwrng.
* gnu/build/vm.scm (load-in-linux-vm): Use QEMU's virtio-rng-pci.
* gnu/system/vm.scm (common-qemu-options): Likewise.
2017-12-18 00:39:40 -05:00
Christopher Baines e0d96774dd
gnu: system: vm: Use loose cache for 9p file system.
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.
2017-12-17 20:46:40 +00:00
Mathieu Othacehe ceb3952764
system: Add BeagleBone Black installer.
* gnu/bootloader/u-boot.scm (u-boot-beaglebone-black-bootloader): New exported
  bootloader.
* gnu/system/install.scm (beaglebone-black-installation-os): New exported variable.
2017-12-15 12:15:15 +01:00
Mathieu Othacehe e224820386
bootloader: Factorize write-file-on-device.
* 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.
2017-12-15 11:52:38 +01:00
Mathieu Othacehe acf54bca22
vm: Adapt qemu command to ARM.
* 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.
2017-12-15 11:44:29 +01:00
Ludovic Courtès 5a2f019c7d
Merge branch 'version-0.14.0' 2017-12-07 17:16:05 +01:00
Tobias Geerinckx-Rice fdfdecdb7e
gnu, doc, tests: Use ‘bootloader-configuration’ everywhere.
* doc/guix.texi (Proceeding with the Installation): Replace the old-style
‘grub-configuration’ with the newer ‘bootloader-configuration’ syntax.
* gnu/system/examples/vm-image.tmpl: Likewise.
* gnu/system/install.scm (installation-os): Likewise.
* gnu/tests.scm (%simple-os): Likewise.
* gnu/tests/install.scm (%minimal-os, %minimal-os-on-vda, %separate-home-os)
(%separate-store-os, %raid-root-os, %encrypted-root-os, %btrfs-root-os):
Likewise.
* gnu/tests/nfs.scm (%base-os): Likewise.
* tests/guix-system.scm (OS_BASE, make_user_config): Likewise.
* tests/system.scm (%os, %os-with-mapped-device): Likewise.
2017-12-06 15:02:24 +01:00
Ludovic Courtès aab322d909
install: Don't start sshd by default.
Reported by Christopher Baines <mail@cbaines.net>
at <https://lists.gnu.org/archive/html/guix-devel/2017-12/msg00058.html>.

* gnu/services/ssh.scm (<openssh-configuration>)[%auto-start?]: New
field.
(openssh-shepherd-service): Honor it.
* gnu/system/install.scm (%installation-services): Set '%auto-start?' to
 #f for openssh-service-type.
2017-12-04 23:31:15 +01:00
Mathieu Othacehe 4307397b5e
bootloader: extlinux: Stop using dd binary.
* 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.
2017-12-04 18:26:59 +01:00
Ludovic Courtès 8638362f13
install: Add colors in 'motd' and 'issue'.
* gnu/system/install.scm (%installation-services)[motd]: Add colors.
[services]: Use the "lat9u-16" font.
(%issue): Add colors.
2017-12-03 19:12:16 +01:00
Ludovic Courtès af4a761e97
install: Add the prerequisites of 'profile-derivation' as GC roots.
* gnu/system/install.scm (%installation-services): Add
GLIBC-UTF8-LOCALES, TEXINFO, and GUILE-FINAL as GC roots.
2017-12-03 19:12:16 +01:00
Ludovic Courtès bf57e1c708
uuid: Fix typo in comment.
* gnu/system/uuid.scm: Fix typo in comment.
2017-12-02 23:13:20 +01:00
Mathieu Othacehe 04bbd07218
system: vm: Fix typo in comment.
* gnu/system/vm.scm (qemu-image): Fix typo targetting -> targeting.
2017-12-02 13:58:05 +01:00
Mathieu Othacehe 00e39b2ea4
system: vm: Do not add EFI partition on ARM system.
* 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.
2017-12-01 13:55:49 +01:00
Ludovic Courtès f00515b483
vm: Filter out file systems that refer to UUIDs or labels.
* gnu/system/vm.scm (virtualized-operating-system)[user-file-systems]:
Filter out things that refer to file system UUIDs or labels.
2017-11-30 18:14:57 +01:00
Mathieu Othacehe b8e7781122
vm: Use os-defined initrd intead of base-initrd.
* 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.
2017-11-26 13:50:37 +01:00
Tobias Geerinckx-Rice 795ec760e4
install: Fix typo.
* gnu/system/install.scm (installation-os): Fix typo in comment.
2017-11-11 05:17:59 +01:00
Hartmut Goebel d9565f7d87
install: Use overlayfs instead of unionfs.
I dediced to keep adding /tmp as tmpfs since I was not able to trigger bug
while still using unionfs, so I could not verify whether this mount is still
needed with overlayfs.  Mapping /tmp to tmpfs does not harm, so we are on the
save side.

* gnu/system/install.scm (make-cow-store): Mount /gnu/store without additional
  read-only bind-mount, since in overlayfs the "lower" level is always
  read-only. Add work-dir required by overlayfs. No need to sleep anymore
  since now using the mount syscall. [unionfs]: Remove now unused function.
  (%installation-services): Update comment.
  (installation-os)[file-systems]: Update comment.
2017-11-08 18:23:06 +01:00
Hartmut Goebel c828969036
build: Use overlayfs instead of unionfs.
Overlayfs is part of the kernel, while unionfs needs FUSE.  This also reduces
the size of the initrd by ca. 4.3% (487K).

* gnu/build/linux-boot.scm (mount-root-file-system): Remove optional parameter
  "unionfs"; mount using overlayfs instead of unionfs; new directory layout
  requied by overlayfs; update documentation.
  [mark-as-not-killable]: Remove now unused function

* gnu/system/linux-initrd.scm (file-system-packages): Remove now unused
  packages "unionfs-fuse/static" and thus unused related 'if'.
  (linux-modules): Replace "fuse" by "overlay".
2017-11-08 18:23:05 +01:00
Mathieu Othacehe b1a3079347
system: vm: Use 2^32 - 1 as hash size.
* 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).
2017-11-06 20:02:25 +01:00
Marius Bakke 2c16be569c
system: Return early in skeleton '.bashrc' when the shell is non-interactive.
* gnu/system/shadow.scm (default-skeletons)[bashrc]: Add return statement.
2017-11-01 20:29:32 +01:00
Marius Bakke 0ab59dd8b8
system: Test for interactive shell instead of `cat` in skeleton '.bashrc'.
* gnu/system/shadow.scm (default-skeletons)[bashrc]: Wrap $SSH_CLIENT test in
a conditional testing for interactive shell.
2017-11-01 20:29:32 +01:00
Ludovic Courtès 9b396c0cab
vm: Always use GRUB/i386.
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.
2017-10-19 23:21:49 +02:00
Ludovic Courtès 50fcf37c13
doc: Give an example with a FAT UUID.
* gnu/system/examples/lightweight-desktop.tmpl <file-systems>: Add a
UUID for the /boot/efi partition.
* doc/guix.texi (Using the Configuration System): Mention it.
2017-10-11 11:12:33 +02:00
Ludovic Courtès 03f66aea63
uuid: Change "fat32" to "fat".
* gnu/system/uuid.scm (%fat32-endianness): Rename to...
(%fat-endianness): ... this.
(fat32-uuid->string): Rename to...
(fat-uuid->string): ... this.
(%fat32-uuid-rx): Rename to..
(%fat-uuid-rx): ... this.
(string->fat32-uuid): Rename to...
(string->fat-uuid): ... this.
(%uuid-parsers, %uuid-printers): Add 'fat16.
2017-10-11 11:12:33 +02:00
Ludovic Courtès 9976c76aab
file-systems: Preserve UUID types when serializing.
Reported by Roel Janssen <roel@gnu.org>
at <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>.

* gnu/system/file-systems.scm (file-system->spec): When DEVICE is a
UUID, serialize it in a way that preserves its type.
(spec->file-system): Adjust accordingly.
* gnu/build/file-systems.scm (canonicalize-device-spec): Add case for
when SPEC is 'uuid?'.
2017-10-11 11:12:33 +02:00
Ludovic Courtès 1c65cca574
file-systems: 'mount-file-system' now takes a <file-system> object.
* gnu/build/file-systems.scm (mount-file-system): Rename 'spec' to 'fs'
and assume it's a <file-system>.
* gnu/build/linux-boot.scm (boot-system): Assume MOUNTS is a list of
<file-system> and adjust accordingly.
* gnu/build/linux-container.scm (mount-file-systems): Remove
'file-system->spec' call.
* gnu/services/base.scm (file-system-shepherd-service): Add
'spec->file-system' call.  Add (gnu system file-systems) to 'modules'.
* gnu/system/linux-initrd.scm (raw-initrd): Use (gnu system
file-systems).  Add 'spec->file-system' call for #:mounts.
2017-10-11 11:12:33 +02:00
Christopher Baines b36e06c2b0
linux-initrd: Ensure that the guile used in the initrd is referenced.
By referencing guile from the initrd output explicitly, it will be present in
the store when this initrd is used. If the exact guile used within the initrd
isn't present in the store, then after root is switched during the boot
process, loading modules (such as (ice-9 popen)) won't work.

This fixes guix-patches bug #28399, "Fix mysql activation, and add a basic
test".

* gnu/system/linux-initrd.scm (expression->initrd)[builder]: Write out a file
  called references in to the initrd output, which includes the store path for
  guile.
2017-10-08 17:31:49 +01:00
Ludovic Courtès dd41a7f8d8
file-systems: Add a 'location' field to <file-system>.
* gnu/system/file-systems.scm (<file-system>)[location]: New field.
2017-10-05 12:09:17 +02:00
Ludovic Courtès aed1f1b049
uuid: Add 'uuid=?' and use it.
* gnu/system/uuid.scm (uuid=?): New procedure.
* tests/uuid.scm ("uuid=?"): New test.
* gnu/build/file-systems.scm (partition-uuid-predicate)
(luks-partition-uuid-predicate): Use it instead of 'bytevector=?'.
2017-10-05 12:09:17 +02:00
Christopher Baines eb152070f1
vm: Add disk-image-size to <virtual-machine>.
* gnu/system/vm.scm (<virtual-machine>): Add disk-image-size.
  (port-forwardings->qemu-options): Use disk-image-size from
  <virtual-machine>.
2017-10-04 07:16:43 +01:00
Christopher Baines 0c75a4de49
vm: Add a minimum root size.
* 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.
2017-10-04 07:16:40 +01:00
Ludovic Courtès 8a7d81a5e2
uuid: Add a parser for FAT32 UUIDs.
* gnu/system/uuid.scm (%fat32-uuid-rx): New variable.
(string->fat32-uuid): New procedure.
(%uuid-parsers): Add it.
* tests/uuid.scm ("uuid, FAT32, format preserved"): New test.
2017-09-22 18:40:57 +02:00
Ludovic Courtès fbc31dc124
services: Move 'session-environment-service-type' to pam.scm.
* gnu/services/base.scm (environment-variables->environment-file)
(session-environment-service-type)
(session-environment-service): Move to...
* gnu/system/pam.scm: ... here.
2017-09-22 00:05:08 +02:00
Ludovic Courtès 960c40de21
doc: Use Screen and OpenSSH in the bare-bones example.
* gnu/system/examples/bare-bones.tmpl (packages): Remove TCPDUMP; add
SCREEN and OPENSSH.
* doc/guix.texi (Using the Configuration System): Adjust explanation
accordingly.
2017-09-12 23:56:34 +02:00
Ludovic Courtès 4e854b1814
install: Include the whole bare-bones OS in the image.
* gnu/system/install.scm (%installation-services): Load
"example/bare-bones.tmpl".  Add a 'gc-root-service-type' instance.
2017-09-12 23:56:33 +02:00
Ludovic Courtès 5f7fe1c57e
vm: Generate a UUID to identify the root file system.
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'.
2017-09-11 22:26:29 +02:00
Ludovic Courtès fd3b4b985d
vm: Allow users to specify a UUID for the root partition.
* gnu/system/vm.scm (qemu-image): Add #:file-system-uuid parameter; pass
it as the 'uuid' field of the root partition.
2017-09-11 22:26:24 +02:00
Ludovic Courtès ce094b4663
uuid: 'uuid' macro supports more UUID types.
* gnu/system/uuid.scm (string->uuid): Turn 'type' into an optional
argument.
(uuid): Add clauses to allow for an optional 'type' parameter.
2017-09-11 22:24:47 +02:00
Ludovic Courtès 9b336338cd
system: Introduce a disjoint UUID type.
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.
2017-09-11 22:24:46 +02:00
Ludovic Courtès 47cef4ecad
file-systems: Introduce (gnu system uuid).
* gnu/build/file-systems.scm (sub-bytevector)
(latin1->string, %fat32-endianness, fat32-uuid->string)
(%iso9660-uuid-rx, string->iso9660-uuid)
(iso9660-uuid->string, %network-byte-order)
(dce-uuid->string, %uuid-rx, string->dce-uuid)
(string->ext2-uuid, string->ext3-uuid, string->ext4-uuid)
(vhashq, %uuid-parsers, %uuid-printers, string->uuid)
(uuid->string): Move to...
* gnu/system/uuid.scm: ... here.  New file.
* gnu/system/file-systems.scm (uuid): Move to the above file.
* gnu/system/vm.scm: Adjust accordingly.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add uuid.scm.
2017-09-11 22:24:46 +02:00
Ludovic Courtès 1e8d398abc
install: Add OpenSSH to the global profile.
Suggested by Jan Nieuwenhuizen.

* gnu/system/install.scm (installation-os)[packages]: Add OPENSSH.
2017-09-10 23:34:29 +02:00
Ludovic Courtès 903ae630a0
install: Add 'passwd' to $PATH.
Suggested by Jan Nieuwenhuizen.

* gnu/system/install.scm (installation-os)[setuid-programs]: Add 'passwd'.
2017-09-10 23:34:29 +02:00
Christopher Baines b069111f7a
vm: Call iso9660-image with #:register-closures? as #t.
* gnu/system/vm.scm (system-disk-image): Call iso9660-image with
  #:register-closures? as #t.
2017-09-06 08:43:52 +01:00