I'm using an embedded board ARM9 SAM9G25. I want to boot from SD card.
When I build a linux kernel with a built-in rootfs (initramfs) then it boots.
I want to separate the kernel from rootfs and I generated a rootfs.squashfs.
The kernel command line is:
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)
Regression
I believe that partitioning doesn't lead to the solution, since booting with the same settings but with an initramfs is possible.
When booting with the initramfs image $ ls /dev
doesn't list mmcblk
or sdb
.
$ dmesg
mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
atmel_mci atmel_mci.0: Atmel MCI controller at 0xf0008000 irq 12, 1 slots
mmc_host mmc0: card is not present
mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
atmel_mci atmel_mci.1: Atmel MCI controller at 0xf000c000 irq 26, 1 slots
mmc_host mmc1: card is not present
(Yes the card is in the slot ;)
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.)
- 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?
cat /proc/partitions
)? Posting your kernel.config
might inspire someone too.