Move dracut specifics to dracut module
Dracut depends on the environment variable BOOTFS to be set after pool import. This dracut specific systemd ExecStartPost command should not be called for any non-dracut systems, so let's move it to a static systemd unit that. Reviewed-by: Manuel Amador (Rudd-O) <rudd-o@rudd-o.com> Reviewed-by: Matthew Thode <prometheanfire@gentoo.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Closes #8510
This commit is contained in:
parent
f72ecb8d27
commit
ce4432c542
|
@ -6,3 +6,4 @@ zfs-generator.sh
|
|||
zfs-lib.sh
|
||||
zfs-load-key.sh
|
||||
zfs-needshutdown.sh
|
||||
zfs-env-bootfs.service
|
||||
|
|
|
@ -9,6 +9,9 @@ pkgdracut_SCRIPTS = \
|
|||
zfs-needshutdown.sh \
|
||||
zfs-lib.sh
|
||||
|
||||
pkgdracut_DATA = \
|
||||
zfs-env-bootfs.service
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \
|
||||
|
@ -17,9 +20,10 @@ EXTRA_DIST = \
|
|||
$(top_srcdir)/contrib/dracut/90zfs/zfs-generator.sh.in \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/zfs-load-key.sh.in \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/zfs-needshutdown.sh.in \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in
|
||||
$(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in \
|
||||
$(top_srcdir)/contrib/dracut/90zfs/zfs-env-bootfs.service.in
|
||||
|
||||
$(pkgdracut_SCRIPTS):%:%.in
|
||||
$(pkgdracut_SCRIPTS) $(pkgdracut_DATA) :%:%.in
|
||||
-$(SED) -e 's,@bindir\@,$(bindir),g' \
|
||||
-e 's,@sbindir\@,$(sbindir),g' \
|
||||
-e 's,@udevdir\@,$(udevdir),g' \
|
||||
|
@ -30,4 +34,4 @@ $(pkgdracut_SCRIPTS):%:%.in
|
|||
$< >'$@'
|
||||
|
||||
distclean-local::
|
||||
-$(RM) $(pkgdracut_SCRIPTS)
|
||||
-$(RM) $(pkgdracut_SCRIPTS) $(pkgdracut_DATA)
|
||||
|
|
|
@ -98,6 +98,9 @@ install() {
|
|||
type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import-$_item.service
|
||||
fi
|
||||
done
|
||||
inst "${moddir}"/zfs-env-bootfs.service "${systemdsystemunitdir}"/zfs-env-bootfs.service
|
||||
ln -s ../zfs-env-bootfs.service "${initdir}/${systemdsystemunitdir}/zfs-import.target.wants"/zfs-env-bootfs.service
|
||||
type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-env-bootfs.service
|
||||
dracut_install systemd-ask-password
|
||||
dracut_install systemd-tty-ask-password-agent
|
||||
mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants"
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Set BOOTFS environment for dracut
|
||||
Documentation=man:zpool(8)
|
||||
DefaultDependencies=no
|
||||
After=zfs-import-cache.service
|
||||
After=zfs-import-scan.service
|
||||
Before=zfs-import.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
|
||||
|
||||
[Install]
|
||||
WantedBy=zfs-import.target
|
|
@ -13,7 +13,6 @@ ConditionPathExists=@sysconfdir@/zfs/zpool.cache
|
|||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN
|
||||
ExecStartPost=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
|
||||
|
||||
[Install]
|
||||
WantedBy=zfs-import.target
|
||||
|
|
|
@ -12,7 +12,6 @@ ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
|
|||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=@sbindir@/zpool import -aN -o cachefile=none
|
||||
ExecStartPost=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
|
||||
|
||||
[Install]
|
||||
WantedBy=zfs-import.target
|
||||
|
|
Loading…
Reference in New Issue