archboot/lib/initcpio/hooks/arch_mdadm
2009-12-11 11:28:56 +01:00

57 lines
No EOL
2.2 KiB
Text

# Created by Tobias Powalowski <tpowa@archlinux.org>
run_hook ()
{
if ! [ "$MDADMRUN" = "1" ]; then
input="$(cat /proc/cmdline)"
mdconfig="/etc/mdadm.conf"
# for partitionable raid, we need to load md_mod first!
modprobe md_mod 2>/dev/null
# if no config file is present create one from command line parameters
if ! [ -e $mdconfig ]; then
#Create initial mdadm.conf
# scan all devices in /proc/partitions
echo DEVICE partitions > $mdconfig
for i in $input; do
case $i in
# raid
md=[0-9]*,/*)
device="$(/bin/replace -s,/ "$i" "=" "")"
array="$(/bin/replace -s/ "$device" "," " devices=")"
echo "ARRAY /dev/$array" >> $mdconfig
RAID_FOUND=1
;;
# partitionable raid
md=d[0-9]*,/*)
device="$(/bin/replace -s=d "$i" "md=" "md_")"
array="$(/bin/replace -s/ "$device" "," " devices=")"
echo "ARRAY /dev/$array" >> $mdconfig
RAID_FOUND=1
;;
# raid UUID
md=[0-9]*,[0-9,a-z]*)
device="$(/bin/replace -s,/ "$i" "=" "")"
array="$(/bin/replace -s/ "$device" "," " uuid=")"
echo "ARRAY /dev/$array" >> $mdconfig
RAID_FOUND=1
;;
# partitionable raid UUID
md=d[0-9]*,[0-9,a-z]*)
device="$(/bin/replace -s=d "$i" "md=" "md_")"
array="$(/bin/replace -s/ "$device" "," " uuid=")"
echo "ARRAY /dev/$array" >> $mdconfig
RAID_FOUND=1
;;
esac
done
else
RAID_FOUND=1
fi
if [ "$RAID_FOUND" = 1 ]; then
# assemble everything
/sbin/mdassemble.static
fi
else
msg ":: Skipping already run by arch_root_advanced hook..."
fi
}