From b1e4de058e71db030ec6e0e237fb479b77e8efb6 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sun, 17 Apr 2011 18:01:03 +0200 Subject: [PATCH] add initskript to wait until slower drives are present at boot. fixes: #757 --- config/rootfiles/common/initscripts | 2 + config/rootfiles/core/49/filelists/files | 2 + lfs/initscripts | 1 + src/initscripts/init.d/waitdrives | 56 ++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/initscripts/init.d/waitdrives diff --git a/config/rootfiles/common/initscripts b/config/rootfiles/common/initscripts index 73a06a4baa..58bbf8c6af 100644 --- a/config/rootfiles/common/initscripts +++ b/config/rootfiles/common/initscripts @@ -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 diff --git a/config/rootfiles/core/49/filelists/files b/config/rootfiles/core/49/filelists/files index 59f3ebc4e0..4975a5e307 100644 --- a/config/rootfiles/core/49/filelists/files +++ b/config/rootfiles/core/49/filelists/files @@ -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 diff --git a/lfs/initscripts b/lfs/initscripts index c4da413897..c32b1693fc 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -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 index 0000000000..93ae1ed701 --- /dev/null +++ b/src/initscripts/init.d/waitdrives @@ -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 -- 2.39.2