Preset user units on first boot as well

We need to make sure the presets from /usr/lib/systemd/user-preset
are applied as well. Currently only the ones from
/usr/lib/systemd/system-preset are applied.
This commit is contained in:
Daan De Meyer
2024-09-19 09:16:14 +02:00
committed by Yu Watanabe
parent bfa834f138
commit 0a40325573
2 changed files with 13 additions and 6 deletions

3
NEWS
View File

@@ -73,6 +73,9 @@ CHANGES WITH 257 in spe:
Service and system management:
* Global user units are now enabled or disabled based on preset files
on first boot as well just like system units are already.
* Environment variable $REMOTE_ADDR is now set when using socket
activation for AF_UNIX sockets.

View File

@@ -1936,12 +1936,16 @@ static void manager_preset_all(Manager *m) {
UnitFilePresetMode mode =
ENABLE_FIRST_BOOT_FULL_PRESET ? UNIT_FILE_PRESET_FULL : UNIT_FILE_PRESET_ENABLE_ONLY;
r = unit_file_preset_all(RUNTIME_SCOPE_SYSTEM, 0, NULL, mode, NULL, 0);
if (r < 0)
log_full_errno(r == -EEXIST ? LOG_NOTICE : LOG_WARNING, r,
"Failed to populate /etc with preset unit settings, ignoring: %m");
else
log_info("Populated /etc with preset unit settings.");
RuntimeScope scope;
FOREACH_ARGUMENT(scope, RUNTIME_SCOPE_SYSTEM, RUNTIME_SCOPE_GLOBAL) {
r = unit_file_preset_all(scope, 0, NULL, mode, NULL, 0);
if (r < 0)
log_full_errno(r == -EEXIST ? LOG_NOTICE : LOG_WARNING, r,
"Failed to populate /etc with %s preset unit settings, ignoring: %m", runtime_scope_to_string(scope));
else
log_info("Populated /etc with %s preset unit settings.", runtime_scope_to_string(scope));
}
}
static void manager_ready(Manager *m) {