Commit graph

214 commits

Author SHA1 Message Date
Josselin Poiret
b90504cdb5
installer: Rework installation device detection.
* gnu/installer/parted.scm (installation-device): Remove it.
* gnu/installer/parted.scm (installer-root-partition-path): Add it.
* gnu/installer/parted.scm (non-install-devices): Add installation-device?
predicate.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-11-26 10:52:02 +00:00
Tobias Geerinckx-Rice
3a7504cbc4
installer: Reorder file system type listbox.
Recommending ext4 over btrfs is probably ill-advised nowadays.  See the
regular bug reports about running out of /gnu/store directory entries,
for which the documented fix then breaks booting with GRUB.

Instead, just list regular file systems alphabetically.  We can bikeshed
bcachefs later ;-)

Move second-class file systems like NTFS to their own section at the end
of the list.

* gnu/packages/package-management.scm (run-fs-type-page): Reorder the
LISTBOX-ITEMS.
2021-10-21 22:08:24 +02:00
Tobias Geerinckx-Rice
f1a3c11407
installer: Fix typo in docstrings.
* gnu/packages/gnu/installer/parted.scm
(force-user-partitions-formatting, format-user-partitions):
Fix ‘formating’ docstring typo.
2021-10-01 21:27:36 +02:00
Tobias Geerinckx-Rice
f34b808741
installer: Support XFS.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add ‘xfs’ to the
list box.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type)
(partition-filesystem-user-type): Add ‘xfs’ mapping.
(create-xfs-file-system): New procedure.
(format-user-partitions): Use it.
* gnu/installer.scm (set-installer-path): Add xfsprogs.
2021-09-23 18:17:18 +02:00
Maxim Cournoyer
da4e409483
Migrate to the new 'targets' field of bootloader-configuration.
The old 'target' field is deprecated; adjust the sources to use the new
'targets' one instead.

* doc/guix-cookbook.texi<target>: Replace by 'targets'.
* gnu/bootloader/grub.scm: Likewise.
* gnu/installer/parted.scm: Likewise.
* gnu/machine/digital-ocean.scm: Likewise.
* gnu/system/examples/asus-c201.tmpl: Likewise
* gnu/system/examples/bare-bones.tmpl: Likewise
* gnu/system/examples/bare-hurd.tmpl: Likewise
* gnu/system/examples/beaglebone-black.tmpl: Likewise
* gnu/system/examples/desktop.tmpl: Likewise
* gnu/system/examples/docker-image.tmpl: Likewise
* gnu/system/examples/lightweight-desktop.tmpl: Likewise
* gnu/system/examples/vm-image.tmpl: Likewise
* gnu/system/examples/yggdrasil.tmpl: Likewise
* gnu/system/hurd.scm: Likewise
* gnu/system/images/hurd.scm: Likewise
* gnu/system/images/novena.scm: Likewise
* gnu/system/images/pine64.scm: Likewise
* gnu/system/images/pinebook-pro.scm: Likewise
* gnu/system/images/rock64.scm: Likewise
* gnu/system/install.scm: Likewise
* gnu/system/vm.scm: Likewise
* gnu/tests.scm: Likewise
* gnu/tests/ganeti.scm: Likewise
* gnu/tests/install.scm: Likewise
* gnu/tests/nfs.scm: Likewise
* gnu/tests/telephony.scm: Likewise
* tests/boot-parameters.scm: Likewise
* tests/system.scm: Likewise
2021-08-29 01:05:26 -04:00
Tobias Geerinckx-Rice
8dc852b940
installer: Unconditionally import (gnu services cups) in config.scm.
* gnu/installer/steps.scm (format-configuration): Add cups to the list
of GNU service modules.
2021-07-04 13:04:45 +02:00
Tobias Geerinckx-Rice
0dbd2c3b08
installer: tests: Expect but do not select other services by default.
* gnu/installer/tests.scm (choose-services): Accept a new
choose-other-service? keyword argument, defaulting to false.
Expect an "Other services" checkbox-list.  Update docstring.
2021-07-04 13:04:45 +02:00
Tobias Geerinckx-Rice
6f13881f1e
installer: Offer the CUPS printing service.
* gnu/installer/services.scm (%system-services): Add CUPS.
* gnu/installer/newt/services.scm (run-other-services-cbt-page):
New procedure.
(run-services-page): Call it last.
2021-06-30 21:34:26 +02:00
Mathieu Othacehe
e2ff126588
installer: Fix crash when deleting a free space partition.
Fixes: <https://issues.guix.gnu.org/49126>.

* gnu/installer/newt/partition.scm (run-disk-page): Fix the return value when
removing a free space partition.
2021-06-29 20:44:23 +02:00
Tobias Geerinckx-Rice
ed44e62636
installer: Remove unused procedure.
NETWORKING-SYSTEM-SERVICE? was obsoleted in commit
2e55f37c0c.

* gnu/installer/services.scm (networking-system-service?): Remove it.
2021-06-23 03:01:49 +02:00
Mathieu Othacehe
e12be802e0
installer: Improve the installation device detection method.
Fixes: <https://issues.guix.gnu.org/47780>.

* gnu/installer/parted.scm (installation-device): New method.
(non-install-devices): Remove devices which are reported as read-only by
parted or which path is identical to the installation device path returned by
the above method.
2021-06-17 11:00:26 +02:00
Mathieu Othacehe
245cab2abc
installer: Fix FAT16 partition mounting.
The "fat" file-system mount type doesn't exist in Linux. Trying to mount a
FAT16 partition with "fat" file-system type returns -ENODEV.

Fixes: <https://issues.guix.gnu.org/48419>.

* gnu/installer/parted.scm (user-fs-type->mount-type): Use the "vfat"
file-system for FAT16 partitions.
2021-06-13 14:11:59 +02:00
Mathieu Othacehe
154a4e0462
installer: Improve install device detection.
* gnu/installer/parted.scm (non-install-devices): Improve the detection by
assuming that any device with the ISO9660 label is the installation device.
2021-06-12 18:40:39 +02:00
Mathieu Othacehe
f5d9d6ec68
installer: Check partitions UUIDs.
* gnu/installer/parted.scm (&cannot-read-uuid): New condition.
(cannot-read-uuid?, cannot-read-uuid-partition): New procedures.
(check-user-partitions): Check that all user-partitions have a valid UUID,
raide the above condition otherwise.
* gnu/installer/newt/partition.scm (run-disk-page): Run an error page if the
&cannot-read-uuid condition is raised.
2021-06-12 09:31:33 +02:00
Mathieu Othacehe
1a0a18d0cc
installer: Print user partitions.
* gnu/installer/newt/partition.scm (run-partitioning-page): Print
user-partitions to syslog.
2021-06-12 09:31:33 +02:00
Mathieu Othacehe
95b3fc12bc
tests: Add gui-uefi-installed-os test.
* gnu/installer/tests.scm (conclude-installation): Rename it into ...
(start-installation): ... this new procedure.
(complete-installation): New procedure.
(choose-partitioning): Add an uefi-support? argument.
* gnu/tests/install.scm (uefi-firmware): New procedure.
(run-install, qemu-command/writable-image, gui-test-program,
installation-target-os-for-gui-tests): Add an uefi-support? argument.
(%extra-packages): Add grub-efi, fatfsck/static and dosfstools.
(%test-gui-installed-os): New variable.
2021-04-28 15:51:12 +02:00
Mathieu Othacehe
af7a615c5b
installer: Add MSDOS disk label support on UEFI systems.
Fixes: <https://issues.guix.gnu.org/47889>.

* gnu/installer/parted.scm (esp-partition?): Remove the MSDOS check.
(auto-partition!): On MSDOS disks, check if an ESP partition is present. If
that's the case, do not remove it. Otherwise, if UEFI is supported, create
one.
2021-04-28 15:50:02 +02:00
Mathieu Othacehe
3f8ea83e2a
installer: Force GPT disk label when UEFI is supported.
* gnu/installer/newt/partition.scm (run-label-page): Force the GPT disk label
when UEFI is supported.
2021-04-28 15:49:53 +02:00
Ludovic Courtès
70c2897ea3
installer: Internationalize comment of the generated config.
* gnu/installer/steps.scm (configuration->file): Pass the comment in the
generated file through 'G_'.
2021-04-14 22:51:38 +02:00
Tobias Geerinckx-Rice
d09831fe52
installer: Edit desktop selection prompt.
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page):
Fix and clarify the #:info-text.
2021-01-31 17:08:17 +01:00
Mathieu Othacehe
bb4e67415e
installer: Fix crash in parameters menu.
Fixes: <https://issues.guix.gnu.org/45378>.

* gnu/installer/newt/keymap.scm (run-layout-page): Return false when
"Continue" button is pressed.
(run-keymap-page): Do not try to compute variants if layout is false. Also do
not try to format the result if layout is false.
* gnu/installer.scm (compute-keymap-step): Do not apply keymap if
"run-keymap-page" returns false.
2021-01-12 16:40:27 +01:00
Mathieu Othacehe
8361817bf6
install: Discover local substitute servers.
* gnu/installer/substitutes.scm: New file.
* gnu/installer/newt/substitutes.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add them.
* po/guix/POTFILES.in: Add gnu/installer/newt/substitutes.scm.
* gnu/installer/proxy.scm (with-silent-shepherd): Move to ...
* gnu/installer/utils.scm: ... here.
* gnu/installer/record.scm (<installer>)[substitutes-page]: New field.
* gnu/installer/newt.scm (substitutes-page): New procedure,
(newt-installer): register it.
* gnu/installer.scm (installer-steps): Add "substitutes-page" step.
* gnu/system/install.scm (%installation-services): Add avahi-service-type and
enable substitute server discover in guix-service-type.
[<name-service-switch>]: Set it to %mdns-host-lookup-nss.
2020-12-11 21:37:07 +01:00
Ludovic Courtès
d8051557ae
Revert "services: openssh: Warn about 'password-authentication?' default."
This reverts commit aecd2a13cb for two
reasons:

  1. The warning would fire every time (gnu services ssh) is loaded;

  2. There's still no clear consensus on the approach to follow as
     discussed in <https://issues.guix.gnu.org/44808>.
2020-12-11 19:06:53 +01:00
Ludovic Courtès
aecd2a13cb
services: openssh: Warn about 'password-authentication?' default.
Fixes <https://bugs.gnu.org/44808>.
Reported by Christopher Lemmer Webber <cwebber@dustycloud.org>.

* gnu/services/ssh.scm (true-but-soon-false): New procedure.
(<openssh-configuration>)[password-authentication?]: Change default to
'true-but-soon-false'.
* gnu/installer/services.scm (%system-services): Explicitly set
'password-authentication?' to #f.
2020-12-07 12:48:26 +01:00
Mathieu Othacehe
3d3ffb30f9
installer: Fix device synchronization.
Reported by Florian Pelz:
https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00326.html.

* gnu/installer/utils.scm (call-with-time): New procedure,
(let/time): new macro.
* gnu/installer/parted.scm (with-delay-device-in-use?): Increase the retry
count to 16.
(non-install-devices): Remove the call to with-delay-device-in-use? as it
doesn't return the expected result, and would block much longer now.
(free-parted): Log the time required to sync each device.
2020-11-17 19:10:14 +01:00
Mathieu Othacehe
8c287bb2fb
installer: parted: Add debug output.
* gnu/installer/parted.scm (mkpart): Log partition creation.
2020-11-08 19:41:12 +01:00
Mathieu Othacehe
c2396ceb6e
installer: parameters: Add a reboot button.
Suggested by: zimoun <zimon.toutoune@gmail.com>.

* gnu/installer/newt/parameters.scm (run-parameters-page): Add a reboot
button.
2020-11-07 18:17:32 +01:00
Mathieu Othacehe
6dcbbcdab7
installer: Edit partitioning warning message.
* gnu/installer/newt/partition.scm (draw-formatting-page): Add an extra new
line.
2020-11-07 13:19:25 +01:00
Mathieu Othacehe
8338d414b3
installer: Limit listbox height.
Fixes: <https://issues.guix.gnu.org/44428>.

* gnu/installer/newt.scm (init): Print screen size.
* gnu/installer/newt/page.scm (default-listbox-height): New variable.
(run-listbox-selection-page): Use it.
* gnu/installer/newt/wifi.scm (wifi-listbox-height): Ditto.
* gnu/installer/newt/network.scm (run-technology-page): Set the maximum
listbox height to 5.
* gnu/installer/newt/ethernet.scm (run-ethernet-page): Ditto.
* gnu/installer/newt/final.scm (run-config-display-page): Change listbox
height.
* gnu/installer/newt/partition.scm (run-disk-page): Ditto.
* gnu/installer/newt/welcome.scm (display-logo?): New procedure.
(run-menu-page): Use it.
* gnu/installer/steps.scm (%configuration-file-width): Remove it.
2020-11-07 13:19:25 +01:00
Miguel Ángel Arruga Vivas
bc9e66f0fe
installer: Report to the user the formatted partitions.
* gnu/installer/newt/partitions.scm (define-module): Use (ice-9 format).
(draw-formatting-page): Add parameter partitions and provide the list of
formatted partitions to the user.
(run-partitioning-page): Provide user-partitions to draw-formatting-page.
2020-11-02 03:42:08 +01:00
Ludovic Courtès
8f71305e8f
installer: parted: Internationalize the partition handling code.
* gnu/installer/parted.scm (user-partition-description): Use 'format'
and 'G_' for i18n.
2020-11-01 23:56:29 +01:00
Ludovic Courtès
1c6d985331
installer: Use UUIDs in the 'swap-devices' field.
Note: This change requires an updated 'guix' package that contains
Linux-swap support in (gnu build file-systems).

* gnu/installer/parted.scm (user-partitions->configuration): Use UUIDs
in the 'swap-devices' field.
* gnu/installer/newt/final.scm (run-final-page)[wait-for-clients]: New
procedure.   Use it.
* gnu/installer/tests.scm (choose-partitioning): Wait for
'starting-final-step' message and move configuration file dialog
handling to...
(conclude-installation): ... here.  Send over PORT the reply
corresponding to 'starting-final-step'.
* gnu/tests/install.scm (gui-test-program): When ENCRYPTED? is false,
invoke 'swaplabel' in the marionette.
(installation-target-os-for-gui-tests): When ENCRYPTED? is false, except
a fixed UUID.
2020-10-30 01:14:21 +01:00
Ludovic Courtès
6d1fd37182
installer: Log partition formatting.
* gnu/installer/newt/partition.scm (run-partitioning-page): Add 'syslog' call.
2020-10-28 16:24:47 +01:00
Ludovic Courtès
bfb65a6768
installer: Make the network management selection window tighter.
* gnu/installer/newt/services.scm (run-network-management-page): Pass
 #:listbox-height.
2020-10-23 16:35:38 +02:00
Miguel Ángel Arruga Vivas
19c14d95b3
installer: Create bios_grub partition when it is needed.
* gnu/installer/parted.scm (auto-partition!): Only check for ESP on EFI
installations.
2020-10-19 21:54:25 +02:00
Jan (janneke) Nieuwenhuizen
1197b8b20f
installer: Add Emacs EXWM desktop environment.
Suggested by zenny via IRC.

* gnu/installer/services.scm (%system-services): Add emacs, emacs-exwm,
emacs-desktop-environment.
* etc/release-manifest.scm (%system-packages): Likewise.
* gnu/system/examples/lightweight-desktop.tmpl: Likewise.
* gnu/tests/install.scm (installation-target-desktop-os-for-gui-tests)
[packages]: Likewise
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page): Make
one entry taller.
2020-10-13 21:17:40 +02:00
Tobias Geerinckx-Rice
5e17ae7fbd
installer: Rename RUN-PARTIONING-PAGE.
* gnu/installer/newt/partition.scm (run-partioning-page): Rename to
run-partitioning-page.  Adjust all callers.
2020-09-21 00:31:15 +02:00
Tobias Geerinckx-Rice
e1f3788944
installer: Fix docstring typoes.
* gnu/installer/connman.scm (connman-state, run-locale-page)
(start-swapping, stop-swapping, run-installer-steps): Fix typo in
docstring.
2020-09-21 00:31:15 +02:00
Mathieu Othacehe
cafbc5f390
installer: final: Introduce call-with-mnt-container.
* gnu/installer/final.scm (call-with-mnt-container): New procedure,
(install-system): use it instead of call-with-container, to make sure that the
container is not jailed.
2020-09-10 09:38:52 +02:00
Mathieu Othacehe
8ce6f4dc28
installer: Run the installation inside a container.
When the store overlay is mounted, other processes such as kmscon, udev
and guix-daemon may open files from the store, preventing the
underlying install support from being umounted. See:
https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html.

To avoid this situation, mount the store overlay inside a container,
and run the installation from within that container.

* gnu/build/shepherd.scm (fork+exec-command/container): New procedure.
* gnu/services/base.scm (guix-shepherd-service): Support an optional PID
argument passed to the "start" method. If that argument is passed, ensure that
guix-daemon enters the given PID MNT namespace by using
fork+exec-command/container procedure.
* gnu/installer/final.scm (umount-cow-store): Remove it,
(install-system): run the installation from within a container.
* gnu/installer/newt/final.scm (run-install-shell): Remove the display hack.
2020-09-02 17:05:23 +02:00
Mathieu Othacehe
5697a524a7
installer: Remove logical devices.
If a device contains an active logical volume, BLKRRPART will report that the
device is busy. This will cause this device to be filtered by
"non-install-devices" procedure, which is not desired.

Make sure to deactivate all logical volumes before device probing.

Fixes <https://issues.guix.gnu.org/42683>.

* gnu/installer.scm (installer-program): Add lvm2-static to the inputs.
* gnu/installer/parted.scm (remove-logical-devices): New procedure,
(init-parted): call it.
2020-08-06 11:31:38 +02:00
Mathieu Othacehe
218a67dfab
installer: Add NTFS support.
This adds support for creating and editing NTFS partitions. It is however not
possible yet to create root NTFS partitions, as overlaying on top of a fuse
partition does not seem supported.

* gnu/installer.scm (installer-program): Add "ntfs-3g" to the inputs.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type,
partition-filesystem-user-type, create-ntfs-file-system,
format-user-partitions): Add NTFS support.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add NTFS support.
2020-07-26 18:35:10 +02:00
Mathieu Othacehe
4febc38d9f
installer: final: Remove restart-service procedure.
* gnu/installer/final.scm (umount-cow-store): Remove "restart-service" that is
now provided by (gnu services herd).
2020-06-16 16:33:55 +02:00
Mathieu Othacehe
876a8d9870
installer: final: Make sure 'bold' font files are loaded.
* gnu/installer/newt/final.scm (run-install-shell): Force kmscon to open
'bold' font files, before the cow-store overlay is mounted.
2020-06-14 17:42:36 +02:00
Mathieu Othacehe
478d1270ce
install: final: Add some logging.
* gnu/installer/final.scm (umount-cow-store): Add some logging.
2020-06-13 15:21:20 +02:00
Mathieu Othacehe
9392652e91
installer: final: Dump "guix system init" command output when testing.
When debugging the installation tests, it can be very handy to be able to read
"guix system init" command output.

* gnu/installer/final.scm (install-system): Dump installation command output
to the console when running the installation tests.
2020-06-09 17:59:05 +02:00
Mathieu Othacehe
ce16b07d10
installer: final: Remove left-over pk call.
* gnu/installer/final.scm (kill-cow-users): Remove pk call.
2020-06-09 17:59:05 +02:00
Mathieu Othacehe
5f7c4416b5
Revert "installer: utils: Dump command output to syslog when testing."
This reverts commit f73ed55791. This was pushed
by error, as this is not reviewed yet.
2020-06-09 10:33:04 +02:00
Mathieu Othacehe
f73ed55791
installer: utils: Dump command output to syslog when testing.
When debugging the installation tests, it can be very handy to be able to read
"run-command" output, for instance when executing "guix system init".

Introduce a new "invoke-with-log" procedure that is able to log a command
standard and error outputs to the syslog. Use it, only when running the
installation tests, to dump "run-command" output.

* gnu/installer/utils.scm (open-pipe-with-stderr, invoke-with-log): New
procedures,
(invoke-log-port): new variable,
(run-command): move to the end of the file and use invoke-with-log when
running the installation tests.
2020-06-09 10:32:19 +02:00
Mathieu Othacehe
7730f41afd
installer: final: Add some extra logging.
* gnu/installer/final.scm (kill-cow-users): Log the killed process name,
(umount-cow-store): inform that we are umounting the cow-store.
2020-06-05 09:04:23 +02:00