On Thu, Oct 26, 2023 at 07:41:50PM +0200, [email protected] wrote:
> From: Martin Wilck <[email protected]>
>
> systemd with "split-usr=true" uses rootprefixdir as prefix for
> units and for udev libraries and rules ("udevlibexecdir" in
> systemd). Fix the documentation for this case. Also, slightly
> improve the paragraph about SCSI module loading.
>
> Signed-off-by: Martin Wilck <[email protected]>
Reviewed-by: Benjamin Marzinski <[email protected]>
> Cc: Xose Vazquez Perez <[email protected]>
> ---
> Makefile.inc | 6 ++++--
> README.md | 25 ++++++++++++++++++-------
> 2 files changed, 22 insertions(+), 9 deletions(-)
>
> diff --git a/Makefile.inc b/Makefile.inc
> index 8655cba..a20e2ce 100644
> --- a/Makefile.inc
> +++ b/Makefile.inc
> @@ -40,8 +40,10 @@ usr_prefix := $(prefix)
> # Prefix for configfuration files (multipath.conf)
> etc_prefix := $(prefix)
> # Where to install systemd-related files. systemd is usually installed under
> /usr
> -# Note: some systemd installations use separate "prefix" and "rootprefix".
> -# In this case, override only unitdir to use systemd's "rootprefix" instead
> of $(systemd_prefix)
> +# Note: systemd installations with "split-usr=true" use separate "prefixdir"
> and
> +# "rootprefixdir". Our systemd_prefix corresponds to "prefixdir".
> +# In this case, override only unitdir and libudevdir below to use
> +# systemd's "rootprefixdir" instead of $(systemd_prefix)
> systemd_prefix := /usr
>
> # Make sure all prefix variables end in "/"
> diff --git a/README.md b/README.md
> index 524c9fb..25ce963 100644
> --- a/README.md
> +++ b/README.md
> @@ -111,6 +111,13 @@ The following variables can be passed to the `make`
> command line:
> polling API. For use with pre-5.0 kernels that don't support dmevent
> polling
> (but even if you don't use this option, multipath-tools will work with
> these kernels).
> + * `SYSTEMD`: The version number of systemd (e.g. "244") to compile the code
> for.
> + The default is autodetected, assuming that the systemd version in the
> build
> + environment is the same as on the target system. Override the value to
> + build for a different systemd version, or set it to `""` to build for a
> + system without systemd.
> + **Caution:** multipathd without systemd has been largely untested by the
> + upstream maintainers since at least 2020.
> * `SCSI_DH_MODULES_PRELOAD="(list)"`: specify a space-separated list of SCSI
> device handler kernel modules to load early during boot. Some
> multipath-tools functionality depends on these modules being loaded
> @@ -122,7 +129,9 @@ The following variables can be passed to the `make`
> command line:
> It's especially useful if `scsi_mod` is builtin but `scsi_dh_alua` and
> other device handler modules are built as modules. If `scsi_mod` itself
> is compiled
> as a module, it might make more sense to use a module softdep for the same
> - purpose.
> + purpose by creating a `modprobe.d` file like this:
> +
> + softdep scsi_mod post: scsi_dh_alua scsi_dh_rdac
>
> ### Installation Paths
>
> @@ -133,9 +142,9 @@ The following variables can be passed to the `make`
> command line:
> for booting. Non-usr-merged distributions[^systemd] may want to set this
> to
> `/usr`. The default is `$(prefix)`.
> * `systemd_prefix`: Prefix for systemd-related files[^systemd]. The default
> is `/usr`.
> - * `etc_prefix`: The prefix for configuration files. "Usr-merged"
> + * `etc_prefix`: The prefix for configuration files. "usr-merged"
> distributions with immutable `/usr`[^systemd] may want to set this to
> - `/etc`. The default is `$(prefix)`.
> + `""`. The default is `$(prefix)`.
> * `LIB`: the subdirectory under `prefix` where shared libraries will be
> installed. By default, the makefile uses `/lib64` if this directory is
> found on the build system, and `/lib` otherwise.
> @@ -144,10 +153,12 @@ The options `configdir`, `plugindir`, `configfile`, and
> `statedir` above can
> be used for setting individual paths where the `prefix` variables don't
> provide
> sufficient control. See `Makefile.inc` for even more fine-grained control.
>
> -[^systemd]: Some systemd installations use separate `prefix` and
> `rootprefix`.
> - On such a distribution, set `prefix`, and override `unitdir` to use
> systemd's
> - `rootprefix`. Recent systemd releases generally require everything to be
> - installed under `/usr` (so-called "usr-merged" distribution). On "usr-
> +[^systemd]: systemd installations up to v254 which have been built with
> + `split-usr=true` may use separate `prefixdir` and `rootprefixdir`
> + directories, where `prefixdir` is a subdirectory of `rootprefixdir`.
> + multipath-tools' `systemd_prefix` corresponds to systemd's `prefixdir`.
> + On such distributions, override `unitdir` and `libudevdir` to use
> systemd's
> + `rootprefix`: `make libudevdir=/lib/udev unitdir=/lib/systemd/system`
>
> ### Compiler Options
>
> --
> 2.42.0