Hi,
I am trying to boot Android on a TI OMAP3430 based device. The device
boots up to a point where it tries to find the initrd image but cannot
find it.
My kernel version is 2.6.27. I am using a custom OneNAND flashing
utility to flash the device with the bootloader, initrd image, kernel
and Android file system. My bootloader copies the kernel and initrd
image to RAM and then jumps to the kernel.
The kernel boots up fine to a point where it tries to mount root. Then
it gives the following error:
No filesystem could mount root, tried: ext3 ext2 msdos vfat
<0>Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-
block(1,0)
On debugging I found that the follwing function call returns -2 (-
ENOENT)
in_fd = sys_open(from, O_RDONLY, 0);
This is called in file \init\do_mounts_rd.c inside function:
int __init rd_load_image(char *from)
This in turn is called from do_mounts_initrd.c
if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0)
^^^^^^^^^^^^^^
I found that initrd.image is created in \init\initramfs.c
static int __init populate_rootfs(void)
{
...
if (initrd_start) {
...
fd = sys_open("/initrd.image", O_WRONLY|O_CREAT, 0700);
...
Here initrd_start is always zero so this condition never gets true. So
initrd.image is never created.
In short, while booting sys_open("/initrd.image", O_RDONLY, 0); fails
with -2.
I have checked the initrd image is present at the memory location
specified in kernel tags when kernel starts.
Can anybody point to what could be the possible reason for this
problem?
Regards,
Zamir
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---