"Jared" <[EMAIL PROTECTED]> wrote:
>I have a server running on RAID 1 with the following partitions:
> /sda1 /
> /dev/md0 /boot
> /dev/md1 /usr
> /dev/md2 /var
>
>My server is Redhat 6.2 with kernel 2.2.16-3. It works fine until
>I upgraded it (using source distribution) to 2.2.19. After I rebooted
>to the new kernel, I got this error:
>
> Starting up RAID devices: /dev/md0: Invalid argument
> /dev/md0 is not a RAID or LINEAR array !
> /dev/md1 is not a RAID or LINEAR array !
> /dev/md2 is not a RAID or LINEAR array !
>
> *** An error occured during the RAID Startup
>
>I compiled the new kernel with Linear and Raid 0, 1, 4 & 5 enabled.
>I also noticed that my original lilo.conf contains a line
> initrd=/boot/initrd-2.2.16-3.img
>so, I created a new initrd-2.2.19.img but the problem still remains.
>
>What could be wrong here and what should I do to solve this ?
I'm not familiar with RAID devices but the ff. might help narrow down the source of
your problem:
Are you using software or hardware RAID? Not sure, but I think /dev/mdx is for
software RAID only. If you're using hardware RAID, make sure that you have the proper
drivers compiled into the kernel or as modules. Compiled into the kernel is probably
better.
How did you create this initrd-2.2.19.img? I will assume that you assumed that
initrd-2.2.16-3.img is a kernel image file. It is most probably not (I'm not familiar
with RH). It is most probably an initial ram disk or initrd. See your
/path/to/src/linux/Documentation/initrd.txt for more info. An initrd is basically a
very small, but basically complete, linux file system which is loaded into ram and
booted to at startup. It then does some initialization or something then probably
loads the main system.
In your case, I assume, initrd is used for setting up the RAID devices before booting
it, since it cannot be directly booted (no root fs).
It might be helpful for you if you could examine the contents of the
initrd-2.2.16-3.img file. It's a compressed file system so you must first uncompress
it:
Check if it's indeed a compressed file:
>file initrd-2.2.16-3.img
then uncompress it:
>zcat initrd-2.2.16-3.img > initrd
Since it's a file system, it must be mounted somehow. AFAIK, there are two ways of
doing this. Using a loop device or a ram disk. I will try to explain the use of a
loop device. man losetup for details. For this to work, loop device support must be
compiled into the kernel or as a module.
If it's a module:
>insmod loop.o
Then associate your file to the first loop device:
>losetup /dev/loop0 initrd
We can then mount the loop device:
>mount /dev/loop /mnt
You can then examine the contents of /mnt like any "normal" file system. Check the
init files to determine how the system is initialized.
Simply replacing the kernel image (and device drivers, if applicable) in the initrd
would probably work. Try that and make a new initrd as follows:
Unmount the loop device:
>umount /mnt
Compress the file:
>dd if=/dev/loop0 | gzip -v9 > initrd-2.2.19.img
Change the initrd= line in your lilo.conf to point to the new initrd, run lilo, cross
your fingers, pray, then reboot.
HTH,
abramos
__________________________________
www.edsamail.com
_
Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph
To leave: send "unsubscribe" in the body to [EMAIL PROTECTED]
To subscribe to the Linux Newbies' List: send "subscribe" in the body to
[EMAIL PROTECTED]