Commit Graph

115 Commits

Author SHA1 Message Date
Chrysostomus
942221c764 Generalize subvolume handling 2021-01-26 22:24:50 +02:00
Chrysostomus
945effb048 Amend subvolumes to include path 2021-01-26 22:13:29 +02:00
Chrysostomus
b5cfa5109e Add schema definition 2021-01-26 21:34:11 +02:00
Chrysostomus
4ab30569c2 Add default configuration 2021-01-26 21:31:33 +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
1b23520f20 REUSE: (CC0-1.0) module descriptors and configuration files
In spite of there being considerable documentation sometimes in the
config file, we go with CC0 because we don't want the notion of
'derived work' of a config file.

The example `settings.conf` is also CC0. Add some docs to
it while we're at it.
2020-08-26 02:22:49 +02:00
Adriaan de Groot
2eecd431fe REUSE: (CC0-1.0) test data
There's lots of (YAML) test data that is just trivial configurations
for modules. Since the configurations themselves are **also** CC0-1.0,
and the tests are less interesting, license them equally liberally.
2020-08-26 02:05:46 +02:00
Adriaan de Groot
86f66e8f16 REUSE: (GPL-3.0-or-later) all the schema files
- these are vaguely derived from the schema's written by
  artoo@manjaro.org, but totally re-done for JSON-Schema
2020-08-26 02:01:58 +02:00
Adriaan de Groot
050d74b4be Fix YAML schemas for all the remaining config files 2020-08-12 10:29:24 +02:00
Adriaan de Groot
4a07bd4ae3 CI: import all the rest of the YAML schema
- These have **not** been fixed for validation, so the schema's themselves
  will fail to load. This is a consequence of variations in JSON-Schema
  representations through various drafts. Fixing the schemata is
  fairly straightforward.

This gives us 19 new tests, all of which fail.
2020-06-16 16:06:56 +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
1eede6f797 [modules] Configuration documentation for mount and luksopenswaphookcfg 2018-06-26 06:50:16 -04: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
93cf5acea4 Bind-mount /run/udev in the chroot by default.
NOTE: this is absolutely necessary for grub-mkconfig's os-prober
instance to work.
2016-11-08 11:18:19 +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
Daniel Hillenbrand
e4daf45c71 mount: mount efivarfs on /sys/firmware/efi/efivars
No need to bind sys to /sys/firmware/efi since it is already preset.
2015-05-01 10:42:06 +02: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
Gormogon
d8df3d7a59 [PEP 8] General Style Part 1 2015-02-18 09:37:03 -05:00
Gormogon
8e1480431a [PEP 263] Corrected Encoding Headers 2015-02-18 09:06:10 -05:00
Kevin Kofler
e6d65d047b Fix unpackfs wrongly excluding separately-mounted partitions.
mount: Remember the extraMounts (and extraMountsEfi, if applicable) in
the global storage (as "extraMounts").

unpackfs: Read the extra mounts from the global storage to generate the
exclude list instead of trying to detect it from the "mount" command's
output, because the latter also includes normally-mounted destination
partitions.

This makes having separate partitions for non-/ mountpoints work again.
2014-12-05 00:17:33 +01:00
Kevin Kofler
210685a15d mount: Fix /run mount.
It turns out that I had messed this up. Issue #173 was addressed anyway
by the followup fix to unpackfs to only exclude the directories that are
actually mounted (which does work), but with this fix, /run is now
handled as intended.

PS: Should the mount job not check the return value of
libcalamares.utils.mount instead of failing silently?
2014-11-29 05:07:40 +01:00
Kevin Kofler
96d863b22b mount: Mount /run as a tmpfs in the rootMountPoint.
In particular, this also ensures that the directory gets created on the
target system so things can be mounted into it.

Fixes #173.
2014-11-28 18:03:58 +01:00
demmm
c1a1399958 adding new bootloader job
options are to use grub for BIOS, gummiboot for efi
set extra mountpoint when efi is found
2014-10-12 13:45:02 -04:00
Teo Mrnjavac
51d12b2b35 The vfat driver apparently supports FAT16 too, be consistent. 2014-10-07 16:07:28 +02:00
Teo Mrnjavac
482b2c0da2 Fix fstype names for mount -t syntax. 2014-10-07 16:07:28 +02:00
Teo Mrnjavac
8f10c21e5b Big configuration overhaul.
Module descriptors are now module.desc, no configuration allowed inside.
Module config files are <modulename>.conf, installed in
share/calamares/modules.
settings.conf is read from /etc/calamares, then share/calamares, and if
running with --debug also in the current dir.
Module config files are read from /etc/calamares/modules, then
share/calamares/modules, and if running with --debug also in
src/modules/<modulename> relative to the current dir.
2014-08-06 11:54:45 +02:00
Aurélien Gâteau
9708669ac7 Use libcalamares.utils.mount 2014-07-30 15:37:34 +02:00
Aurélien Gâteau
0946789f9e Move mounting of special partitions from grub to mount 2014-07-30 15:37:11 +02:00
Teo Mrnjavac
2ba96d3b6b PEPify mount 2014-07-29 14:45:58 +02:00
Teo Mrnjavac
4fc2efb7fa Correctly report exit status from Python modules. 2014-07-28 17:40:57 +02:00
Teo Mrnjavac
beafcd9cc4 Consistency: calamares_main ==> run; global_storage => globalStorage 2014-07-25 16:46:12 +02:00
Aurélien Gâteau
20521f278c Update doc 2014-07-24 17:51:51 +02:00
Aurélien Gâteau
545eef5761 Refactor mount module to make its code easier to reuse 2014-07-24 17:14:56 +02:00
Aurélien Gâteau
aef2b7e9e7 We can now test mount with testmodule.py: remove the test main() 2014-07-24 10:17:46 +02:00
Aurélien Gâteau
35d2a10177 Remove \t tab to avoid failure in testmodule.py 2014-07-24 10:16:51 +02:00
Aurélien Gâteau
484d7c4d15 Update partition path after partition has been created
Fixes #56
2014-07-23 14:34:06 +02:00
Aurélien Gâteau
0234415976 Add "mount" module 2014-07-22 17:38:36 +02:00