From: Harald Hoyer Date: Thu, 20 Sep 2012 08:36:13 +0000 (+0200) Subject: fallback to old ismounted, if findmnt is not installed X-Git-Tag: 024~74 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4211605000dcb2fef66e90b1c8739f2d02ee1ebc;p=thirdparty%2Fdracut.git fallback to old ismounted, if findmnt is not installed --- diff --git a/modules.d/30convertfs/convertfs.sh b/modules.d/30convertfs/convertfs.sh index d1d25aab3..137664a83 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 6fd4e0aff..1d90010a1 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 6cc4ad2ef..2bcb6a1b8 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" || :)