Unable to mount root device 806

 
Todd Kennedy
Frequent Advisor

Unable to mount root device 806

Hello all, I am trying to compile and boot kernel version 2.4.18 on a Dell 2450 so I can use the Linux Virtual Server. The Dell 2450 has a build in hardware RAID controller. The two modules that I am loading for scsi support are aic7xxx and aacraid. I can compile the kernel just fine and I can create the initrd with no problems. It's when I reboot the server that the problems start happening.

When booting it's kind of hard to tell what's going on because the information is flying by on the screen. So what I can see when the kernel panics and halts is that it can't mount the root device 806, which is the scsi sda6 device. That's where the root filesystem is located.

what I've tried so far:
I've tried statically compiling in the scsi modules. That did not work. I tried renaming the scsi modules so that the aic7xxx driver loads before the aacraid driver. That did not work. (I am running out of options here). I also had both scsi drivers load as modules and that did not work.

Do I need to check the initrd and ensure that it has all the proper info for drivers and devices? How do I do this.

I've tried mounting it but I get an error that states, please specify a FileSystem Type. That's probably because I am doing mount -0 loop /boot/initrd-2.4.18.img /mnt/test

Does anyone have any ideas. I have been working on this for a few days and I can't seem to figure it out. Other (distro kernels work just fine, i.e. 2.4.2-2smp, 2.4.9-34smp.)

I think I am missing a step here but what step is the question?
16 REPLIES 16
I_M
Honored Contributor

Re: Unable to mount root device 806

Hi

# mkdir /mnt1
# cp /boot/yourinitrd.img /tmp
# cd /tmp
# mv yourinitrd.img yourinitrd.gz
# gzip -d yourinitrd.gz
# mount -o loop yourinitrd /mnt1
# cd /mnt1/lib
# ls

What you can find?

Good luck

K.C. Chan
Trusted Contributor

Re: Unable to mount root device 806

do what iida suggested, and check if your scsi modules is loaded in the initrd. If not you will have to copy it and mv your initrd back to /boot, then do lilo -v and re-boot
Reputation of a thousand years can be determined by the conduct of an hour
Todd Kennedy
Frequent Advisor

Re: Unable to mount root device 806

So far what I have found out is that scsi_mod and sd_mod where missing from the config as modules and thus didn't get loaded. Since then I have fixed that and am now working on determining why I get the error:

request_module[block-major-8]: Root fs not mounted

I also found out that I didn't have initrd in the kernel config.

I read a posting somewhere from someone with a similar problem.
---------posting-----------
> Kernel panic:VFS:Unable to mount root fs on 08:03
>
----Here is the reply-----
It seems you have compiled the driver for your root fs as a module and not
into the kernel.
--------------------------

Where in the kernel config do you specify rootfs as module or static. Is this the initrd option?

K.C. Chan
Trusted Contributor

Re: Unable to mount root device 806

I had similar problem, have a look a this link: http://forums.itrc.hp.com/cm/QuestionAnswer/1,,0xdd647d4cf554d611abdb0090277a778c,00.html

after mounting your initrd make sure that dir lib contains the necessary modules for boot up and that linuxrc script actually calls the modules. here's an example from my linuxrc script in initrd:
echo "Loading sym53c8xx module"
insmod /lib/sym53c8xx.o
echo "Loading aic7xxx module"
insmod /lib/aic7xxx.o
echo "Loading jbd module"
insmod /lib/jbd.o
echo "Loading ext3 module"
insmod /lib/ext3.o

I hope this helps.
Reputation of a thousand years can be determined by the conduct of an hour
Todd Kennedy
Frequent Advisor

Re: Unable to mount root device 806

I have checked lib directory in initrd and it has the scsi mods in there. Should it also have the filesystem ones as well?

Also, in /etc/fstab the root device is defined as:

LABEL=/ ext2 defaults 1 1

Is LABEL passed from LILO? what is tell the kernel that the root device is 806 or /dev/sda6?
K.C. Chan
Trusted Contributor

Re: Unable to mount root device 806

Yes, if you're planning to use ext3. You also need to make sure that jbd.o is also in there bec. ext3 is dependent on it. You will also have to make sure that linuxrc file (in initrd offcourse) explicitly loads all modules in lib.

As for your inquery, your fstab files looks fine (assuming you are currently using ext2). I think the reason your err comes up during boot is that not all neccessary modules were loaded during boot up, so the kernel pukes when trying to mount root and kack "can't mount root fs 8:06 ... ". I hope this helps.
Reputation of a thousand years can be determined by the conduct of an hour
Todd Kennedy
Frequent Advisor

Re: Unable to mount root device 806

I agree, but how do I determine what module is not getting loaded? It's a catch 22.
K.C. Chan
Trusted Contributor

Re: Unable to mount root device 806

You should be seing what modules is being loaded during boot up, for example here's what's in linuxrc from initrd file:
echo "Loading sym53c8xx module"
insmod /lib/sym53c8xx.o
you should be seing "Loading sym... module" during boot up. Is there anything in your linuxrc file when you mount your initrd file?
Reputation of a thousand years can be determined by the conduct of an hour
Todd Kennedy
Frequent Advisor

Re: Unable to mount root device 806

ah ha!

I now see the loading of modules and it successfully detects the scsi raid controller and the array. But now I get a new error.

Creating Root Device
mkrootdev: mknod failed 17
Mounting Root Filesystem
mount: error 16 mounting ext2
pivotroot fails with error 2

It's last breath before death is:

Kernel Panic no init found. Try passing init= to kernel.

Well at least I have made some progress.