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.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I'm using an embedded board ARM9 SAM9G25 which I want to boot from SD Card. When I build a linux kernel with a built-in rootfs (initramfs) then it's working as it should. Now I want to separate kernel from rootfs and I generated an rootfs.squashfs.
The kernel command line is now
console=ttyAT0,115200 root=/dev/mmcblk0 ro rootfstype=squashfs
When I then boot my system the following kernel panic occurs:
VFS: Cannot open root device "mmcblk0" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
I believe that partitioning doesn't lead to the solution, since booting with the same settings but with an initramfs is possible.
I found out that when booting with the initramfs image, when I do an ls /dev no mmcblk or sdb is listed.
After hitting dmesg following interesting lines appear:
So what I think happens now is, that U-Boot can read the SD device but the kernel doesn't ( since an initramfs is bootable, a single kernel can be loaded too but the rootfs, opened from kernel, cannot be found). In make linux menuconfig I already enabled
Device Drivers
<*> MMC/SD/SDIO card support
+ + <*> MMC block device driver
+ + <*> MMC host test driver
+ + <*> Atmel SD/MMC Driver (Atmel Multimedia Card Interface support)
+ + [ * ] Atmel MCI DMA support (Exp.)
+ + <M> Secure Digital Host Controller Interface support
but still with this setting it seems that he's not able to use the SD device. I'm a bit clueless at this point, can someone give me a hint?
You get this error when kernel is unable to access the block device, like when kernel has no support for HDD controller chipset. Also make sure your kernel has support for partition table used (if any).
You get this error when kernel is unable to access the block device, like when kernel has no support for HDD controller chipset. Also make sure your kernel has support for partition table used (if any).
I already read somewhere if unknown-block(x,y) appears and x = 0 then the whole device couldn't be accessed and y = 0 when just the partition couldn't be found. That confirms my assumption that the kernel isn't even able to find the device. But I've enabled the SD/MMC support as you can see in the post before.
Alright, what kind of hardware is this SD connected to? USB? Whatever it is it has to be compiled into kernel and not as module. BTW, you can get unknown-block(x,y) error where x and y both are not zero, this means the filesystem used is not compiled into kernel.
Whatever it is it has to be compiled into kernel and not as module.
I'm not quiet sure what you mean by that, the options I mentioned in the top post are made in linux menuconfig, and as far as I know they should not be a module. BTW if i do "lsmod" with the running image (that's the same configuration but with a initramfs), an empty list is printed out.
The SD is internal so it's mmcblk, if it was usb then it should be sdb i know, but any of them work.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.