#!/bin/sh
-#
+MD_RCSID='$Revision$ $Date:: $'
+
# geninitrd mod: mdadm
USE_MD=${USE_MD:-yes}
found = "no";
dev_list = "";
raidlevel = ""
- rootdev_new = ""
+ rootdev_new = rootdev
rootdev_alias = rootdev;
# alternative name: normalize from /dev/md/X to /dev/mdX
if (rootdev_alias ~ /\/dev\/md\/[0-9]+/) {
# generate initrd fragment for md
# @access public
initrd_gen_md() {
+ if ! is_yes "$have_md"; then
+ return
+ fi
debug "Setting up mdadm..."
inst_exec $mdassemble /bin/mdassemble
# LVM on RAID case
local dev_list_extra ex_dev
dev_list_extra=$(awk '/^DEVICE / { for (i=2; i<=NF; i++) { printf "%s ", $i; }; } ' /etc/mdadm.conf | xargs)
- if [ "$dev_list_extra" = "partitions" ]; then
- # FIXME: handle this case (see man mdadm.conf)
- echo "DEVICE partitions" >> "$DESTDIR/etc/mdadm.conf"
- dev_list_extra=""
- else
- for ex_dev in $dev_list_extra; do
- echo "DEVICE $ex_dev" >> "$DESTDIR/etc/mdadm.conf"
- done
- fi
+ new_dev_list_extra=""
+ for ex_dev in $dev_list_extra; do
+ if [ "$ex_dev" = "partitions" ]; then
+ echo "DEVICE partitions" >> "$DESTDIR/etc/mdadm.conf"
+ # FIXME: find and copy partition devices from /proc/partitions
+ # - best if done at runtime, now initrd gen time
+ continue
+ fi
+ echo "DEVICE $ex_dev" >> "$DESTDIR/etc/mdadm.conf"
+ new_dev_list_extra="$new_dev_list_extra $ex_dev"
+ done
+ dev_list_extra=$new_dev_list_extra
local cr_rootdev cr_dev_list do_md0=1 nr cr_dev_list_md f cr_md_conf
for nr in `seq 1 $rootdev_nr`; do