diff --git a/modules.d/30convertfs/convertfs.sh b/modules.d/30convertfs/convertfs.sh index d1d25aab..137664a8 100755 --- a/modules.d/30convertfs/convertfs.sh +++ b/modules.d/30convertfs/convertfs.sh @@ -73,13 +73,35 @@ if [[ ! -e "$testfile" ]]; then fi rm -f "$testfile" -ismounted() { - while read a m a; do - [[ "$m" = "$1" ]] && return 0 +find_mount() { + local dev mnt etc wanted_dev + wanted_dev="$(readlink -e -q $1)" + while read dev mnt etc; do + [ "$dev" = "$wanted_dev" ] && echo "$dev" && return 0 done < /proc/mounts return 1 } +# usage: ismounted +# usage: ismounted /dev/ +if command -v findmnt >/dev/null; then + ismounted() { + findmnt "$1" > /dev/null 2>&1 + } +else + ismounted() { + if [ -b "$1" ]; then + find_mount "$1" > /dev/null && return 0 + return 1 + fi + + while read a m a; do + [ "$m" = "$1" ] && return 0 + done < /proc/mounts + return 1 + } +fi + # clean up after ourselves no matter how we die. cleanup() { echo "Something failed. Move back to the original state" diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh index 6fd4e0af..1d90010a 100755 --- a/modules.d/99base/dracut-lib.sh +++ b/modules.d/99base/dracut-lib.sh @@ -452,11 +452,34 @@ udevproperty() { fi } +find_mount() { + local dev mnt etc wanted_dev + wanted_dev="$(readlink -e -q $1)" + while read dev mnt etc; do + [ "$dev" = "$wanted_dev" ] && echo "$dev" && return 0 + done < /proc/mounts + return 1 +} + # usage: ismounted # usage: ismounted /dev/ -ismounted() { - findmnt "$1" > /dev/null -} +if command -v findmnt >/dev/null; then + ismounted() { + findmnt "$1" > /dev/null 2>&1 + } +else + ismounted() { + if [ -b "$1" ]; then + find_mount "$1" > /dev/null && return 0 + return 1 + fi + + while read a m a; do + [ "$m" = "$1" ] && return 0 + done < /proc/mounts + return 1 + } +fi wait_for_if_up() { local cnt=0 diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh index 6cc4ad2e..2bcb6a1b 100755 --- a/modules.d/99base/module-setup.sh +++ b/modules.d/99base/module-setup.sh @@ -13,11 +13,12 @@ depends() { install() { local _d - dracut_install mount mknod mkdir pidof sleep chroot findmnt\ + dracut_install mount mknod mkdir pidof sleep chroot \ sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid inst $(command -v modprobe) /sbin/modprobe - dracut_install -o less + dracut_install -o findmnt less + if [ ! -e "${initdir}/bin/sh" ]; then dracut_install bash (ln -s bash "${initdir}/bin/sh" || :)