updated on Thu Jan 19 20:01:47 UTC 2012
[aur-mirror.git] / mdadm-git / mdadm_hook
blob57799d3b80cbc3f8a515c4f42c2670276e7693eb
1 # vim: set ft=sh:
2 run_hook ()
4     input="$(cat /proc/cmdline)"
5     mdconfig="/etc/mdadm.conf"
6     # for partitionable raid, we need to load md_mod first!
7     modprobe md_mod 2>/dev/null
8     # If md is specified on commandline, create config file from those parameters.
9     if [ "$(echo $input | grep "md=")" ]; then
10         #Create initial mdadm.conf
11         # scan all devices in /proc/partitions
12         echo DEVICE partitions > $mdconfig
13         for i in $input; do 
14             case $i in
15                 # raid 
16                 md=[0-9]*,/*)
17                     device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=||g')"
18                     array="$(echo $i | cut -d, -f2-)"
19                     echo "ARRAY /dev/$device devices=$array" >> $mdconfig
20                     ;;
21                 # partitionable raid
22                 md=d[0-9]*,/*)
23                     device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=|_|g')"
24                     array="$(echo $i | cut -d, -f2-)"
25                     echo "ARRAY /dev/$device devices=$array" >> $mdconfig
26                     ;;
27                 # raid UUID 
28                 md=[0-9]*,[0-9,a-z]*)
29                     device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=||g')"
30                     array="$(echo $i | cut -d, -f2-)"
31                     echo "ARRAY /dev/$device UUID=$array" >> $mdconfig
32                     ;;
33                 # partitionable raid UUID
34                 md=d[0-9]*,[0-9,a-z]*)
35                     device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=|_|g')"
36                     array="$(echo $i | cut -d, -f2-)"
37                     echo "ARRAY /dev/$device UUID=$array" >> $mdconfig
38                     ;;
39             esac 
40         done
41     fi
42     # assemble everything
43     [ -e $mdconfig ] && /sbin/mdassemble