From 20ea91703b98708579f3d531823ec56bcec2bf1a Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Fri, 9 Nov 2018 10:48:28 +0800 Subject: [PATCH] squash: unsquash the root image instead of mounting it on shutdown When building squash image, squash module forgot to install the new shutdown.sh, and the shutdown hooks are always skipped on ordinary shutdown if squash module is enabled. The new shutdown.sh will remount the squash image and then everything will just work, but currently re-mounting the squash image on shutdown may have selinux problem and make the system hang, and there is no easy way to fix it. So skip fixing the shutdown.sh not being install problem, instead just drop the new shutdown.sh, and unsquash the image on ordinary shutdown, which is safer and should always work. Signed-off-by: Kairui Song (cherry picked from commit a60af534132828fd46fa017291f7ed7cfeab1dc3) Resolves: #1959336 --- dracut-initramfs-restore.sh | 9 +++++++++ dracut.sh | 2 -- modules.d/99squash/shutdown.sh | 7 ------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh index 94794804..67fc88fa 100644 --- a/dracut-initramfs-restore.sh +++ b/dracut-initramfs-restore.sh @@ -40,4 +40,13 @@ else exit 1 fi +if [[ -d squash ]]; then + unsquashfs -no-xattrs -f -d . squash/root.img >/dev/null + if [ $? -ne 0 ]; then + echo "Squash module is enabled for this initramfs but failed to unpack squash/root.img" >&2 + rm -f -- /run/initramfs/shutdown + exit 1 + fi +fi + exit 0 diff --git a/dracut.sh b/dracut.sh index f8e68ccb..966350c5 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1817,9 +1817,7 @@ if dracut_module_included "squash"; then done mv $initdir/init $initdir/init.stock - mv $initdir/shutdown $initdir/shutdown.stock ln -s squash/init.sh $initdir/init - ln -s squash/shutdown.sh $initdir/shutdown # Reinstall required files for the squash image setup script. # We have moved them inside the squashed image, but they need to be diff --git a/modules.d/99squash/shutdown.sh b/modules.d/99squash/shutdown.sh deleted file mode 100755 index 535779f4..00000000 --- a/modules.d/99squash/shutdown.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -/squash/setup-squash.sh - -exec /shutdown.stock - -echo "Something went wrong when trying to start original shutdown executable!" -exit 1