
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@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?
Thanks, Bill
Best regards, Marek Vasut