diff options
Diffstat (limited to 'sys-fs/raidtools/files/raid-start.sh')
-rwxr-xr-x | sys-fs/raidtools/files/raid-start.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/sys-fs/raidtools/files/raid-start.sh b/sys-fs/raidtools/files/raid-start.sh new file mode 100755 index 000000000000..c95708b387b2 --- /dev/null +++ b/sys-fs/raidtools/files/raid-start.sh @@ -0,0 +1,40 @@ +# /lib/rcscripts/addons/raid-start.sh: Setup raid volumes at boot +# $Header: /var/cvsroot/gentoo-x86/sys-fs/raidtools/files/raid-start.sh,v 1.1 2005/03/02 04:29:58 vapier Exp $ + +[[ -f /proc/mdstat ]] || exit 0 + +# We could make this dynamic, but eh +#[[ -z ${MAJOR} ]] && export MAJOR=$(awk '$2 == "md" { print $1 }' /proc/devices) +MAJOR=9 + +# Try to make sure the devices exist before we use them +create_devs() { + local d + for d in $@ ; do + d=${d/\/dev\/} + [[ -e /dev/${d} ]] && continue + mknod /dev/${d} b ${MAJOR} ${d##*md} >& /dev/null + done +} + +# Start software raid with raidtools (old school) +if [[ -x /sbin/raidstart && -f /etc/raidtab ]] ; then + create_devs $(awk '/^[[:space:]]*raiddev/ { print $2 }' /etc/raidtab) + ebegin "Starting up RAID devices (raidtools)" + output=$(raidstart -a 2>&1) + ret=$? + [[ ${ret} -ne 0 ]] && echo "${output}" + eend ${ret} +fi + +# Start software raid with mdadm (new school) +if [[ -x /sbin/mdadm && -f /etc/mdadm.conf ]] ; then + create_devs $(awk '/^[[:space:]]*ARRAY/ { print $2 }' /etc/mdadm.conf) + ebegin "Starting up RAID devices (mdadm)" + output=$(mdadm -As 2>&1) + ret=$? + [[ ${ret} -ne 0 ]] && echo "${output}" + eend ${ret} +fi + +# vim:ts=4 |