Help with booting with very large initrd
Marc.Howard at KLA-Tencor.com
Fri Aug 25 11:38:35 EST 2006
I'm developing a PPC440GX based board that uses U-Boot to boot a
multi-file boot image composed of the kernel and a very large (> 96MB
uncompressed) initrd file. The board has 512MB of RAM of which the
upper 16MB is reserved for dedicated hardware. The 16MB block is
reserved via "mem=496M" and U-Boot is told to stay out of that area by
Before anyone asks there are several reasons for doing things this way.
NFS is not an option in the target environment.
I can tftp the combined boot image to my board. I checked the crc with
the crc32 command and it agrees exactly with the result obtained on the
host machine using the boot file. Therefore there is not a "TFTP >32MB"
If I boot I get the following:
Waiting for PHY auto negotiation to complete... done
ENET Speed is 1000 Mbps - FULL duplex connection
Using ppc_4xx_eth2 device
TFTP from server 192.168.168.108; our IP address is 192.168.168.111
Load address: 0x400000
Bytes transferred = 38825407 (2506dbf hex)
Automatic boot of image at addr 0x00400000 ...
## Booting image at 00400000 ...
Image Name: Linux-2.6.10_mvl401-440gx_eval-I
Created: 2006-08-25 1:01:29 UTC
Image Type: PowerPC Linux Multi-File Image (gzip compressed)
Data Size: 38825343 Bytes = 37 MB
Load Address: 00000000
Entry Point: 00000000
Image 0: 1137986 Bytes = 1.1 MB
Image 1: 37687343 Bytes = 35.9 MB
Verifying Checksum ... OK
Uncompressing Multi-File Image ... OK
Loading Ramdisk to 1cc0e000, end 1efff02f ... OK
Linux version 2.6.10_mvl401-440gx_eval (cram at toaster.kla-tencor.com)
(gcc version 3.4.3 (MontaVista 3.4.3-25.0.107.0601076 2006-07-21)) #46
Thu Aug 24 17:28:09 PDT 2006
IBM Ocotea port (MontaVista Software, Inc. <source at mvista.com>)
Built 1 zonelists
Kernel command line: ramdisk_size=262144 root=/dev/ram rw
PID hash table entries: 2048 (order: 11, 32768 bytes)
RAMDISK driver initialized: 8 RAM disks of 262144K size 1024 blocksize
loop: loaded (max 8 devices)
......more stuff deleted......
eth0: link is down
eth0: link is up, 1000 FDX, pause enabled
device=eth0, addr=192.168.168.111, mask=255.255.255.0,
gw=255.255.255.255, host=scpu2, domain=, nis-domain=(none),
bootserver=192.168.168.108, rootserver=192.168.168.108, rootpath=
RAMDISK: Compressed image found at block 0
crc error (orig 0x9a278d64, CRC_VALUE 0xa7bcd2e3 -- ignoring!
length error (orig = 0x0c000000, bytes_out = 0x0c000015 -- ignored
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 120k init
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found. Try passing init= option to
<0>Rebooting in 180 seconds..
(I modified lib/inflate.c so that the crc and length checks would
provide more info).
Since the overall file CRC is good and U-Boot checksums are also okay
this looks like some sort of size limitation with the inflate routine.
BTW, The kerenel was made assuming a 256MB ramdisk; likewise the command
line specs one as well. The initrd image would fit easily in that
Have any of you worked on this problem before and come up with a
More information about the Linuxppc-embedded