diff --git a/man/systemd.generator.xml b/man/systemd.generator.xml index 7ed6a2dc82..a41e43df0f 100644 --- a/man/systemd.generator.xml +++ b/man/systemd.generator.xml @@ -76,14 +76,33 @@ Description - Generators are small executables that live in &systemgeneratordir;/ and other - directories listed above. - systemd1 will execute those - binaries very early at bootup and at configuration reload time — before unit files are loaded. Generators may - dynamically generate unit files (regular ones, instances as well as templates) and unit file - .d/ drop-ins, or create symbolic links to unit files to add additional dependencies or - instantiate existing templates, thus extending or overriding existing definitions. Their main purpose is to convert - configuration files that are not native unit files dynamically into native unit files. + Generators are small executables that live in + &systemgeneratordir;/ and other directories listed above. + systemd1 + will execute those binaries very early at bootup and at configuration reload time + — before unit files are loaded. Their main purpose is to convert configuration + that is not native into dynamically generated unit files. + + Each generator is called with three directory paths that are to be used for + generator output. In these three directories, generators may dynamically generate + unit files (regular ones, instances, as well as templates), unit file + .d/ drop-ins, and create symbolic links to unit files to add + additional dependencies, create aliases, or instantiate existing templates. Those + directories are included in the unit load path of + systemd1, + allowing generated configuration to extend or override existing + definitions. + + Directory paths for generator output differ by priority: + …/generator.early has priority higher than the admin + configuration in /etc, while + …/generator has lower priority than + /etc but higher than vendor configuration in + /usr, and …/generator.late has priority + lower than all other configuration. See the next section and the discussion of + unit load paths and unit overriding in + systemd.unit5. + Generators are loaded from a set of paths determined during compilation, as listed above. System and user generators are loaded @@ -110,40 +129,45 @@ - Writing generators + Output directories - Generators are invoked with three arguments: paths to - runtime directories where generators can place their generated - unit files or symlinks. + Generators are invoked with three arguments: paths to directories where + generators can place their generated unit files or symlinks. By default those + paths are runtime directories that are included in the search path of + systemd, but a generator may be called with different paths + for debugging purposes. normal-dir - argv[1] may be used to override unit files in - /usr, but not those in - /run or in /etc. - This means that unit files placed - in this directory take precedence over vendor unit - configuration but not over native user/administrator unit - configuration. + In normal use this is /run/systemd/generator in + case of the system generators and + $XDG_RUNTIME_DIR/generator in case of the user + generators. Unit files placed in this directory take precedence over vendor + unit configuration but not over native user/administrator unit configuration. + early-dir - argv[2] may be used to override unit files in - /usr, in /run and in - /etc. This means that unit files placed - in this directory take precedence over all configuration, - both vendor and user/administrator. + In normal use this is /run/systemd/generator.early + in case of the system generators and + $XDG_RUNTIME_DIR/generator.early in case of the user + generators. Unit files placed in this directory override unit files in + /usr, /run and + /etc. This means that unit files placed in this + directory take precedence over all normal configuration, both vendor and + user/administrator. late-dir - argv[3] may be used to extend the unit file tree without - overriding any other unit files. Any native configuration - files supplied by the vendor or user/administrator take - precedence over the generated ones placed in this directory. - + In normal use this is /run/systemd/generator.late + in case of the system generators and + $XDG_RUNTIME_DIR/generator.late in case of the user + generators. This directory may be used to extend the unit file tree without + overriding any other unit files. Any native configuration files supplied by + the vendor or user/administrator take precedence. diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 90ca378e84..0e27c5dd8e 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -65,19 +65,31 @@ slice.slice, scope.scope - /etc/systemd/system/* + /etc/systemd/system.control/* +/run/systemd/system.control/* +/run/systemd/transient/* +/run/systemd/generator.early/* +/etc/systemd/system/* /run/systemd/system/* -/usr/lib/systemd/system/* +/run/systemd/generator/* +/usr/lib/systemd/system/* +/run/systemd/generator.late/* - ~/.config/systemd/user/* + ~/.config/systemd/user.control/* +$XDG_RUNTIME_DIR/systemd/user.control/* +$XDG_RUNTIME_DIR/systemd/transient/* +$XDG_RUNTIME_DIR/systemd/generator.early/* +~/.config/systemd/user/* /etc/systemd/user/* $XDG_RUNTIME_DIR/systemd/user/* /run/systemd/user/* +$XDG_RUNTIME_DIR/systemd/generator/* ~/.local/share/systemd/user/* -/usr/lib/systemd/user/* +/usr/lib/systemd/user/* +$XDG_RUNTIME_DIR/systemd/generator.late/* @@ -342,6 +354,22 @@ + + /etc/systemd/system.control + Persistent and transient configuration created using the dbus API + + + /run/systemd/system.control + + + /run/systemd/transient + Dynamic configuration for transient units + + + /run/systemd/generator.early + Generated units with high priority (see early-dir in system.generator7) + /etc/systemd/system Local configuration @@ -350,9 +378,22 @@ /run/systemd/system Runtime units + + /run/systemd/generator + Generated units with medium priority (see normal-dir in system.generator7) + + + /usr/local/lib/systemd/system + Units of installed packages + /usr/lib/systemd/system - Units of installed packages + + + /run/systemd/generator.late + Generated units with low priority (see late-dir in system.generator7) @@ -374,12 +415,25 @@ - $XDG_CONFIG_HOME/systemd/user - User configuration (only used when $XDG_CONFIG_HOME is set) + $XDG_CONFIG_HOME/systemd/user.control or ~/.config/systemd/user.control + Persistent and transient configuration created using the dbus API ($XDG_CONFIG_HOME is used if set, ~/.config otherwise) - $HOME/.config/systemd/user - User configuration (only used when $XDG_CONFIG_HOME is not set) + $XDG_RUNTIME_DIR/systemd/user.control + + + /run/systemd/transient + Dynamic configuration for transient units + + + /run/systemd/generator.early + Generated units with high priority (see early-dir in system.generator7) + + + $XDG_CONFIG_HOME/systemd/user or $HOME/.config/systemd/user + User configuration ($XDG_CONFIG_HOME is used if set, ~/.config otherwise) /etc/systemd/user @@ -394,27 +448,50 @@ Runtime units - $XDG_DATA_HOME/systemd/user - Units of packages that have been installed in the home directory (only used when $XDG_DATA_HOME is set) + $XDG_RUNTIME_DIR/systemd/generator + Generated units with medium priority (see normal-dir in system.generator7) - $HOME/.local/share/systemd/user - Units of packages that have been installed in the home directory (only used when $XDG_DATA_HOME is not set) + $XDG_DATA_HOME/systemd/user or $HOME/.local/share/systemd/user + Units of packages that have been installed in the home directory ($XDG_DATA_HOME is used if set, ~/.local/share otherwise) + + + $dir/systemd/user for each $dir in $XDG_DATA_DIRS + Additional locations for installed user units, one for each entry in $XDG_DATA_DIRS + + + /usr/local/lib/systemd/user + Units of packages that have been installed system-wide /usr/lib/systemd/user - Units of packages that have been installed system-wide + + + $XDG_RUNTIME_DIR/systemd/generator.late + Generated units with low priority (see late-dir in system.generator7) - Additional units might be loaded into systemd ("linked") - from directories not on the unit load path. See the - link command for + The set of load paths for the user manager instance may be augmented or + changed using various environment variables. And environment variables may in + turn be set using environment generators, see + system.environment-generator7. + In particular, $XDG_DATA_HOME and + $XDG_DATA_DIRS may be easily set using + systemd-environment-d-generator8. + Thus, directories listed here are just the defaults. To see the actual list that + would be used based on compilation options and current environment use + systemd-analyze --user unit-paths + + + Moreover, additional units might be loaded into systemd ("linked") from + directories not on the unit load path. See the link command + for systemctl1. - Also, some units are dynamically created via a - systemd.generator7.