Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Linux - KernelThis forum is for all discussion relating to the Linux kernel.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Hello!
I executed the following steps:
1) Download kernel 2.6.16 (FC5's 2.6.16-1.2122) from the distribution's SRPM folder.
2) Unzip source-RPM, etc...
3) Configure with 'make gconfig' (Here is my .config file).
4) make, make modules, make install, make modules_install.
Everything seemed to work fine, and I was happy with my configuration. But then, when I booted the new kernel, I got the infamous message saying "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)".
I've googled this message maybe a 100 times, and looked through this very forum. Many solutions were suggested, but none helped me. I think I compiled this kernel about 15 times...
First, most of the solutions are distribution-specific, and do not help me with Fedora Core 5.
Second, almost all of the people who had this problem use lilo, and had some mistake with the lilo configuration. I use grub, and beside the fact that I let 'make install' configure it for me (which usually works perfectly on FC), I checked, double checked and triple checked the grub configuration file. If this is not enough , here it is. The second kernel (Fedora Core (2.6.16-1.2133_FC5)) is my default kernel, I didn't compile it but rather installed it from RPM, and it works perfectly.
More information I can think of:
1) My Linux drive is regular IDE hard-drive, it's dev is /dev/hdb (I think /boot is /dev/hdb1 and / is /dev/hdb2). Linux (FC3, to be exact) partitioned it.
2) Both /boot and / are ext3 (see kernel .config file above for detail about my configuration - ext3 is compiled into the kernel).
3) mkinitrd works fine. I even tried to create a new initrd file instead of the one that 'make install' creates - just in case... It had the same problem.
4) I have gcc 4.1.1. I've had problems in the past with programs that require gcc 3.x and are compiled with gcc 4.x. Can this possibly be a cause of trouble with the kernel? Though this seems almost impossible, I have to point this out...
5) When booting, I received no further error messages beside the kernel panic. I saw in several places references to other error messages (such as "Replace root= line" or similar), but I received none.
6) This is the first time I'm compiling a kernel, so it is possible that I made some kind of mistake with the configuration... This is why I gave a link to it above.
If there is any more information you need in order to understand this problem, I'd be happy to submit.
Here's an explanation of the problem, step by step:
"Kernel panic - " The computer has reached a point where it is unable to continue; it has no choice but to halt.
"- not syncing" "The good news is, I wasn't in the middle of trying to write un-saved changes to disk when I died." Linux tries to do this ("to sync the filesystem") just before it halts, and it's telling you .. albeit in a backwards sort of way .. that it succeeded in doing that.
"Unable to mount root filesystem" One of the first things that the kernel must do is to "mount" (make available) the "root" (that is, "/") file system. It could not do that.
"On unknown block(0,0)" This is the device-number (0) and the partition-number (0) of the device where the kernel expects the root filesystem to be.
Probable causes: (in order)
The most likely cause is that the root= parameter, which must be specified in the boot-loader's kernel command line, is incorrect or specifies the wrong device. You're supposed to be able to identify the device by label; I've never gotten that to work. I use something like root=/dev/hda1.
Boot-loaders like Grub may count partitions starting from #0; Linux counts them from #1.
Some distros use a complicated "initrd" mechanism to load disk drivers. If this process isn't working for your particular device, there can be grief.
Any other ideas? Please???
I've tried using the other kernel's initrd file, I changed the "/dev/VolGroup00/LogVol00" to "/dev/hdb2" (which is my root filesystem), I don't know what else I can do..!
What kind of hard drive you have. You sure you have the required drivers compiled in? If still it doesn't work - boot up the working kernel, run dmesg, compare the section where it's mounting '/' with the corresponding section just before the panic msg with the new kernel.
Hope that helps.
I'm having the same types of issues that I'm reading about in various posts here.
When I boot up with 2.4.31 (default Slackware 10.2) and run "dmesg | grep vfs" I see: "VFS: Mounted root (ext3 filesystem) readonly." Is there a better phrase to look for there?
I've made sure the compile ext3 into the kernel (3 times) but it has changed nothing. Any more ideas on this matter?
grep for hda if you have IDE drive or sda for SCSI in dmesg. You should be getting at least 3 matches; type of your drive, nr of sectors, and nr of partitions. Before the FS the kernel need to find the drivers for your hard drive. Include the drivers from the Block Device section of the config menu.
If you can't figure that out compare the .config from the running kernel with the 1 in new kernel. Look out for differences in 'Block Device' section.
I compared the two .config and there were too many differences (even in the Block Device section) to try to discern anything. Maybe this was a bad idea, but what I did was load the 2.4.31 .config file through "make menuconfig" (2.6.17), and then I went through there and turned off what I was absolutely sure wasn't needed. It's a pretty bloated kernel from what I was making before, but maybe it will do the trick? I can recompile it again later if there is an issue. More to come...
Wow. The kernel took an extra 10 minutes to compile from all the extra stuff in it and it still crashed at the same exact spot. I'm not sure where else to go with it...
I can have a look at it if you want. Send the dmesg o/p from the working kernel and .config from the new one.
Thanks for the offer! I'm trying one more shot out right now of using the stock 2.6.13 kernel on the Slackware CD as a base config. If that doesn't work (compiling modules right now) then I'll get those outputs into here.
why dont you download the rpm file and update your kernel through that.
I appreciate the tip but for one Slackware isn't an RPM based distro (although I hear rpm2tgz works ok). Beyond that, I'm trying to get Slackware to run on my IBM Thinkpad R40 which needs several special items compiled into the kernel for wireless to work and other features. Stock kernels seem to work fine but I can't use the laptop to it's fullest.
I solved my problem (with a little help from a friend)!
Three things I had to compile into the kernel for it to work w/o the above error:
Code:
Device Drivers->Multi-device support (RAID and LVM)
Device Drivers->Multi-device support (RAID and LVM)->Device mapper support
Device Drivers->Block devices->RAM disk support->Initial RAM disk (initrd) support
@ silmaril8n: I can see that all of the above are Y in the 2.6.13 kernel, but the two LVM options that you need in order to get rid of the above error, are not set in the config file for 2.6.17. Try Setting them to Y.
Good luck!
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.