[U-Boot-Users] How to boot Multi-file image?

Wolfgang Denk
2005-08-27T22:22:15Z

In message <6.2.1.2.0.20050826164053.02f4ae60@192.168.2.1> you wrote:
> I made a multi-file imgage as described here
> http://www.denx.de/twiki/bin/view/DULG/CombiningKernelAndRamdisk
> but I can't boot it bacuse the kernel does not find the ramdisk image.
> How to say to the kernel where to find it? Isuspect I'm missing some
> command line parameters ...

Enable debugging to see if all ATAGs are passed correctly...

Here is how it works for me (with a 2.4 kernel):

Normal "uImage" and "uRamdisk":

-> mkimage -l uImage
Image Name: ARM Linux-2.4.27
Created: Tue Jan 18 22:51:40 2005
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 697368 Bytes = 681.02 kB = 0.67 MB
Load Address: 0x20008000
Entry Point: 0x20008000
-> mkimage -l uRamdisk
Image Name: Simple Embedded Linux Framework
Created: Wed Nov 10 01:35:20 2004
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 1502217 Bytes = 1467.01 kB = 1.43 MB
Load Address: 0x00000000
Entry Point: 0x00000000

Extract raw (compressed) images:

-> dd if=uImage of=kernel.gz bs=64 skip=1
10896+1 records in
10896+1 records out
-> dd if=uRamdisk of=ramdisk.gz bs=64 skip=1
23472+1 records in
23472+1 records out

Build multi-file image:

-> mkimage -A arm -T multi -C gzip -a 0x20008000 -e 0x20008000 -n 'Multi-File Test Image' -d kernel.gz:ramdisk.gz uMulti
Image Name: Multi-File Test Image
Created: Sun Aug 28 00:15:01 2005
Image Type: ARM Linux Multi-File Image (gzip compressed)
Data Size: 2199597 Bytes = 2148.04 kB = 2.10 MB
Load Address: 0x20008000
Entry Point: 0x20008000
Contents:
Image 0: 697368 Bytes = 681 kB = 0 MB
Image 1: 1502217 Bytes = 1467 kB = 1 MB

On the target:

Download:

=> tftp $(loadaddr) cmcpu2/uMulti
TFTP from server 192.168.1.1; our IP address is 192.168.20.1
Filename 'cmcpu2/uMulti'.
Load address: 0x20800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
########################################
done
Bytes transferred = 2199661 (21906d hex)

Check:

=> imi 20800000

## Checking Image at 20800000 ...
Image Name: Multi-File Test Image
Created: 2005-08-27 22:15:01 UTC
Image Type: ARM Linux Multi-File Image (gzip compressed)
Data Size: 2199597 Bytes = 2.1 MB
Load Address: 20008000
Entry Point: 20008000
Contents:
Image 0: 697368 Bytes = 681 kB
Image 1: 1502217 Bytes = 1.4 MB
Verifying Checksum ... OK

Boot:

=> print bootargs
bootargs=root=/dev/ram rw ip=192.168.20.1:192.168.1.1:192.168.1.254:255.255.0.0:cmcpu2:eth0:off panic=1
=> bootm 20800000
## Booting image at 20800000 ...
Image Name: Multi-File Test Image
Created: 2005-08-27 22:15:01 UTC
Image Type: ARM Linux Multi-File Image (gzip compressed)
Data Size: 2199597 Bytes = 2.1 MB
Load Address: 20008000
Entry Point: 20008000
Contents:
Image 0: 697368 Bytes = 681 kB
Image 1: 1502217 Bytes = 1.4 MB
Verifying Checksum ... OK
Uncompressing Multi-File Image ... OK

Starting kernel ...

Linux version 2.4.27-vrs1 (wd at atlas.denx.de) (gcc version 3.3.3 (DENX ELDK 3.1 3.3.3-8)) #1 Tue Jan 18 22:49:47 MET 2005
CPU: Arm920Tid(wb) revision 0
Machine: ATMEL AT91RM9200
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/ram rw ip=192.168.20.1:192.168.1.1:192.168.1.254:255.255.0.0:cmcpu2:eth0:off panic=1
Calibrating delay loop... 34.50 BogoMIPS
Memory: 16MB = 16MB total
Memory: 13080KB available (1289K code, 271K data, 56K init)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
CPU: Testing write buffer: pass
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Installing knfsd (copyright (C) 1996 okir at monad.swb.de).
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Creating 5 MTD partitions on "CMC PU2 flash":
0x00000000-0x00020000 : "Firmware"
0x00020000-0x00030000 : "Environment"
0x00030000-0x000f0000 : "Kernel"
0x000f0000-0x00780000 : "Filesystem 1"
0x00780000-0x00800000 : "Filesystem 2"
i2c-core.o: i2c core module version 2.6.1 (20010830)
i2c-dev.o: i2c /dev entries driver module version 2.6.1 (20010830)
ttyS0 at MMIO 0xfefc0000 (irq = 6) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
ttyS2 at MMIO 0xfefc8000 (irq = 8) is a AT91_SERIAL
ttyS3 at MMIO 0xfefcc000 (irq = 9) is a AT91_SERIAL
ttyS4 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (f6:70:1d:61:b5:9d)
eth0: Davicom 9196 PHY (Copper)
AT91 Watchdog Timer enabled (5 seconds)
Found AT91 i2c
I2C: RS5C372 RTC driver successfully loaded
CMC buzzer driver $Revision: 0.2 $
CMC digital IO driver $Revision: 0.2 $
Serial driver version 0.03 (2004-12-17) with no serial options enabled
ttyS5 at 0xc2084000 (irq = 29) is a TI16752
ttyS6 at 0xc2086000 (irq = 30) is a TI16752
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 2048)
eth0: Link now 100-FullDuplex
IP-Config: Complete:
device=eth0, addr=192.168.20.1, mask=255.255.0.0, gw=192.168.1.254,
host=cmcpu2, domain=, nis-domain=(none),
bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.97 (double precision)
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 1467K
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 56K

BusyBox v0.60.5 (2004.11.10-00:31+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

#

Best regards,

Wolfgang Denk

--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"There are things that are so serious that you can only joke about
them" - Heisenberg