From a45048b80c27ee5a45a380052a6d29ab1925f7f9 Mon Sep 17 00:00:00 2001 From: Laszlo Gombos Date: Fri, 5 Apr 2024 15:50:20 +0200 Subject: [PATCH] fix(dracut): move hooks directory from /usr/lib to /var/lib Since https://github.com/systemd/systemd/commit/ffc1ec73, /usr is mounted as read-only in the initramfs by default. Fixes #2588 Co-authored-by: Antonio Alvarez Feijoo --- dracut-init.sh | 2 +- dracut.sh | 6 +++++- modules.d/99base/module-setup.sh | 5 ++++- modules.d/99shutdown/module-setup.sh | 8 +++++--- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dracut-init.sh b/dracut-init.sh index 7ce3d1dd..863df0cb 100755 --- a/dracut-init.sh +++ b/dracut-init.sh @@ -633,7 +633,7 @@ inst_hook() { dfatal "No such hook type $1. Aborting initrd creation." exit 1 fi - hook="/lib/dracut/hooks/${1}/${2}-${3##*/}" + hook="/var/lib/dracut/hooks/${1}/${2}-${3##*/}" inst_simple "$3" "$hook" chmod u+x "$initdir/$hook" } diff --git a/dracut.sh b/dracut.sh index 3914d7c5..148ef8b0 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1884,7 +1884,11 @@ mkdir -p "${initdir}"/lib/dracut if [[ $kernel_only != yes ]]; then mkdir -p "${initdir}/etc/cmdline.d" - mkdir -m 0755 "${initdir}"/lib/dracut/hooks + mkdir -m 0755 -p "${initdir}"/var/lib/dracut/hooks + + # symlink to old hooks location for compatibility + ln_r /var/lib/dracut/hooks /lib/dracut/hooks + for _d in $hookdirs; do # shellcheck disable=SC2174 mkdir -m 0755 -p "${initdir}/lib/dracut/hooks/$_d" diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh index 54b0deb9..bfdc51d4 100755 --- a/modules.d/99base/module-setup.sh +++ b/modules.d/99base/module-setup.sh @@ -45,7 +45,10 @@ install() { [ -e "${initdir}/lib" ] || mkdir -m 0755 -p "${initdir}"/lib mkdir -m 0755 -p "${initdir}"/lib/dracut - mkdir -m 0755 -p "${initdir}"/lib/dracut/hooks + mkdir -m 0755 -p "${initdir}"/var/lib/dracut/hooks + + # symlink to old hooks location for compatibility + ln_r /var/lib/dracut/hooks /lib/dracut/hooks mkdir -p "${initdir}"/tmp diff --git a/modules.d/99shutdown/module-setup.sh b/modules.d/99shutdown/module-setup.sh index 2b999024..f53017ff 100755 --- a/modules.d/99shutdown/module-setup.sh +++ b/modules.d/99shutdown/module-setup.sh @@ -17,9 +17,11 @@ install() { inst_multiple umount poweroff reboot halt losetup stat sleep timeout inst_multiple -o kexec inst "$moddir/shutdown.sh" "$prefix/shutdown" - [ -e "${initdir}/lib" ] || mkdir -m 0755 -p "${initdir}"/lib - mkdir -m 0755 -p "${initdir}"/lib/dracut - mkdir -m 0755 -p "${initdir}"/lib/dracut/hooks + mkdir -m 0755 -p "${initdir}"/var/lib/dracut/hooks + + # symlink to old hooks location for compatibility + ln_r /var/lib/dracut/hooks /lib/dracut/hooks + for _d in $hookdirs shutdown shutdown-emergency; do mkdir -m 0755 -p "${initdir}"/lib/dracut/hooks/"$_d" done -- 2.44.0