[U-Boot] using initrd with U-boot on the imx28evk

Marek Vasut marex at denx.de
Thu Sep 13 01:44:28 CEST 2012


Dear Bill,

> I'm using U-boot version:  U-Boot 2012.07
> 
> Through googling, I've come across several variations of using a
> ramdisk.  So I selected some things that looked good.  So basically, I
> am building  a rootfs as a ramdisk by:
> 
>     dd if=/dev/zero of=./myinitrd.img bs=1M count=35
>     mke2fs -m 1 ./myinitrd.img
>     mkdir ./myinitrd
>     mount -t ext2 ./myinitrd.img ./myinitrd -o loop
>     cp -r rootfs/*  ./myinitrd/.
>     umount ./myinitrd/
>     gzip ./myinitrd.img
>     rm -rf myinitrd
> 
> 
> Then I use the u-boot tool to prepare it for use with u-boot by:
>       u-boot-imx/tools/mkimage  -n 'MyRamDisk' -A arm -O linux -T
> ramdisk -C none -d ./myinitrd.img.gz rootfs-initrd
> 
> I place both both my uImage and rootfs-initrd on a USB stick and insert
> it into the imx28evk and enter u-boot command line.  I then do:
> 
>     usb start
>     fatload usb 0 0x42000000 uimage
>     fatload usb 0 0x43000000 rootfs-initrd
>     setenv bootargs console=ttyAM0,115200n8 debug root=/dev/ram rw
> ip=dhcp  fec_mac=
>     bootm 0x42000000 0x43000000
> 
> 
> u-boot then starts booting with:
> 
> ## Booting kernel from Legacy Image at 42000000 ...
>     Image Name:   Linux-2.6.35.3-571-gcca29a0-g45b
>     Created:      2012-09-08  22:31:46 UTC
>     Image Type:   ARM Linux Kernel Image (uncompressed)
>     Data Size:    2582304 Bytes = 2.5 MiB
>     Load Address: 40008000
>     Entry Point:  40008000
>     Verifying Checksum ... OK
> ## Loading init Ramdisk from Legacy Image at 43000000 ...
>     Image Name:   MyRamDisk
>     Created:      2012-09-12  20:51:35 UTC
>     Image Type:   ARM Linux RAMDisk Image (uncompressed)
>     Data Size:    37774 Bytes = 36.9 KiB
>     Load Address: 00000000
>     Entry Point:  00000000
>     Verifying Checksum ... OK
>     Loading Kernel Image ... OK
> OK
> 
> Starting kernel ...
> 
> Uncompressing Linux... done, booting the kernel.
> Linux version 2.6.35.3-571-gcca29a0-g45b53d0-dirty (blsousan at ubuntu)
> (gcc version 4.4.4 (4.4.4_09.06.2010) ) #13 PREEMPT Sat Sep 8 14:06:34
> PDT 2012
> CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
> CPU: VIVT data cache, VIVT instruction cache
> Machine: Freescale MX28EVK board
> ....
> ....
> ....
> 
> The kernel starts to boot, I get all the kernel output, and at the end
> it does not find the rootfs.  I get:
> 
> ...
> ...
> ...
> 
> List of all partitions:
> b300         3872256 mmcblk0 driver: mmcblk
>    b301            1024 mmcblk0p1
> 0800          503808 sda driver: sd
>    0801          503792 sda1
> No filesystem could mount root, tried:  ext3 ext2 vfat msdos iso9660
> Kernel panic - not syncing: VFS: Unable to mount root fs on
> unknown-block(1,0)
> Backtrace:
> 
> 
> I not sure how the kernel knows where the ramdisk lives in memory (
> 0x43000000) where the the uboot put it ?
> 
> 
> Thanks,
> Bill
> 
> On 9/12/2012 5:29 PM, Marek Vasut wrote:
> > Dear Bill,
> > 
> >> Has anyone used U-boot on the imx28evk with initrd to setup a small
> >> rootfs in RAM?  I need the ability to do have a small temp rootfs to
> >> assist in mounting a full rootfs from a USB for field upgrade purposes.
> > 
> > Yes, it's a linux thingie though. What's the problem? What version of
> > uboot do you use?

Some ancient kernel you have ... did you enable ramdisk support in Linux? And 
gzip compression for it ? And loop back block driver ?

> >> Thanks,
> >> Bill
> > 
> > Best regards,
> > Marek Vasut

Best regards,
Marek Vasut


More information about the U-Boot mailing list