# vim: set ft=sh:
run_hook ()
{
    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
}