add initskript to wait until slower drives are present at boot.
authorArne Fitzenreiter <arne_f@ipfire.org>
Sun, 17 Apr 2011 16:01:03 +0000 (18:01 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 17 Apr 2011 16:01:03 +0000 (18:01 +0200)
fixes: #757

config/rootfiles/common/initscripts
config/rootfiles/core/49/filelists/files
lfs/initscripts
src/initscripts/init.d/waitdrives [new file with mode: 0644]

index 73a06a4..58bbf8c 100644 (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
index 59f3ebc..4975a5e 100644 (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
index c4da413..c32b169 100644 (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
diff --git a/src/initscripts/init.d/waitdrives b/src/initscripts/init.d/waitdrives
new file mode 100644 (file)
index 0000000..93ae1ed
--- /dev/null
@@ -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