[U-Boot] [OT] initrd problem with m68k linux

Wolfgang Wegner
2010-04-06T13:38:41Z

Dear all,

I know it is a little off-topic for this list, but maybe it is somewhat
related to U-Boot. I really do not know at which stage I am making a
mistake here.

I have a MCF54455 board running U-Boot and a slightly modified kernel
from Freescale (linux 2.6.25). I can boot the system using initramfs
by including the (initial) root fs into the kernel via CONFIG_INITRAMFS_SOURCE.
CONFIG_SYS_BOOTMAPSZ is set to 64MB:
#define CONFIG_SYS_BOOTMAPSZ (CONFIG_SYS_SDRAM_BASE + (64 << 20))

Now I wanted to split the images and load the initrd as a seperate
image. So I made a cramfs image:
/usr/sbin/mkcramfs rootfs rootfs.cramfs
/usr/local/bin/mkimage -n 'Test Ramdisk Image' -A m68k -O linux -T ramdisk -C none -d rootfs.cramfs rootfs.img

Then I load both images via tftp:
-> tftp 0x42000000 192.168.1.100:rootfs.img
[...]
-> tftp 0x44000000 192.168.1.100:uImage
[...]
-> setenv bootargs "initrd=/dev/ram rw root=ram0"
-> setenv initrd_high 0x44000000
-> bootm 0x44000000 0x42000000
## Booting kernel from Legacy Image at 44000000 ...
Image Name: Linux-2.6.25
Created: 2010-04-06 13:14:42 UTC
Image Type: M68K Linux Kernel Image (gzip compressed)
Data Size: 1318376 Bytes = 1.3 MB
Load Address: 40020000
Entry Point: 40020000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 42000000 ...
Image Name: Test Ramdisk Image
Created: 2010-04-06 11:23:36 UTC
Image Type: M68K Linux RAMDisk Image (uncompressed)
Data Size: 6213632 Bytes = 5.9 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Loading Ramdisk to 43a13000, end 44000000 ... OK
Linux version 2.6.25 (router at labor2.local) (gcc version 4.3.3 (Sourcery G++ Lite
4.3-209) ) #46 Tue Apr 6 15:14:31 CEST 2010
starting up linux startmem 0x402f0000, endmem 0x48000000, size 125
MB
console [ttyS0] enabled
** availmem=0x402f2000 pa(am)=0x402f2000
** mstart=0x402f0000 mend=0x47ffe000
bpfn=0x20000 minpfn=0x20178 maxpfn=0x23fff
dma: phys base=0x402f2000 phys end=0x40ffffff virt base=0xef000000
mda=0xefffffff pa(mda)=0x40ffffff
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16312
Kernel command line: initrd=/dev/ram rw root=/dev/ram
[...]
prepare_namespace
rd_load_image
1, from = /initrd.image
List of all partitions:
0100 32767 ram0 (driver?)
0101 32767 ram1 (driver?)
0102 32767 ram2 (driver?)
0103 32767 ram3 (driver?)
No filesystem could mount root, tried: ext3 ext2 cramfs minix msdos vfat romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

As can be seen, I added some printks to see what is going on at all.
rd_load_image() fails at
in_fd = sys_open(from, O_RDONLY, 0);
because "from" is set to "/initrd.image", which is not available. But where
should it come from if there is no root fs yet?

Could anybody point me to where I should look for the mistake? Can it
be a problem in my U-Boot configuration, or is it definitely a problem
with the kernel [configuration]?

Thanks for any comments!

Regards,
Wolfgang