add initskript to wait until slower drives are present at boot.

fixes: #757
This commit is contained in:
Arne Fitzenreiter
2011-04-17 18:01:03 +02:00
parent 2909e8b90f
commit b1e4de058e
4 changed files with 61 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ etc/rc.d/init.d/beep
#etc/rc.d/init.d/bluetooth
etc/rc.d/init.d/checkfs
etc/rc.d/init.d/checkfstab
etc/rc.d/init.d/waitdrives
#etc/rc.d/init.d/clamav
etc/rc.d/init.d/cleanfs
#etc/rc.d/init.d/client175
@@ -202,6 +203,7 @@ etc/rc.d/rcsysinit.d/S00mountkernfs
etc/rc.d/rcsysinit.d/S05modules
etc/rc.d/rcsysinit.d/S10udev
etc/rc.d/rcsysinit.d/S19checkfstab
etc/rc.d/rcsysinit.d/S19waitdrives
etc/rc.d/rcsysinit.d/S20swap
etc/rc.d/rcsysinit.d/S30checkfs
etc/rc.d/rcsysinit.d/S40mountfs

View File

@@ -1,5 +1,7 @@
etc/system-release
etc/rc.d/init.d/squid
etc/rc.d/init.d/waitdrives
etc/rc.d/rcsysinit.d/S19waitdrives
var/ipfire/backup/bin/backup.pl
srv/web/ipfire/cgi-bin/ids.cgi
srv/web/ipfire/cgi-bin/ovpnmain.cgi

View File

@@ -163,6 +163,7 @@ $(TARGET) :
ln -sf ../init.d/modules /etc/rc.d/rcsysinit.d/S05modules
ln -sf ../init.d/udev /etc/rc.d/rcsysinit.d/S10udev
ln -sf ../init.d/checkfstab /etc/rc.d/rcsysinit.d/S19checkfstab
ln -sf ../init.d/waitdrives /etc/rc.d/rcsysinit.d/S19waitdrives
ln -sf ../init.d/swap /etc/rc.d/rcsysinit.d/S20swap
ln -sf ../init.d/checkfs /etc/rc.d/rcsysinit.d/S30checkfs
ln -sf ../init.d/mountfs /etc/rc.d/rcsysinit.d/S40mountfs

View File

@@ -0,0 +1,56 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/waitdrives
#
# Description : Wait for drives before fscheck/mount
#
# Authors : Arne Fitzenreiter - arne_f@ipfire.org
#
# Version : 00.00
#
# Notes :
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
check_drives () {
drives_ready="1";
for drive in $drives; do
if [ `blkid | grep $drive | wc -l` == 0 ]; then
drives_ready="0";
fi
done
}
case "${1}" in
start)
if [ -e /sbin/mdadm ]; then
boot_mesg "Assemble mdadm managed raid-drives ..."
mdadm --assemble --scan
fi
drives=`grep "^UUID=" /etc/fstab | cut -f1 | cut -d" " -f1 | cut -d"=" -f2`;
check_drives;
if [ "$drives_ready" == "0" ]; then
boot_mesg -n "Wait for devices used in fstab "
for (( i=1; i<30; i++)) do
check_drives;
if [ "$drives_ready" == "1" ]; then
break;
fi
boot_mesg -n "."
sleep 1
done
fi
exit 0;
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/waitdrives