Link to home
Start Free TrialLog in
Avatar of mfuerlinger
mfuerlinger

asked on

Cannot open root device "rd/c0d0" or 00:00

Hi experts

After installing Suse Linux 8.1 (Kernel 2.4.19) on a system using the Mylex DAC 960 PD scsi 3#ch-RAID with one system drive, the boot progress stops with the following messages:

VFS: Cannot open root device "rd/c0d0" or 00:00
Please append a correct "root=" boot option
VFS: unable to mount root fs on 00:00

... Hhmmm ?

Already compiled a new kernel with support for DAC960 and reiserfs (not as modules) - no success.

My installed system runs perfect&stable when started from cd with the "manual-installation->booting a installed system from root=/rd/c0d0p3" - option, BUT: booting form the installed&configured grub-loader (on the MBR=rd/c0d0) still gives the same error message as described above.

Here is my fstab:
/dev/rd/c0d0p1   /boot (ext2)
/dev/rd/c0d0p2   /swap
/dev/rd/c0d0p3   /      (reiserfs)
/dev/rd/c0d0p4   /usr   (reiserfs)

What else is helpfull to help me out ?
thanks in advance for any suggestions, tips and help

Mathias
Avatar of Flash828
Flash828

What boot loader are you using?  If you are using lilo, then check the lilo.conf file.  Under the specific boot type, there should be a line that reads "root=/dev/hdxx", where xx is your channel/partition.  At least this is the way it works for Red Hat... dont know about SuSe.  To test it out, append the proper kernel argument yourself with whatever boot loader you are using (eg, lilo, grub, etc).
okay didn't read that thouroughly enough...  Apparantly you are running GRUB.  the grub configuration file should have a line that reads:

kernel /..... ......

where the first set of dots is the location of the vmlinuz image, and the second set are arguments regarding how to mount the root partition and where it is located.

make sure it says something like:

kernel /vmlinuz ro root=/location.to.root.partition/

Save this file, and reboot... see if it works now.
Again you can just test this out from the screen Grub will provide you with as soon as it loads, by hitting "a" for append, although it may be some other letter first to get to the menu.. either way, I think there are only like 3 letters you can hit initially... just get to append, and then add the line root=/........  Try it out, and let me know what happens
Avatar of mfuerlinger

ASKER

Yes. I'm using GRUB since it was the default boot loader choosen automatically by Suse setup.
Thats ok - although I'm not very familiar with GRUB settings&behaviour since I only used lilo before.

Here is what I did right now:
Booted from CD, starting the proper installed system installed as described above (/dev/rd/c0d0p3 /).

rdev <mybootedkernel> shows:
Root device: /dev/rd/c0d0p3 /

...which seems to be ok.

#############################
here is my grub.conf:
root (hd0,0)
install --stage2=/boot/grub/stage2 grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,0)/grub/menu.lst
quit
#############################
here is part of my device.map:
(hd0)  /dev/rd/c0d0
#############################
here is part of my menu.lst:
title linux
  kernel (hd0,0)/vmlinuz root=/dev/rd/c0d0p3 acpi=off nosmp
  initrd (hd0,0)/initrd
#############################
Sorry dont know what you mean with hitting 'a' during grub-bootup....? To edit the grub.conf or menu.lst I'm using yast or an editor.
thanks for any further help.
Here is more - maybe - helpfull information about my settings:

I'm using 1 RAID1system disk with 4 primary partitions (no extended partitions at all)

fdisk /dev/rd/c0d0 shows:
DEVICE        BOOT START  END    BLOCKS    ID SYSTEM
/dev/rd/c0d0p1  *  1       51    104432    83 Linux
/dev/rd/c0d0p2     52     427    770048    82 Linux swap
/dev/rd/c0d0p3     420   8001  15511552    83 Linux
/dev/rd/c0d0p4     8002  8750   1533952    83 Linux

On th eline that says kernel (hd0,0/vmlinuz root=/dev.....

ADD "RO" at the following location:

kernel (hd0,0)/vmlinuz ro root=/dev/rd/codop3 acpi=off nosmp

YOU MUST HAVE THE RO THERE!  thats not a typo.
there is a typo there though.. I replace codope with "c0d0p3"
there is a typo there though.. I replace codope with "c0d0p3"
I replaced my line of menu.lst with the RO parameter you suggested.
it looks now like this:

kernel (hd0,0)/vmlinuz ro root=/dev/rd/c0d0p3 acpi=off nosmp

After booting my problem still exists:

"Kernel Panic: VFS: Unable to mount root fs on 00:00"
Did you also compiled devfs and intial devfs into your kernel ?
Did not change the settings for devfs and/but can't find any log entries for devfs. Whats the easiest way to check if devfs is compiled for a certain kernel ?
Have a look in /proc/filesystems. There should be a entry with devfs.

I don't have linux available right now, but I think that, when you configure the kernel, it's somwhere in filesystems. Also you need to have "Configure experimental" on
Did you compile RAID support into the kernel?
to mbarbos
there is no entry with devfs in /proc/filesystems
here is my /proc/filesystems:
        ext3
nodev   rootfs
nodev   bdev
nodev   sockfs
nodev   futexfs
nodev   tmpfs
nodev   shm
nodev   pipefs
        ext2
nodev   ramfs
        minix
        iso9660
nodev   nfs
nodev   devpts
        cramfs
        reiserfs

I did not compile a kernel with support for experimental drivers.

to Flash828:
I did not compile RAID support in the kernel. Since RAID and LVM support is not needed when you using hardware RAID-controller cards. (thats what Suses description says)
In my case the RAID-controller sets one system drive which is handled by the system like a normal hdd. The drives name is /dev/c0d0p1 (c0=first RAIDcard, d0=first disk on controller[first channel], p1=first partition)

You could try to boot using root=/dev/sda2, but I think that anyway you'll have to compile devfs and initial devfs support in kernel.
I dont want to boot from root=/dev/sda2 because this means an additional hdd. Right now I have no SCSI-Controller installed/configured, and I want my system to boot from the only drives attached - the Raid drive.

Still not sure what I can do to follow your suggestions about devfs and kernel&initialisation.


Please try booting using root=/dev/sda2. You already have a SCSI controller (the RAID one:)
OK. I will change the boot device to /dev/sda2...hold on.

-.
I must admit: I did not tell you I have a SCSI-Controller (an Adaptec 2970) onboard ... attached is the CD-ROM drive I boot from (sdr). This should not affect my boot problem.

mfuerlinger
The moment you boot, before it gets stuck, you should see how the kernel detects your controller and harddisks and partition tables. An then it will get stuck :)
That should give you an ideea on what device you should use as root.

Disregard my previous comment about devfs, it doesn't seem to be any devfs involved in this matter.

The question is what driver are you using for the mylex controller and if there is anything wrong with your /dev/rd/* files.

So the ideea would be to have a look at what the kernel says when you boot, before getting stuck, and also to boot from CD and list (ls -al) the /<mount point>/dev/rd/c0d0* devices.
All devices seem to be mounted correctly. Thats what my boot screens tell me.
Even the RAID-controller driver. The last message before the error message is about the initialisation of the RAID-controller which ends with: "partition check rd/c0d0p1 rd/c0d0p2 rd/c0d0p3 rd/c0d0p4 OK".

then the next message:
VFS: Cannot open root device "rd/c0d0" or 00:00
Please append a correct "root=" boot option
VFS: unable to mount root fs on 00:00

Tried to boot with the suggested modification: "/dev/sda" as boot location. But error resists:
VFS: unable to mount root fs on 08:00
One thing is that you can get a "grub console" in which you can type commands, so that you don't have to modify the menu.lst file everytime you want to change something.

My ideea is that the kernel doesn't know what /dev/rd/cxx.. at this moment.

So let's try to get rid of /dev/rd/c0d0p3 at boot time....
1. Boot from CD and mount you /boot (c0d0p1) partition somewhere
2. do a "rdev /<mountpoint for c0d0p1>/boot/<your kernel> /dev/rd/c0d0p3"
3. Take out root=/dev/rd/c0... from menu.lst

4 Reboot and see it booting (maybe:)
I did all what you suggested mbarbos.
Hm. ? The mountpoint I set with rdev doesn't "survive" the boot process ? I did not change fstab nor any other settings!


Now the boot process just hangs (no error messages) exactly at the same line of the boottext 'my' error message used to appear.
Last output on screen after finishing to initialize the RAIDcontroller (Partition-Status ok) is:
"reiserfs: found format 3.6 with standard journal"

next the system hangs



I don't know. I would recompile the kernel at this point, using a clear, nice source from www.kernel.org.

I don't reneber and I have no SuSE disk at hand, ca you specify a different root when booting in rescue mode with a SuSE CD ? It should look like:
<image name> root=/dev/rd/c0d0p3
Sorry took me a long time to figure out how to proceed.
ok. Thats - in very brief what happended the last hours:
1. Updated and flashed the Mylex BIOS&Firmware (2 extra eproms on board now!) It's now: BIOS 3.02.03, Firmware: 3.51-0-12
-> did not effect my linux too much :(
2. Decided to insert another HDD as boot device. I attached it to the onboard Adaptec SCSI controller.
-> did not impress my linux :((
3. Forced linux & grub to boot from the Adaptec. Did not count the number of boot processes and varities....
-> still no effect to my linux box, but to me: "loosing more&more hair" :(((
4. Called the SuSE-support hotline, they will charge me for my 5 min call about 10 Euro. - cheaper then replacing my lost hair :)
-> They told me that the are very familiar with my problem. (Ahh-I can see a light in the darkness) Reason for my error-messages is a buggy behaviour of "grub" with RAID-cards AND(!) also with certain SCSI-controllers. uuups!!! They are working on that...
-> For now SuSe offered me a help-issue, which describes the use of "lilo" instead of "grub" as boot loader.
here is the link:
http://sdb.suse.de/de/sdb/html/fhassel_grub_lilo.html

I will have look on the provided help, and tell you more about my hair  ;)
hold on




Hi!

I know that you should be able to use a SCSI/RAID one as a regulat drive in OSes. With linux I have the experience that more often than not you really need to load the driver in order for it to work properly.

Secondly how big is your system drive ?
If it's big enough and you make the partition to large you might get funny and strange errors while booting.

I usually do this:
Partition 1 at beginning if disk = 50Mb and mounts under /boot at least in RH, if suse has no such, make a partition of 500Mb or so holding /, make the rest of disk as a partition holding /usr and swap.

Or if you have /boot make a partition for / and one for swap.

If this dosen't help try to load the driver, you will get better speed and enable the RAM cache and such features.

If you do smaller partitions like this you can also make a image file containing drivers so you don't have to compile drivers into the kernel.

This is the reason I like RH, at setup they detect all drivers put all that is needed at bootup into a image and there are no worries for you.

Regards
/Hans - Erik Skyttberg
Just change your boot device to /dev/rd/c0d0p3

instead of just rd/c0d0p3

remeber that this schema means:

c0 = Controller 0 (in the case of more than one RAID card)
d0 = Means the logical drive created from a single or
     a group of disks, in the MYLEX Configuration TOOL
     that can be launched from the Card BIOS itself or
     using a MS-DOS bootable disk
p3 = Means partition 3 inside that block, (I don't remeber
     how does MYLEX call a group of disks but let's asume
     they call it block)

Linux must be installed then on the array created on the first controller on the first logical block and on partition 3, is this correct?..

Remeber that a RAID can Join Several disks, so that the OS
"thinks" that is only one disk. but it depens on the way you configured the card.

By the way, thi schema c0d0p0 is used on COMPAQ smart Array cards, I am not sure MYLEX uses this same schema.

I hope it helps.

First I have to say sorry for not writting for such a long time.
Since I installed lilo instead of grub (thats what the SuSe support told me - its not mentioned on the compatibilty list) everything works as suspected. Almost a typical and easy installation ;)

For all you folks out there using linux SuSE 8.1 and a Mylex RAID Controller hope you get this information somehow. If you have problems with SUSE 8.1 using GRUB and you have a RAID-controller or an exotic SCSI-controller installed in your system ... -> LILO may also be the SOLUTION !!! especially since SuSE told me about buggy behaviour of GRUB with these kind of disk controllers. Should be better with the next update.

So for me I'm happy with my running system and I really love LILO.

But now my ultimate questions:
Never spent so much points for an answer at EE but what to do now with my open question ? Withdraw ? Leave this status as it is right now forever ? Dividing points for all of you participants is not possible ? Or ?

??

I think I just fixed my mind while typing this lines: I'm so happy and in love with lilo that I will give the points to the one of you who has the best(funniest) reason why he/she should get the points.

Enjoy Mathias


mfuerlinger:
This old question needs to be finalized -- accept an answer, split points, or get a refund.  For information on your options, please click here-> http:/help/closing.jsp#1 
EXPERTS:
Post your closing recommendations!  No comment means you don't care.
No comment has been added lately, so it's time to clean up this TA.
I will leave the following recommendation for this question in the Cleanup topic area:

PAQ - no points refunded

Please leave any comments here within the next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!

paullamhkg
EE Cleanup Volunteer
ASKER CERTIFIED SOLUTION
Avatar of SpazMODic
SpazMODic

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial