Commit Graph

66 Commits

Author SHA1 Message Date
Adriaan de Groot
eb4ffe737e [mount] Fix logic
- filter() returns the items for which the predicate is True;
  we want to keep the subvolumes that do not have an explicit
  partition already associated.
- need list() to hammer it back into a list for appending swap subvol.
2021-07-07 12:57:08 +02:00
Adriaan de Groot
e800b2da2d [mount] Factor out swap-subvolume setting 2021-07-06 16:48:46 +02:00
Adriaan de Groot
cc357140e5 [mount] Factor out the subvolume-filtering for partitions 2021-07-06 16:43:56 +02:00
Adriaan de Groot
6b2088c94e [mount] Restore @home subvolume
In 942221c764 the fixed-setup
(with /@ and /@home) was replaced by the configurable btrfs
layout, but the default went away. Restore the two-subvolume
layout if nothing is configured.
2021-07-06 15:34:13 +02:00
Adriaan de Groot
3531896892 [mount] Factor out the default btrfs configuration 2021-07-06 15:31:00 +02:00
Adriaan de Groot
846936357b [mount] If no btrfs layout at all, use something reasonable
This is related to https://invent.kde.org/neon/neon/calamares-settings/-/merge_requests/1
which adds .. the default things from the example configuration to the
configuration file KDE neon ships. The default layout doesn't add
any subvolumes at all, which seems to be non-functional.

If nothing is configured, complain and use /@ as the lone subvolume.
2021-06-15 20:43:44 +02:00
Chrysostomus
16eff98a06 Don't use f-strings yet. 2021-02-07 15:39:38 +02:00
Chrysostomus
0c92a36a53 Remove unnecessary comment 2021-02-07 15:29:30 +02:00
Chrysostomus
6d55005da0 Mount subvolumes to correct mountpoints 2021-02-07 00:16:26 +02:00
Chrysostomus
16bf7925a2 Adjust comments 2021-02-06 19:48:09 +02:00
Chrysostomus
1896a38ccc Fix a typo 2021-02-06 01:38:03 +02:00
Chrysostomus
1e0295dc65 Fix name error 2021-02-03 22:55:11 +02:00
Chrysostomus
fcf6e2fb25 fix typos 2021-02-02 23:07:35 +02:00
Chrysostomus
092374d08c Add modified list to global storage 2021-01-26 22:48:02 +02:00
Chrysostomus
f53f43ad03 Remove some unnecessary bits 2021-01-26 22:42:35 +02:00
Chrysostomus
4b6718b354 Further generalize subvolume handling 2021-01-26 22:35:42 +02:00
Chrysostomus
942221c764 Generalize subvolume handling 2021-01-26 22:24:50 +02:00
Chrysostomus
271122865f define global storage 2020-12-20 01:27:45 +02:00
Chrysostomus
727f7859b7 Mount @swap to /swap when needed 2020-12-07 22:59:29 +02:00
Chrysostomus
b180cbd47d Generate a subvolume for swap if swapfile is used 2020-12-07 22:52:39 +02:00
Gaël PORTAY
6e9ce7194f [mount] Ignore unformatted filesystems only
Mount guesses the filesystem if it is unset or if it is set to auto,
thanks to blkid. That is the case for the bind mountpoints like /dev or
/run/udev in mount.conf. See `mount(8)` for more details.
2020-11-06 07:38:48 -05:00
Gaël PORTAY
163351a803 [mount] Ignore empty or unformatted filesystems 2020-11-02 08:36:41 -05:00
Gaël PORTAY
c6feedf923 [mount] Ignore empty mountpoints 2020-11-02 08:36:41 -05:00
Gaël PORTAY
54fd1f4b26 [mount] Print a warning if mount failure
The return of the call to libcalamares.utils.mount is never tested and
it may fail silently; this causes some mounpoints to be missing.

This adds a warning if mountpoint cannot be mounted.

	chcon: failed to get security context of '/tmp/verity': Operation not supported
	06:44:23 [6]: static CalamaresUtils::ProcessResult CalamaresUtils::System::runCommand(CalamaresUtils::System::RunLocation, const QStringList&, const QString&, const QString&, std::chrono::seconds)
	    Running "env" ("mount", "-t", "unformatted", "/dev/sdb2", "/tmp/calamares-root-kv8dqgb5/tmp/verity")
	    ..  Finished. Exit code: 32
	    ..  Target cmd: ("mount", "-t", "unformatted", "/dev/sdb7", "/tmp/calamares-root-kv8dqgb5/tmp/verity") output:
	 mount: /tmp/calamares-root-kv8dqgb5/tmp/verity: unknown filesystem type 'unformatted'.
2020-11-02 08:36:41 -05:00
Adriaan de Groot
1cd9b93a22 REUSE: Giant boilerplate cleanup
- point to main Calamares site in the 'part of' headers instead
  of to github (this is the "this file is part of Calamares"
  opening line for most files).
- remove boilerplate from all source files, CMake modules and completions,
  this is the 3-paragraph summary of the GPL-3.0-or-later, which has
  a meaning entirely covered by the SPDX tag.
2020-08-26 02:28:38 +02:00
Adriaan de Groot
863a4cc2a4 REUSE: (GPL-3.0-or-later) Python modules 2020-08-26 02:22:49 +02:00
Adriaan de Groot
35fb8dcc27 [mount] Warn if chcon is missing, rather than fail
FIXES #1429
2020-06-09 13:24:12 +02:00
Adriaan de Groot
52af9dbaad [mount] Add docstrings to methods 2019-08-19 06:31:37 -04:00
Adriaan de Groot
395c375c60 [mount] Winnow partition list
- Simplify the iteration by first determining which partitions
   are mountable (at all).
 - This guards against the very rare case that a partition
   does not have a mountPoint at all (the if guarded against that)
   where the lambda passed to sort() would get a KeyError.
2019-08-19 06:28:32 -04:00
Arnaud Ferraris
257f5da1af mount: Use a single partitions list sorted by mount point
Instead of having a special case for extra mounts to be processed right
after the rootfs, a better approach is to add them to the partitions
list, and then sort the list by mount point.

This way, we make sure every partition is mounted right when it is
needed: `/` is obviously mounted first, `/run` is mounted before
`/run/udev`, and so on.

The overall process is therefore more generic and should suit all
use-cases.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-14 09:58:40 +02:00
Arnaud Ferraris
bf47e761b0 mount: Make sure extra mounts are mounted right after /
When the rootfs partition is read-only, mount points for the other
partitions cannot be created, therefore they need to be created in a
tmpfs, already mounted somewhere in `/`.

However, the extra mounts are only mounted at the end, which causes an
error as no tmpfs is currently mounted.

This patch makes sure all extra mounts are mounted right after the `/`
partition, allowing the use of a read-only rootfs.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-12 15:40:59 +02:00
Kevin Kofler
ecc32ab9b6 [mount] Update copyright notice 2019-05-09 13:52:13 +02:00
Kevin Kofler
34083344a4 mount: copy the SELinux context of the host directory to the mountpoint
On systems with SELinux enabled, we have to create the directories on
top of which we mount another partition or virtual file system (e.g.,
/dev) with the correct SELinux context, BEFORE we mount the other
partition. Otherwise, SELinux will get really confused when systemd
tries to recreate the mount tree for a private file system namespace for
a service. And unfortunately, even an autorelabel does not fix it
because it runs when /dev etc. are already mounted.

Without this fix, on Fedora >= 30, the system installed with Calamares
would fail to start the dbus-broker system bus, leading to several
important pieces of functionality not working (e.g., shutdown as
non-root).

On systems without SELinux enabled, chcon (which is part of coreutils)
will just print a warning and do nothing, so this should always be safe.
2019-05-09 13:50:31 +02:00
Adriaan de Groot
7d0874e23b [mount] Bail on bad config
- One might argue whether an empty list of partitions to mount is
   a bad thing. It suggests that the partition module wasn't used,
   and so we're in an OEM situation -- but then everything should
   already be mounted anyway. That's why I choose empty -> bail.
2019-04-28 14:36:56 -04:00
Adriaan de Groot
ff6a3608a6 [mount] [networkcfg] [openrcdmcryptcfg] Translate module name 2019-04-19 17:02:03 +02:00
Adriaan de Groot
e4d67b5572 [mount] Handle missing configuration keys gracefully
- If a key is missing from mount.conf, don't raise KeyError
 - If both keys are missing, suggest that mount.conf might
   be missing instead (a consequence of INSTALL_CONFIG=OFF, for
   instance).
 - Simplify code a bit.
 - Don't bother returning None explicitly.
2018-11-28 13:26:40 +01:00
Adriaan de Groot
762ad54344 Documentation: change http links to GitHub to https 2017-12-20 08:39:09 -05:00
Kai Dohmen
6f680c0269 Fix unknown partition-type Fat32 at mount and in fstab
Only the string "fat32" and "fat16" will be replaced with vfat. If an
case sensitive "Fat32" some problems occure:
- mount: partition cannot be mounted (e.g. a fat32 efi partition)
- fstab: system won't even boot because fstab does not know the type "Fat32"
2017-07-03 17:20:02 +02:00
Alf Gaida
5ed51bc5b0 reworked intendation 2017-06-02 19:58:36 +02:00
Alf Gaida
33b5cefebb Fixed pep8 whining in module mount
Added myself to copyright
2017-03-29 21:09:25 +02:00
Teo Mrnjavac
e9ecb64a36 Special case for Btrfs root: create subvolumes and mount them. 2016-11-11 16:47:08 +01:00
Teo Mrnjavac
db63109539 Mount correctly. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
5ddd0f523b Use luksMapperName as check. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
f861c13dad Improve LUKS check and use luksUuid instead of uuid. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
e1ee6e181a Proper check for luksMapperName key. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
f5f73fbd4d Use the mapper name to mount if it's a LUKS partition. 2016-05-06 18:59:51 +02:00
Gormogon
db7577b9f8 More PEP 2015-06-14 07:04:52 -04:00
Philip
016dd71db4 [mount] add python doc strings 2015-02-25 14:49:23 +01:00
Gormogon
113d9db7cb Python Better Docstrings 2015-02-25 14:49:23 +01:00
Gormogon
7989267e81 Unused Imports 2015-02-20 09:24:05 -05:00