From 456c3badc622cb8c4b6ec59bc37436f3d50f7ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Nykr=C3=BDn?= Date: Fri, 9 Jul 2021 12:32:00 +0200 Subject: [PATCH] Merge pull request #7 from lnykryn/bz1977347 Bz1977347 --- dracut.sh | 7 +++++-- modules.d/99squash/module-setup.sh | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/dracut.sh b/dracut.sh index 60ac46f4..78917763 100755 --- a/dracut.sh +++ b/dracut.sh @@ -2067,9 +2067,11 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do # check for preexisting symlinks, so we can cope with the # symlinks to $prefix # Objectname is a file or a directory + reset_dotglob="$(shopt -p dotglob)" + shopt -q -s dotglob for objectname in "$src"/*; do [[ -e $objectname || -L $objectname ]] || continue - if [[ -d $objectname ]]; then + if [[ -d $objectname ]] && [[ ! -L $objectname ]]; then # objectname is a directory, let's compute the final directory name object_destdir=${destdir}/${objectname#$src/} if ! [[ -e $object_destdir ]]; then @@ -2077,11 +2079,12 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do mkdir -m 0755 -p "$object_destdir" chmod --reference="$objectname" "$object_destdir" fi - $DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/* + $DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/. else $DRACUT_CP -t "$destdir" "$dracutsysrootdir$objectname" fi done + eval "$reset_dotglob" elif [[ -e $src ]]; then derror "$src is neither a directory nor a regular file" else diff --git a/modules.d/99squash/module-setup.sh b/modules.d/99squash/module-setup.sh index e3196213..a2525cff 100644 --- a/modules.d/99squash/module-setup.sh +++ b/modules.d/99squash/module-setup.sh @@ -42,19 +42,19 @@ installpost() { # Install required modules and binaries for the squash image init script. if [[ $_busybox ]]; then inst "$_busybox" /usr/bin/busybox - for _i in sh echo mount modprobe mkdir switch_root grep; do + for _i in sh echo mount modprobe mkdir switch_root grep umount; do ln_r /usr/bin/busybox /usr/bin/$_i done else - DRACUT_RESOLVE_DEPS=1 inst_multiple sh mount modprobe mkdir switch_root grep + DRACUT_RESOLVE_DEPS=1 inst_multiple sh mount modprobe mkdir switch_root grep umount fi hostonly="" instmods "loop" "squashfs" "overlay" dracut_kernel_post # Install squash image init script. - ln -sfn /usr/bin "$initdir/bin" - ln -sfn /usr/sbin "$initdir/sbin" + ln_r /usr/bin /bin + ln_r /usr/sbin /sbin inst_simple "$moddir"/init-squash.sh /init }