Starting dmraid in initrd

Andre Hasekamp AndreHasekamp at netscape.net
Sun Nov 13 16:59:38 UTC 2005


Hi,

This must be a straightforward one for all you people booting from a 
disk array with the support of
dmraid.

The issue is simply this. When I do:

dmraid -ay
dmraid -sa

in a running non-RAID system, everything is fine, the second command 
shows my RAID set is active.
Now, when I give the same 2 commands in init on initrd, my RAID set is 
not active (or, dmraid -si
then indeed shows that my RAID set is not active).

Hopefully someone can give me a tip that helps me get dmraid started on 
initrd.

Next follows a detailed description of my environment. Detailed, because 
after what I've been
through until now, it can only be the "little" things that make the 
"big" difference.

Since I stumble over this problem for a while now, I can say that I 
tried with different SuSe Linux
distributions and with different dmraid versions. At the moment I use 
SuSe 10.0 (kernel 2.6.13.15-
smp) and dmraid 1.0.0.rc9. My RAID controller is a Promise FastTrak S150 
TX4 with 2 SATA disks
connected to it in RAID 0 mode. The dmraid device name for the FastTrak 
controller becomes
pdc_dbhbgbjdgi.

Eventually, of course, I'm trying to do something like Lin, Weichuan 
described in the thread "How-to
for dmraid OS drive(s)?" in this discussion group. This thread had been 
started on 2005-08-22.

So, first I made a static link of dmraid and tested it in the running 
system where I set PATH="", to
make sure I used the right dmraid.

Then I see that everyone modifies mkinitrd. Unfortunately for this 
problem, mkinitrd is different for
different distributions, so I cannot simply adopt what others in this 
discussion group publish. To keep
things as simple as possible, I decided to go "back to the basics" and I 
simply unzipped and un-cpio-
ed the SuSe initrd and modified that one. By now (version 10.0) SuSe has 
had good reasons
(probably in the context of migrating to udev) to replace "linuxrc" by 
"init", but for this description, we
can consider them to be one and the same thing.

Still, after writing the previous paragraph, it is my feeling that this 
is the first and I'm afraid only
discussion group to try and not the SuSe discussion groups. In the SuSe 
discussion groups, they only
discuss software RAID whenever they use RAID. So far I have not seen any 
reference to dmraid.

My addition to init on initrd consists of the following statements:

echo "Creating dmraid control device"
# Create /dev/mapper like in /sbin/devmap_mknod.sh
mkdir -p –mode=755 /dev/mapper
# Create /dev/mapper/control like in /sbin/devmap_mknod.sh
# with the same numbers I always see in my running system
mknod –mode=600 /dev/mapper/control c 10 63
echo "Activating RAID sets"
# Saw that someone else used –ignorelocking. Not documented in dmraid -h.
# Eventually added –ignorelocking.
dmraid -ay –ignorelocking
echo "dmraid shows active RAID sets"
dmraid -sa
echo "dmraid shows inactive RAID sets"
dmraid -si

These statements are added as late as possible in the init script (after 
"udevstart", after modprobe
sata_promise and after modprobe reiserfs(probably not necessary)), but 
just before the script starts
to discover the root device.

Then I cpio and gzip the initrd and copy it with an appropriate name to 
/boot.

The relevant entry of /boot/grub/menu.lst looks as follows:

###Don't change this comment - YaST2 identifier: Original name: dmraid###
title SUSE LINUX 10.0 dmraid
root (hd0,0)
kernel /vmlinuz root=/dev/mapper/pdc_dbhbgbjdgi8 vga=0x31a selinux=0
resume=/dev/mapper/pdc_dbhbgbjdgi9 splash=silent showopts
initrd /initrd-2.6.13-15-smp-dmraid

So, in the step-by-step approach, this is the "intermediate" situation 
where /boot is still on the non-
RAID disk and the root (/) is on the RAID system.

/boot/grub/device.map looks as follows:

(fd0) /dev/fd0
(hd1) /dev/sda
(hd2) /dev/sdb
(hd0) /dev/hda

And then I boot. The last things I see on screen during booting, using 
this initrd are the echos and
messages from dmraid and finally, not surprising because the dmraid set 
is not active:

Waiting for device /dev/mapper/pdc_dbhbgbjdgi8 to appear: 
............... not found – exiting to /bin/sh

Following this exit, you still have limited shell functionality (those 
functions which are on initrd). No ls.
So, what I do to check:

cd /dev/mapper
mknod control ... (the node is already there)
rm pdc* (response: no such file or directory)

So the dmraid control device is there. The pdc devices are not there, 
but we knew that already from
dmraid -si. Doing dmraid -ay at this stage also does not help, the RAID 
set will not activate.

Before considering more drastic measures, I thought I'd try this 
discussion group.





More information about the Ataraid-list mailing list