As already announced for several years.
random-seed:
- changed-files:
- any-glob-to-any-file: '**/*random-seed*'
-rc-local-generator:
- - changed-files:
- - any-glob-to-any-file: 'src/rc-local-generator/*'
remount-fs:
- changed-files:
- any-glob-to-any-file: '**/*remount-fs*'
1. Find the right configure parameters for:
- * `-Drc-local=`
* `-Dloadkeys-path=`
* `-Dsetfont-path=`
* `-Dtty-gid=`
<!ENTITY KILL_USER_PROCESSES "{{ 'yes' if KILL_USER_PROCESSES else 'no' }}">
<!ENTITY JOURNAL_STORAGE_DEFAULT "{{JOURNAL_STORAGE_DEFAULT}}">
<!ENTITY DEBUGTTY "{{DEBUGTTY}}">
-<!ENTITY SYSTEM_SYSVRCLOCAL_PATH "{{SYSTEM_SYSVRCLOCAL_PATH}}">
<!ENTITY HIGH_RLIMIT_NOFILE "{{HIGH_RLIMIT_NOFILE}}">
<!ENTITY DEFAULT_DNSSEC_MODE "{{DEFAULT_DNSSEC_MODE_STR}}">
<!ENTITY DEFAULT_DNS_OVER_TLS_MODE "{{DEFAULT_DNS_OVER_TLS_MODE_STR}}">
'8',
['systemd-random-seed'],
'ENABLE_RANDOMSEED'],
- ['systemd-rc-local-generator',
- '8',
- ['rc-local.service'],
- 'HAVE_SYSV_RC_LOCAL'],
['systemd-remount-fs.service', '8', ['systemd-remount-fs'], ''],
['systemd-repart', '8', ['systemd-repart.service'], 'ENABLE_REPART'],
['systemd-resolved.service', '8', ['systemd-resolved'], 'ENABLE_RESOLVE'],
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % entities SYSTEM "custom-entities.ent" >
-%entities;
-]>
-<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
-
-<refentry id="systemd-rc-local-generator" conditional='HAVE_SYSV_RC_LOCAL'>
- <refentryinfo>
- <title>systemd-rc-local-generator</title>
- <productname>systemd</productname>
- </refentryinfo>
-
- <refmeta>
- <refentrytitle>systemd-rc-local-generator</refentrytitle>
- <manvolnum>8</manvolnum>
- </refmeta>
-
- <refnamediv>
- <refname>systemd-rc-local-generator</refname>
- <refname>rc-local.service</refname>
- <refpurpose>Compatibility generator and service to start <filename>&SYSTEM_SYSVRCLOCAL_PATH;</filename> during boot</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <para><filename>/usr/lib/systemd/system-generators/systemd-rc-local-generator</filename></para>
- <para><filename>rc-local.service</filename></para>
- </refsynopsisdiv>
-
- <refsect1>
- <title>Description</title>
-
- <para><command>systemd-rc-local-generator</command> is a generator that checks whether
- <filename>&SYSTEM_SYSVRCLOCAL_PATH;</filename> exists and is executable, and if it is, pulls the
- <filename>rc-local.service</filename> unit into the boot process. This unit is responsible for running
- this script during late boot. The script is run after <filename>network.target</filename>, but in
- parallel with most other regular system services.</para>
-
- <para>Note that <filename>rc-local.service</filename> runs with slightly different semantics than the
- original System V version, which was executed "last" in the boot process, which is a concept that does
- not translate to systemd.</para>
-
- <para>Also note that <filename>rc-local.service</filename> is ordered after
- <filename>network.target</filename>, which does not mean that the network is functional, see
- <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
- If the script requires a configured network connection, it may be desirable to pull in and order it after
- <filename>network-online.target</filename> with a drop-in:</para>
-
- <programlisting># /etc/systemd/system/rc-local.service.d/network.conf
-[Unit]
-Wants=network-online.target
-After=network-online.target
-</programlisting>
-
- <para>Support for <filename>&SYSTEM_SYSVRCLOCAL_PATH;</filename> is provided for compatibility with specific
- System V systems only. However, it is strongly recommended to avoid using this script today, and instead
- provide proper unit files with appropriate dependencies for any scripts to run during the boot process.
- Note that the path to the script is set at compile time and varies between distributions.</para>
-
- <para><filename>systemd-rc-local-generator</filename> implements
- <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
- </refsect1>
-
- <refsect1>
- <title>Notes</title>
-
- <para>On systems with SELinux, when creating the file, make sure to set the appropriate context, e.g.
- with "<command>sudo restorecon -v &SYSTEM_SYSVRCLOCAL_PATH;</command>".
- </para>
- </refsect1>
-
- <refsect1>
- <title>See Also</title>
- <para><simplelist type="inline">
- <member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
- </simplelist></para>
- </refsect1>
-</refentry>
<member><citerefentry><refentrytitle>systemd-getty-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>systemd-rc-local-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-xdg-autostart-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
have_standalone_binaries = get_option('standalone-binaries')
-sysvrclocal_path = get_option('rc-local')
-conf.set10('HAVE_SYSV_RC_LOCAL', sysvrclocal_path != '')
conf.set10('CREATE_LOG_DIRS', get_option('create-log-dirs'))
if get_option('hibernate') and not get_option('initrd')
conf.set_quoted('SYSTEM_PRESET_DIR', systempresetdir)
conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
-conf.set_quoted('SYSTEM_SYSVRCLOCAL_PATH', sysvrclocal_path)
conf.set_quoted('SYSUSERS_DIR', sysusersdir)
conf.set_quoted('TMPFILES_DIR', tmpfilesdir)
conf.set_quoted('USER_TMPFILES_DIR', usertmpfilesdir)
subdir('src/ptyfwd')
subdir('src/quotacheck')
subdir('src/random-seed')
-subdir('src/rc-local-generator')
subdir('src/remount-fs')
subdir('src/repart')
subdir('src/reply-password')
'sysconf directory' : sysconfdir,
'include directory' : includedir,
'lib directory' : libdir,
- 'SysV rc.local script' : sysvrclocal_path,
'PAM modules directory' : pamlibdir,
'PAM configuration directory' : pamconfdir,
'ssh server configuration directory' : sshdconfdir,
description : 'This option is deprecated and will be removed in a future release')
option('sysvrcnd-path', type : 'string', value : '/etc/rc.d', deprecated : true,
description : 'This option is deprecated and will be removed in a future release')
-option('rc-local', type : 'string', value : '/etc/rc.local',
+option('rc-local', type : 'string', value : '/etc/rc.local', deprecated : true,
description : 'path to SysV rc.local script')
option('initrd', type : 'boolean',
description : 'install services for use when running systemd in initrd')
systemd-networkd-debuginfo
systemd-portable-debuginfo
systemd-resolved-debuginfo
- systemd-sysvcompat-debuginfo
systemd-testsuite-debuginfo
udev-debuginfo
-e '/(initctl|runlevel|telinit)/ d' \
-e 's/systemd-quotacheck.service.8/systemd-quotacheck@.service.8/' \
-e '/systemd-sysv-generator/d' \
+ -e '/rc-local/d' \
"$filelist" >"/tmp/$(basename "$filelist")"
mount --bind "/tmp/$(basename "$filelist")" "$filelist"
done < <(find "pkg/$PKG_SUBDIR${GIT_SUBDIR:+/$GIT_SUBDIR}" -name "files.*")
+++ /dev/null
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-executables += [
- generator_template + {
- 'name' : 'systemd-rc-local-generator',
- 'sources' : files('rc-local-generator.c'),
- 'conditions' : [
- 'HAVE_SYSV_RC_LOCAL',
- ],
- },
-]
+++ /dev/null
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-
-#include <unistd.h>
-
-#include "generator.h"
-#include "initrd-util.h"
-#include "log.h"
-#include "mkdir-label.h"
-#include "string-util.h"
-
-static const char *arg_dest = NULL;
-
-/* So you are reading this, and might wonder: why is this implemented as a generator rather than as a plain, statically
- * enabled service that carries appropriate ConditionFileIsExecutable= lines? The answer is this: conditions bypass
- * execution of a service's binary, but they have no influence on unit dependencies. Thus, a service that is
- * conditioned out will still act as synchronization point in the dependency tree, and we'd rather not have that for
- * these two legacy scripts. */
-
-static int add_symlink(const char *service, const char *where) {
- const char *from, *to;
-
- assert(service);
- assert(where);
-
- from = strjoina(SYSTEM_DATA_UNIT_DIR "/", service);
- to = strjoina(arg_dest, "/", where, ".wants/", service);
-
- (void) mkdir_parents_label(to, 0755);
-
- if (symlink(from, to) < 0) {
- if (errno == EEXIST)
- return 0;
-
- return log_error_errno(errno, "Failed to create symlink %s: %m", to);
- }
-
- return 1;
-}
-
-static int check_executable(const char *path) {
- assert(path);
-
- if (access(path, X_OK) < 0) {
- if (errno == ENOENT)
- return log_debug_errno(errno, "%s does not exist, skipping.", path);
- if (errno == EACCES)
- return log_info_errno(errno, "%s is not marked executable, skipping.", path);
-
- return log_warning_errno(errno, "Couldn't determine if %s exists and is executable, skipping: %m", path);
- }
-
- return 0;
-}
-
-static int run(const char *dest, const char *dest_early, const char *dest_late) {
- int r = 0, k = 0;
-
- assert_se(arg_dest = dest);
-
- if (in_initrd()) {
- log_debug("Skipping generator, running in the initrd.");
- return EXIT_SUCCESS;
- }
-
- if (check_executable(SYSTEM_SYSVRCLOCAL_PATH) >= 0) {
- log_debug("Automatically adding rc-local.service.");
-
- r = add_symlink("rc-local.service", "multi-user.target");
- }
-
- return r < 0 ? r : k;
-}
-
-DEFINE_MAIN_GENERATOR_FUNCTION(run);
for unit_file in "${UNIT_FILES[@]}"; do
# Skip the check for a couple of units, namely:
# - syslog.socket: the corresponding syslog.service might not be installed
- # - rc-local.service: compat API, /etc/rc.d/rc.local most likely won't be present
- if [[ "$unit_file" =~ /(syslog.socket|rc-local.service)$ ]]; then
+ if [[ "$unit_file" =~ /syslog.socket$ ]]; then
continue
fi
Description=Console Getty
Documentation=man:agetty(8) man:systemd-getty-generator(8)
After=systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
-{% if HAVE_SYSV_RC_LOCAL %}
-After=rc-local.service
-{% endif %}
Before=getty.target
# OCI containers may be run without a console
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=man:machinectl(1)
After=systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
-{% if HAVE_SYSV_RC_LOCAL %}
-After=rc-local.service
-{% endif %}
Before=getty.target
IgnoreOnIsolate=yes
ConditionPathExists=/dev/pts/%I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=https://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
-{% if HAVE_SYSV_RC_LOCAL %}
-After=rc-local.service
-{% endif %}
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
'file' : 'quotaon-root.service.in',
'conditions' : ['ENABLE_QUOTACHECK'],
},
- {
- 'file' : 'rc-local.service.in',
- 'conditions' : ['HAVE_SYSV_RC_LOCAL'],
- },
{
'file' : 'reboot.target',
'symlinks' : ['ctrl-alt-del.target'],
+++ /dev/null
-# SPDX-License-Identifier: LGPL-2.1-or-later
-#
-# This file is part of systemd.
-#
-# systemd is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-
-# This unit gets pulled automatically into multi-user.target by
-# systemd-rc-local-generator if {{SYSTEM_SYSVRCLOCAL_PATH}} is executable.
-[Unit]
-Description={{SYSTEM_SYSVRCLOCAL_PATH}} Compatibility
-Documentation=man:systemd-rc-local-generator(8)
-ConditionFileIsExecutable={{SYSTEM_SYSVRCLOCAL_PATH}}
-After=network.target
-
-[Service]
-Type=forking
-ExecStart={{SYSTEM_SYSVRCLOCAL_PATH}} start
-TimeoutSec=infinity
-RemainAfterExit=yes
-GuessMainPID=no
Documentation=https://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
-{% if HAVE_SYSV_RC_LOCAL %}
-After=rc-local.service
-{% endif %}
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though