[U-Boot] uboot kernel rejects filesystem

Detlev Zundel dzu at denx.de
Tue May 12 11:58:05 CEST 2009


Hi Bharat,

> I am very new to u-boot.

Welcome aboard!

> I have kernel image, which I loaded to NOR of my board and with bootm,
> control passes to kernel and it starts booting.
> There is panic in kernel: since it can not find the file-system. I am
> afraid, I did make trivial mistake.
>
> I have flashed squashfs filesystem image to NOR @ address NOR1 <I did not
> define any partition>.
> I do not have MTD support.
>
> Now I tried booting like after setting
>
>
> setenv kernel_addr 0xBF060000        <<Note this has u-boot hdr generated
> form mkimage>>
> setenv ramdisk_addr 0xBF260000    <<Note this does not have u-boot hdr
> generated form mkimage>>
> setenv bootargs 'filesystem=squashfs'
> I do bootm ${kernel_addr} ${ramdisk_addr}

This is not correct.  The second argument for bootm is a "real ramdisk"
or "initrd" in Linux speak.  The squashfs filesystem that you use needs
a MTD device and thus can not be passed in this way.

> I do get error from U_BOOT that :
> *Wrong Ramdisk Image Format
> Ramdisk image is corrupt or invalid

That's to be expected, because U-Boot wants the initrd to be wrapped
with mkimage also - which is irrelevant in your case though.

> *I am sure that I have done something wrong in this process:
>
> Few Questions which I could not find the answer:
> 1. Can I nor-flash the image without u-boot hdr.

Sure you can.  You should flash it to the address of a partition defined
inside of the Linux MTD subsystem.

> 2. Is it necessary to have MTD partition defined.

You will of course need to define MTD partitions inside of Linux -
whereas in U-Boot this is optional.

> 3. Do we have any document which specify the boot arguments in context of
> U_BOOT. I tried denx website. I could not figure out much. May be I do not
> what to search for.

What exactly do you mean by "boot arguments"?

> Any help would be highly appreciated.

To solve your problem, do the following:

1. Find out which MTD device (in Linux) you want to use to hold the
   squashfs image.  I'll assume mtd0 below.
2. If you do not want to use partitioning in U-Boot then determine the
   physical address that this device maps to
3. Flash the squasfs image to that address
4. Be sure to include "root=/dev/mtdblock0" on the Linux command line so
   Linux knows where it finds its rootfs.

Cheers
  Detlev

-- 
We support democracy, but that doesn't mean we have to support
governments that get elected as a result of democracy.
                                     -- George W. Bush - March 30, 2006
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the U-Boot mailing list