*** /etc/rc.d/rc.sysinit.org 2010-10-28 14:31:43.000000000 +0400 --- /etc/rc.d/rc.sysinit 2010-10-28 17:11:40.000000000 +0400 *************** splash_update start 1 *** 136,141 **** --- 136,171 ---- # Set the system clock (when /etc/adjtime is missing) [ -s /etc/adjtime ] || /etc/init.d/clock start + function waitusb() { + local timeout devs udevs ldevs ddevs str + str="Wainting for USB Mass Storage Device: " + echo -n "$str" + timeout=30; + devs="$(sed 's/^[[:space:]]*//;s/#.*//;s/[[:space:]]\+/ /g;/^$/d' /etc/fstab | grep -ve '^[^[:space:]]\+[[:space:]]\+[^[:space:]]\+[[:space:]]\+[^[:space:]]\+[[:space:]]\+[^[:space:]]*noauto[^[:space:]]*[[:space:]]\+' | sed 's/[[:space:]].*//;')" + udevs="$(echo "$devs" | sed '/^[Uu][Uu][Ii][Dd]=/!d;s/.*=//;')"; + ldevs="$(echo "$devs" | sed '/^[Ll][Aa][Bb][Ee][Ll]=/!d;s/.*=//;')"; + ddevs="$(echo "$devs" | sed '/^\/dev/!d;')"; + while ((timeout>0)); do + err=; + for devs in $ldevs; do [ -a "/dev/disk/by-label/$devs" ] || err=1; done + for devs in $udevs; do [ -a "/dev/disk/by-uuid/$devs" ] || err=2; done + for devs in $ddevs; do [ -a "$devs" ] || err=3; done + [ -z "$err" ] && break; + sleep 1; + ((timeout--)) + echo -n "$timeout.." + done + if ((timeout>0)); then + success "$str" + else + failure "$str" + fi + echo + } + + # pause for USB disks + waitusb + # Activate swap action "Activating swap partitions:" swapon -a -e