|
Lines 134-139
Link Here
|
| 134 |
noscsi= |
134 |
noscsi= |
| 135 |
noide= |
135 |
noide= |
| 136 |
noraid= |
136 |
noraid= |
|
|
137 |
nomdadm= |
| 138 |
noraidtab= |
| 137 |
pause= |
139 |
pause= |
| 138 |
MODULES= |
140 |
MODULES= |
| 139 |
MODULES_DIR= |
141 |
MODULES_DIR= |
|
Lines 643-652
Link Here
|
| 643 |
[0156]) |
645 |
[0156]) |
| 644 |
FindModule "raid$level" |
646 |
FindModule "raid$level" |
| 645 |
;; |
647 |
;; |
| 646 |
4) |
648 |
4|raid4) |
| 647 |
FindModule "raid5" |
649 |
FindModule "raid5" |
| 648 |
;; |
650 |
;; |
| 649 |
-1|linear) |
651 |
linear|multipath|raid[0156]) |
|
|
652 |
FindModule $level |
| 653 |
;; |
| 654 |
-1) |
| 650 |
FindModule "linear" |
655 |
FindModule "linear" |
| 651 |
;; |
656 |
;; |
| 652 |
*) |
657 |
*) |
|
Lines 661-666
Link Here
|
| 661 |
awk '{print $2}' | LC_COLLATE=C sort -u |
666 |
awk '{print $2}' | LC_COLLATE=C sort -u |
| 662 |
} |
667 |
} |
| 663 |
|
668 |
|
|
|
669 |
MDADM=/usr/sbin/mdadm |
| 670 |
MDASSEMBLE=/sbin/mdassemble |
| 671 |
MDADM_CONF=/etc/mdadm.conf |
| 672 |
MDDEVNUM=9 |
| 673 |
|
| 674 |
mddev() # $1 = device to check => raiddevices, nonraiddevices (currently not used), stacked_md |
| 675 |
{ |
| 676 |
local -i major |
| 677 |
local dev md |
| 678 |
local stack=${2-0} |
| 679 |
: ${stacked_md=0} |
| 680 |
major=$((0x$(stat -L -c '%t' $1))) |
| 681 |
if [ $major = $MDDEVNUM ]; then |
| 682 |
# need to reverse the raiddevices list to account for stacked md devices |
| 683 |
raiddevices="$1 $raiddevices" |
| 684 |
md=${1##*/} |
| 685 |
md=md${md#md} # /dev/md/0 and /dev/md0 become md0 |
| 686 |
mddevs=$(awk '/^'$md'[[:space:]]*:/ {for (i=5;i<=NF;i++) {sub("\\[[0-9]*\\]","",$i); print "/dev/" $i } }' /proc/mdstat) #' |
| 687 |
[ -n "$mddevs" ] && stack=$(($stack + 1)) |
| 688 |
[ $stack -gt $stacked_md ] && stacked_md=$stack |
| 689 |
for dev in $mddevs; do |
| 690 |
mddev $dev $stack |
| 691 |
done |
| 692 |
else |
| 693 |
nonraiddevices="$nonraiddevices $1" |
| 694 |
fi |
| 695 |
} |
| 696 |
|
| 697 |
FindRaidModulesFromMdadm() |
| 698 |
{ |
| 699 |
mddev $rootdev |
| 700 |
for md in $raiddevices; do |
| 701 |
md=${md##*/} |
| 702 |
md=md${md#md} # /dev/md/0 and /dev/md0 become md0 |
| 703 |
level=$(awk '/^'$md'[[:space:]]*:/ { print $4 }' /proc/mdstat) |
| 704 |
FindRaidModuleForLevel $level |
| 705 |
done |
| 706 |
} |
| 707 |
|
| 664 |
FindRaidModules() |
708 |
FindRaidModules() |
| 665 |
{ |
709 |
{ |
| 666 |
[ -z "$noraid" ] || return |
710 |
[ -z "$noraid" ] || return |
|
Lines 672-680
Link Here
|
| 672 |
|
716 |
|
| 673 |
if [ -n "$HAVE_RAID" ]; then |
717 |
if [ -n "$HAVE_RAID" ]; then |
| 674 |
FindModule -md |
718 |
FindModule -md |
| 675 |
if [ -r /etc/raidtab ]; then |
719 |
if [ -z "$nomdadm" -a -r $MDADM_CONF ]; then |
|
|
720 |
FindRaidModulesFromMdadm |
| 721 |
noraidtab=1 |
| 722 |
fi |
| 723 |
if [ -z "$noraidtab" -a -r /etc/raidtab ]; then |
| 676 |
for number in `ListRaidLevelsFromRaidtab`; do |
724 |
for number in `ListRaidLevelsFromRaidtab`; do |
| 677 |
FindRaidModuleForLevel "$number" |
725 |
FindRaidModuleForLevel "$number" |
|
|
726 |
stacked_md=1 |
| 678 |
done |
727 |
done |
| 679 |
fi |
728 |
fi |
| 680 |
fi |
729 |
fi |
|
Lines 695-701
Link Here
|
| 695 |
FindRootModules() |
744 |
FindRootModules() |
| 696 |
{ |
745 |
{ |
| 697 |
# In case the root filesystem is modular. |
746 |
# In case the root filesystem is modular. |
| 698 |
#rootdev=$(awk '{if (($2 == "/") && ($1 !~ /^[ \t]*#/) {print $1}}' "$FSTAB_FILE") |
747 |
rootdev=$(awk '{if (($2 == "/") && ($1 !~ /^[ \t]*#/)) {print $1}}' "$FSTAB_FILE") |
| 699 |
local rootfs |
748 |
local rootfs |
| 700 |
rootfs=$(awk '{if (($2 == "/") && ($1 !~ /^[ \t]*#/)) {print $3}}' "$FSTAB_FILE") |
749 |
rootfs=$(awk '{if (($2 == "/") && ($1 !~ /^[ \t]*#/)) {print $3}}' "$FSTAB_FILE") |
| 701 |
[ -z "$rootfs" ] || FindModule -"$rootfs" |
750 |
[ -z "$rootfs" ] || FindModule -"$rootfs" |
|
Lines 753-758
Link Here
|
| 753 |
Fatal "Failed to create \"$file\" device." |
802 |
Fatal "Failed to create \"$file\" device." |
| 754 |
} |
803 |
} |
| 755 |
|
804 |
|
|
|
805 |
ActivateMdDevices() |
| 806 |
{ |
| 807 |
echo "echo Create RAID devices" >> $RCFILE |
| 808 |
[ -x $MDADM ] && echo "DEVICE partitions" >| ${MNTIMAGE}$MDADM_CONF |
| 809 |
for dev in $raiddevices; do |
| 810 |
md=${dev##*/} |
| 811 |
md=${md#md} # /dev/md/0 and /dev/md0 become 0 |
| 812 |
echo "mknod /safedev/md${md} b $MDDEVNUM ${md}" >> $RCFILE |
| 813 |
if [ -x $MDADM ]; then |
| 814 |
$MDADM -D -b $dev | grep '^ARRAY' \ |
| 815 |
| sed -e 's,\/dev\/,\/safedev\/,g' \ |
| 816 |
>> ${MNTIMAGE}$MDADM_CONF |
| 817 |
fi |
| 818 |
done |
| 819 |
if [ -x $MDASSEMBLE ]; then |
| 820 |
Cp -aL $MDASSEMBLE $MNTIMAGE/sbin/ |
| 821 |
raidstart_command="mdassemble" |
| 822 |
elif [ -x $MDADM ]; then |
| 823 |
Cp -aL $MDADM $MNTIMAGE/sbin/ |
| 824 |
raidstart_command="mdadm -A -s" |
| 825 |
else |
| 826 |
Ln -s sh "$MNTDIR/bin/raidautorun" |
| 827 |
Mknod "$MNTDIR/safedev/md255" b 9 255 |
| 828 |
raidstart_command="raidautorun /safedev/md255" |
| 829 |
fi |
| 830 |
echo "echo Activate RAID devices" >> $RCFILE |
| 831 |
while [ $stacked_md -gt 0 ]; do |
| 832 |
echo $raidstart_command >> $RCFILE |
| 833 |
stacked_md=$(($stacked_md - 1)) |
| 834 |
done |
| 835 |
} |
| 836 |
|
| 756 |
MakeMountDir() |
837 |
MakeMountDir() |
| 757 |
{ |
838 |
{ |
| 758 |
MNTDIR="$WORKDIR/tree" |
839 |
MNTDIR="$WORKDIR/tree" |
|
Lines 807-817
Link Here
|
| 807 |
done |
888 |
done |
| 808 |
|
889 |
|
| 809 |
if [ -n "$HAVE_RAID" ]; then |
890 |
if [ -n "$HAVE_RAID" ]; then |
| 810 |
Mknod "$MNTDIR/safedev/md255" b 9 255 |
891 |
ActivateMdDevices |
| 811 |
Ln -s sh "$MNTDIR/bin/raidautorun" |
|
|
| 812 |
cat >>"$RCFILE" <<EOF |
| 813 |
/bin/raidautorun /safedev/md255 |
| 814 |
EOF |
| 815 |
fi |
892 |
fi |
| 816 |
|
893 |
|
| 817 |
if [ -n "$loopDev" ]; then |
894 |
if [ -n "$loopDev" ]; then |
|
Lines 967-972
Link Here
|
| 967 |
--omit-scsi-modules do not load any SCSI modules. |
1044 |
--omit-scsi-modules do not load any SCSI modules. |
| 968 |
--omit-ide-modules do not load any IDE modules. |
1045 |
--omit-ide-modules do not load any IDE modules. |
| 969 |
--omit-raid-modules do not load any raid modules. |
1046 |
--omit-raid-modules do not load any raid modules. |
|
|
1047 |
--omit-mdadm skip /etc/mdadm.conf, but check /etc/raidtab |
| 1048 |
--omit-raidtab skip /etc/raidtab, but check /etc/mdadm.conf |
| 970 |
--pause pause for manual initrd editing. |
1049 |
--pause pause for manual initrd editing. |
| 971 |
--nocompress do not compress initrd image. |
1050 |
--nocompress do not compress initrd image. |
| 972 |
--nobootsplash do not add bootsplash to the initrd image. |
1051 |
--nobootsplash do not add bootsplash to the initrd image. |
|
Lines 1035-1040
Link Here
|
| 1035 |
noraid=1 |
1114 |
noraid=1 |
| 1036 |
shift |
1115 |
shift |
| 1037 |
;; |
1116 |
;; |
|
|
1117 |
--omit-mdadm) |
| 1118 |
nomdadm=1 |
| 1119 |
shift |
| 1120 |
;; |
| 1121 |
--omit-raidtab) |
| 1122 |
noraidtab=1 |
| 1123 |
shift |
| 1124 |
;; |
| 1038 |
--with-raid) |
1125 |
--with-raid) |
| 1039 |
HAVE_RAID=1 |
1126 |
HAVE_RAID=1 |
| 1040 |
shift |
1127 |
shift |
|
Lines 1116-1125
Link Here
|
| 1116 |
|
1203 |
|
| 1117 |
FindScsiModules |
1204 |
FindScsiModules |
| 1118 |
|
1205 |
|
| 1119 |
FindRaidModules |
|
|
| 1120 |
|
| 1121 |
FindRootModules |
1206 |
FindRootModules |
| 1122 |
|
1207 |
|
|
|
1208 |
FindRaidModules |
| 1209 |
|
| 1123 |
FindLoopModules |
1210 |
FindLoopModules |
| 1124 |
|
1211 |
|
| 1125 |
FindModules $POSTLOAD_MODNAMES |
1212 |
FindModules $POSTLOAD_MODNAMES |