Commit graph

228 commits

Author SHA1 Message Date
Gerd v. Egidy
06f9d9d397 Add sysctl option to the "sysconfig" scope of YAML config file
Allows to customize sysctl entries of the kernel from the yaml config.
2022-10-02 19:04:41 +02:00
Gerd v. Egidy
dcc27afc06 add mkpasswd: hash a password for use in /etc/shadow or htpasswd
mkpasswd is finally available packaged on Arch, so add it to allow
manually replacing a password in /etc/shadow, for when chroots or
pam don't work as wanted. Also supports advanced hash algos like
yescrypt that can't be set via the pam stack yet.

Because the source for mkpasswd is part of the whois package, it
is currently packaged as part of whois. But it might get it's own
package in the future, so add a check for /usr/bin/mkpasswd during
build time.
2022-09-15 20:58:33 +02:00
Gerd v. Egidy
c52dcbeeb0 mountall: show target mountpoint in output 2022-09-06 20:24:46 +02:00
Gerd v. Egidy
d8de1c8199 mountall: use udevadm settle to wait for newly opened cryptodisks to appear in /dev/mapper 2022-09-06 20:19:53 +02:00
Gerd v. Egidy
b0bd95a977 Add rclone option to the "sysconfig" scope of YAML config file
rclone needs a rclone.conf file before it can be used, it contains
the urls, login data and similar.

Use the sysconfig.rclone.config hierarchy instead of just sysconfig.rclone
to allow adding features later. These could be support for encrypted
rclone config files (these would then go into sysconfig.rclone.crypted_config)
or things like automounting.
2022-08-24 13:18:08 +02:00
Gerd v. Egidy
61cc03ea83 Merge branch 'lua-https-fix' into 'main'
don't do certificate verification for https downloads in the lua script

See merge request systemrescue/systemrescue-sources!227
2022-08-07 11:35:07 +00:00
Gerd v. Egidy
e9549eba34 don't do certificate verification for https downloads in the lua script
it is usually run during initramfs: we don't have a CA database there, so
all https downloads would fail otherwise.

Not doing cert verification at this step is clearly documented, so no
unexpected security risk for the user.
2022-08-07 12:56:41 +02:00
Gerd v. Egidy
81db3b13db improve error message in case the lua script can't download a file
Now prints the actual error message from the http library instead of a
generic "Could not connect" message.
2022-08-07 12:53:16 +02:00
Francois Dupoux
1e8ad8d465 Merge branch 'size-reduction' into 'main'
Remove files to reduce image size

See merge request systemrescue/systemrescue-sources!221
2022-08-06 14:08:25 +00:00
Gerd v. Egidy
533a4cab7e add cow_label and cow_directory options to the global scope of the yaml config file
Allows to set to set the persistent backing store options via the yaml config too and
not only through boot commandline options.
2022-08-05 22:05:02 +02:00
Gerd v. Egidy
c0cddfc630 add --readonly option to mountall 2022-08-01 22:40:48 +02:00
Gerd v. Egidy
e3b7b2079e use already existing mountpoints in mountall when they are empty and nothing mounted 2022-08-01 22:12:52 +02:00
Gerd v. Egidy
66e5801538 remove qt 5 and 6 translations to reduce image size
Qt 5 and 6 package translation files for common widgets that programs
can opt to use. These translation files take up about 2 MB of the final
iso image.

When the translations are removed, qt is designed to show messages
in the default language, English.

SystemRescue currently contains 2 programs using qt5 and qt6. I
tested both with the default en_US.UTF-8 and custom de_DE.UTF-8 locales:

featherpad: contains it's own complete translation. It's UI uses the
configured locale and it works regardless if the qt-translations are
installed or not.

yubikey-personalization-gui: doesn't use the translations at all and
is always shown in English. Removing the qt translations doesn't change
anything.

So programs coming with SystemRescue by default aren't affected. Also
other qt programs the user could install won't be affected. Only if the
user also changes the default locale, parts of some programs might be
now shown in English, like many other parts of SystemRescue that don't
come with translations.
2022-07-31 13:02:45 +02:00
Gerd v. Egidy
7a5acd23ed remove KeepassXC documentation to reduce image size
The KeepassXC documentation takes up 5 MB of final iso image size.
This is quite excessive.

Removing the documentation doesn't impair program usage. The documentation
can easily be accessed online from the KeepassXC website, it is directly
linked in the help menu.
2022-07-31 12:57:04 +02:00
Gerd v. Egidy
359083a0cc configure firefox as default browser in xfce 2022-07-31 12:31:24 +02:00
Gerd v. Egidy
4109b1ea38 add "nomdlvm" boot commandline option to not activate md raid or lvm devices
Activating md raid or lvm means that the kernel changes the metadata like
timestamps and mount counts of the devices and writes them to disk.
Also reconstructing degraded md raid devices is automatically activated.
There are cases when writing to disks is absolutely not wanted. For example
when restoring data from broken disks or when doing forensics.

The nomdlvm boot commandline option prevents any activation and thus
not wanted writes. If the user wants to use md or lvm with the option
set, all md or lvm devices have to be manually found and activated.

nomdlvm is only implemented as boot commandline option and does not use
the YAML config file. The reason is that the udev rules are evaluated
before sysrescue-configuration.lua is run, so the YAML config is not
ready yet. Moving nomdlvm after sysrescue-configuration.lua would be
an invasive operation and modify the activation order of all md and lvm
devices for all cases, increasing the probability of regressions.
Also udev rules offer a direct access to boot commandline options, making
implementation straightforward and robust.
2022-07-27 22:27:11 +02:00
Gerd v. Egidy
9a0e4acd16 deliver SystemRescue with an already initialized pacman key database
Initializing the pacman key database during boot can take considerable time
and there is no locking during this time against concurrent file access.
This can lead to problems when installing packages soon after reboot.
This also speeds up the boot process.

Additional disk space requirement is about 1 MByte.

Fixes #290
2022-07-24 23:11:11 +02:00
Gerd v. Egidy
09fcf3a452 improve check if already mounted for btrfs filesystems in mountall 2022-07-24 19:56:47 +02:00
Gerd v. Egidy
f38c7ba8ca detect and open LUKS encrypted devices in mountall 2022-07-24 19:46:56 +02:00
Gerd v. Egidy
2d8bb769c1 use /sys/class/block instead of /sys/block in mountall to get all partitions 2022-07-24 19:13:47 +02:00
Gerd v. Egidy
c0a1af428a don't try to mount swap space in mountall 2022-07-24 19:07:04 +02:00
Gerd v. Egidy
3e41c00fc4 allow to configure bookmarks for Firefox in the "sysconfig" scope of the yaml config file 2022-06-08 22:35:55 +02:00
Gerd v. Egidy
40aeaea9be apply sysconfig.ca-trust to Firefox too
Firefox doesn't use the system CA database but has it's own. Use the
policies.json file to let Firefox trust the entries from the
sysconfig.ca-trust of the YAML config too.
2022-06-08 21:33:54 +02:00
Gerd v. Egidy
95f9d88922 add a default config file to prevent remmina from showing an annoying popup on start 2022-06-08 20:54:22 +02:00
Gerd v. Egidy
815ae32dde fix parsing command line option when there is no default yaml file at all 2022-06-06 12:36:16 +02:00
Gerd v. Egidy
49ea71d62b add yaml config option to add ssh authorized_keys (sysconfig.authorized_keys) 2022-06-04 23:05:22 +02:00
Gerd v. Egidy
919914d48b add yaml config option to set timezone (sysconfig.timezone) 2022-06-04 19:09:44 +02:00
Gerd v. Egidy
64eabbbbaa wait until we are online before doing a http/https load-srm
There is no dependency on NetworkManager being actually online when
sysrescue-initialize.py calls load-srm to honor the late_load_srm config
option. So without this patch this can fail when the network takes a
few seconds until the link is actually up.

Fixes #288
2022-06-04 17:10:43 +02:00
Gerd v. Egidy
ca74778681 show output of sysrescue-initialize.py on the boot console
show it immediately, not when the buffer is full. This also yields proper
timestamps in the journal in case some part of it takes longer to complete.
2022-06-04 17:08:53 +02:00
Gerd v. Egidy
36dc530a50 Properly cast floats to booleans in sysrescue-autorun and sysrescue-initialize.py
When the lua script parses the YAML config, it converts a `1` to `1.0` because in
lua all numbers are floats. So it writes out `1.0`, which is then loaded by the
python scripts later. Make the type conversion for booleans aware of this.

This allows to write something like `ar_disable: 1` in the YAML and have it
acted upon as expected.
2022-05-22 21:14:01 +02:00
Gerd v. Egidy
cecd6946ff sysrescue-autorun: improve type casting for booleans
The recently implemented type casting code doesn't work intuitively for
booleans: for example it treats a string "0" as False and doesn't show
an error message for it. So the user might be unaware of this.

So add a dedicated conversion function for booleans.

Also add checks for conversions from dicts and lists, forbid to cast them
to strings because that is most probably not what the user wants.
2022-05-22 15:49:10 +02:00
Gerd v. Egidy
afb77e30c5 sysrescue-initialize.py: Ensure the values given in the config file have the correct types
With the new config file merging the user could accidently overwrite the
config values with wrong types, for example a boolean with a dict or list.
This could lead to the script aborting with an exception.

Use explicit type casting and default values to ensure correct operation
in this case. This is the same as recently implemented for autorun.

Implement a dedicated conversion function for booleans to for example
treat a string "0" as False, python by default would interpret it as True.
2022-05-22 15:43:10 +02:00
pfeilmann
ca084e664f caste the config with the same type as the defaultval 2022-05-22 10:23:59 +00:00
Gerd v. Egidy
ae8a15c2b2 Merge branch 'autoterminal' into 'main'
implement autoterminal: automatically started scripts that take over a virtual terminal for user interaction

See merge request systemrescue/systemrescue-sources!196
2022-05-21 20:21:03 +00:00
Gerd v. Egidy
4daea6433e Add workaround for systemd not re-evaluating dependencies while running a transaction
As described in #279, systemd does not re-evaluate the dependencies of changed units and
targets when daemon-reload is executed. It just continues it's transaction as it was
configured when starting the transaction.

So a late-loaded SRM can't autostart a service.

To work around this, add an extra call to "systemctl --no-block start multi-user.target"
after the daemon-reload. This will create a new transaction after the current one and
allow new services to be added to multi-user.target in a late-loaded SRM.

This means of course that this workaround only works for multi-user.target, not other
services or targets.
2022-05-21 21:41:39 +02:00
Gerd v. Egidy
c2060e8a73 implement handling of serial consoles for autoterminal
serial consoles have separate systemd services (serial-getty@.service). We need to adapt
the handling and also need some different options for them than for regular gettys.

To allow sysrescue-initialize.py to differentiate between regular consoles and serial ones
they must be configured with the prefix "serial:" in the yaml, for example like this:

autoterminal:
    "serial:ttyS0": "/usr/bin/bash"
2022-05-12 22:53:57 +02:00
Gerd v. Egidy
c3b0b576a4 Implement main part of autoterminal feature
See #258
2022-05-12 22:51:48 +02:00
Gerd v. Egidy
845fd55243 rename systemd getty drop-in files: add numbering for easier overriding (they are loaded in lexicographic order) 2022-05-12 21:10:06 +02:00
Francois Dupoux
eb536c5a06 Merge branch 'workspace-count' into 'main'
xfwm4: Reduce number of default workspaces from 4 to 1.

See merge request systemrescue/systemrescue-sources!195
2022-05-09 11:30:15 +00:00
Francois Dupoux
31dc85c0b3 Merge branch 'mountall' into 'main'
add "mountall" command

See merge request systemrescue/systemrescue-sources!194
2022-05-09 11:27:06 +00:00
Francois Dupoux
cfcfd6dd7a Merge branch 'lua-config-once' into 'main'
execute sysrescue-configuration.lua only once

See merge request systemrescue/systemrescue-sources!193
2022-05-09 11:26:49 +00:00
ProtoFoo
f733e32f0c xfwm4: Reduce number of default workspaces from 4 to 1. 2022-04-30 01:55:27 +02:00
Gerd v. Egidy
e87660beeb execute sysrescue-configuration.lua only once
Before this patch sysrescue-configuration.lua was executed twice each boot:
(1) during initramfs stage (2) in the regular system as sysrescue-configuration.service

While in theory both runs should create the same output, this isn't guaranteed and
differences could appear for example because of network issues. Finding and debugging
these is difficult because the output of sysrescue-configuration.lua created during
initramfs isn't available anymore when the final system is running.

This patch lets sysrescue-configuration.lua just run once during initramfs. The
output JSON file is then written to the new tmpfs mounted dir /run/archiso/config/.
This dir is also made the new default location for sysrescue-effective-config.json.

A symlink from /etc/sysrescue/sysrescue-effective-config.json to the new location
is created for compatibility with previous releases.
2022-04-25 20:31:18 +02:00
Gerd v. Egidy
a424ed7991 add "mountall" command
It loops through all available block devices in the system and tries to mount them.
They are mounted to /mnt/<devicename>.

If they have "dev", "proc" or "sys" dirs in them, then the respective dirs of the
running SystemRescue are bind-mounted into it. This allows running some commands
like grub-install when chrooting into the dir.
2022-04-24 21:53:21 +02:00
Gerd v. Egidy
b11a052e69 change logic of the sysrescuecfg boot command line option: merge instead of replace
When you set a "sysrescuecfg" option on the boot command line before this change,
only the files given on the boot command line were read, not the files in the
sysrescue.d dir. But previous versions of sysrescue-configuration.lua had a set of
built-in default values, these were still used.

Current sysrescue-configuration.lua does not include default values anymore, they
are now all in 100-defaults.yaml. So it is better to always read the default values
from the sysrescue.d dir and just merge files given with the sysrescuecfg option
additionally, with a higher priority.

The sysrescuecfg now also allows absolute paths for local files. When using relative
paths, the common sysrescue.d dirs are prefixed. In this case the file will usually
be loaded again, but at a higher priority.
2022-04-24 01:52:43 +02:00
Gerd v. Egidy
8cb9d2de6b harden sysrescue-autorun sysrescue-initialize.py against missing config values
Until now sysrescue-configuration.lua always ensured the default values were
in the effective JSON config because there was no way to remove them. Now the
lua script is improved to allow full config merging, including a delete function.
This could lead to the user accidently removing a value. The scripts did not
expect this and accessed non existing keys, leading to an exception.

This is fixed with this commit.
2022-04-24 01:08:27 +02:00
Gerd v. Egidy
24529bbb58 change yaml config loading logic to full merge
Previously when loading a YAML config, it overrode single values on the second hierarchy level.
But on all deeper levels new values were completely overwritten. This was inconsistent and poses
a problem for config entries that use these levels, like the ca-trust or the in-development autoterminal.

This change implements full merging of dictionaries on all levels to solve this. Values in files later
in precedence overwrite previous values. If the the old and the new config values are both dictionaries,
then the hierarchy levels are merged down recursively.

You can remove a previously existing dict entry again in a later file by assigning it an empty value.

Also fix handling of invalid YAMLs: ignore them instead of aborting execution
2022-04-23 23:18:23 +02:00
Gerd v. Egidy
b614840213 store the "setkmap" command in bash_history to make it accessible without typing
When the correct keyboard map is not set yet, it might be difficult for the user
to type in the command. This way they just have to press the arrow up key to reach it.

Fixes #273
2022-04-10 21:56:01 +02:00
Francois Dupoux
770fc6bf15 Update check-binaries.sh script with new custom packages 2022-04-10 18:58:54 +01:00
Gerd v. Egidy
a100257d96 Add script and config.yaml parameter for late-loading of SystemRescueModules 2022-03-27 14:07:38 +00:00