Skip to contentSkip to conversation

What linux kernel binary do I use????

U-Boot Graeme Russ 2 participants 2 messages Jan 27, 2010

lore
Share & tools
lore
#0 lore raw

Hi All,

I am really REALLY stuck - I don't know what kernel image to use with bootm (and where to load it and quite a few other things but getting the right image would be a good start)

Now I _do_ have the go command working (needed a bit of a source tweak). so I can:

boot > setenv loadaddr 40000
boot > loadb
boot > Ctrl-\ c
C-Kermit>send hello-world.bin
C-Kermit>Ctrl-\ c
boot > go 40000
## Starting application at 0x00040000 ...
Example expects ABI version 6
Actual U-Boot ABI version 6
Hello World
argc = 1
argv[0] = "40000"
argv[1] = "<NULL>"
Hit any key to exit ...

## Application terminated, rc = 0x0
boot >

So, I cloned the linux kernel git repository and built 2.6.33rc5, ran make xconfig, setup some options and compiled.

I have tried:

linux-2.6/arch/x86/boot/bzImage
linux-2.6/arch/x86/boot/vmlinux.bin
linux-2.6/arch/x86/boot/compressed/vmlinux

I've tried to load these at 0x0, 0x10000, 0x100000

bootm always results in:
Wrong Image Format for bootm command
ERROR: can't get kernel image!

go always results in a General Protection fault

README-i386 details loading at 0x0 and running a straight bootm but this always gives me 'Wrong Image Format for bootm command'

I just simply do not understand what I need to do and it is really frustrating that something so simple is so hard to do.

Regards,

Graeme

#1 lore raw
Quoted 3 lines

I am really REALLY stuck - I don't know what kernel image to use with bootm (and where to load it and quite a few other things but getting the right image would be a good start)

I think bootm wants uImage. i.e., the "u-boot image". There is no rule for "make uImage" for x86, but you can run "mkimage" by yourself.

The image format (thus uImage) is just a 64 byte header in front of a binary file, with magic number, lenght, checksum and other information.

Actually, common/cmd_bootm.c::bootm_start() calls boot_get_kernel, which uses img_addr to look for the format. genimg_get_format then is in common/image.c, where image_header_t is used as defined in include/image.h. I admin "uImage" doesn't appear in the functions, though.

Then there is the new FIT format, but I think your want to start with the legacy format.

Hope this helps
/alessandro