QEMU/GRUB: No multiboot header found

Chris Johns chrisj at rtems.org
Mon Dec 22 22:47:38 UTC 2008


Massimo Tipaldi wrote:
> Dear Joel,
> 
> I have followed your suggestions, but unfortunately the same behaviour 
> is observed.
> 
> In any case, I would like to point out some important points:
> 
> 1) to compile RTEMS, in the directory /d/opt/rtems-4.9/bin, I was 
> obliged to rename all the files in order to remove the version number 
> (for instance, i386-rtems4.9-g++.exe --> i386-g++.exe).

This is wrong and should not be done. It usually means you have not configured 
RTEMS correctly. The Wiki entry:

http://www.rtems.org/wiki/index.php/MinGW_Tools_for_Windows#Building_RTEMS

says:

  ../rtems-4.9.0/configure --target=m68k-rtems4.9 --enable-multilib \
   --prefix=/c/opt/src/rtems/m68k

Please note the version number. Could you please try a configure this way ?

> 
> 2) to produce my Hello Word, I have updated the Makefile.inc 
> (/d/opt/rtems-4.9/build-rtems/i386/c/pc386/make):
> 
> .....
> 
> prefix = /d/opt/rtems-4.9/build-rtems/i386/c/pc386
> exec_prefix = /opt/rtems-4.9/i386-rtems
> 
> CC_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-gcc --pipe 
> -I/d/opt/rtems-4.9/build-rtems/i386/pc386/lib/include
> 
> CXX_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-g++
> AS_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-as
> AR_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-ar
> NM_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-nm
> LD_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-ld
> SIZE_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-size
> OBJCOPY_FOR_TARGET = /d/opt/rtems-4.9/bin/i386-objcopy
> 
> CC= $(CC_FOR_TARGET)
> CXX= $(CXX_FOR_TARGET)
> AS= $(AS_FOR_TARGET)
> LD= $(LD_FOR_TARGET)
> NM= $(NM_FOR_TARGET)
> AR= $(AR_FOR_TARGET)
> SIZE= $(SIZE_FOR_TARGET)
> OBJCOPY= $(OBJCOPY_FOR_TARGET)
> 
> 
> PROJECT_TOOLS = /d/opt/rtems-4.9/build-rtems/i386/pc386/build-tools
> export PROJECT_TOOLS
> 
> 
> ......
> 
> 3) inside the MSYS shell, before launching the make command, I have 
> carried out the following:
> export
> RTEMS_MAKEFILE_PATH=/d/opt/rtems-4.9/build-rtems/i386/c/pc386/make
> export ARCH=/d/opt/rtems-4.9/examples-4.9.1/hello_world_c
> 
> 
> After that I have launched the make command in the folder:
> /d/opt/rtems-4.9/examples-4.9.1/hello_world_c
> My Hello Word is successfully compiled, but it is not correctly managed 
> by  QEMU ("No multiboot Header found").
> What I can further add, is that the dimension of my Hello Word is 17 Kb, 
> whereas the dimension of the Hello Word that comes from the RTEMS 
> compliation is about 1 Mb.
> 
> Does it sound strange? Should I modify the makefiles further in order to 
> produce an executable file in line with the rtems boot loader multiboot 
> specification? Can you suggest me something else?

I would rather you go back and try the correct configure command then work 
though the build issues. Lets sort out one problem at a time.

> 
> Thanks in advance and I wish you a Merry Christmas and Happy New Year.
> 

Thanks and to you also.

Regards
Chris

> 
> Massimo
> 
> 
> 
> 
> Joel Sherrill ha scritto:
>> Massimo Tipaldi wrote:
>>> Dear all,
>>>
>>> I have installed all the RTEMS tools on Windows, compiled RTEMS 4.9
>>> (--target=i386-rtems and bsp=pc386) and installed QEMU as detailed in:
>>>
>>> http://www.rtems.com/wiki/index.php/MinGW_Tools_for_Windows
>>> http://www.rtems.com/wiki/index.php/QEMU
>>>
>>> All these operations went well.
>>>
>>> Therefore, I have tried to launch some RTEMS applications by means of
>>> QEMU/GRUB (in this phase I have taken the executable files produced
>>> during the RTEMS compilation phase, placed in /testsuites/samples): this
>>> operation was successfull as well.
>>>
>>> After that I have compiled successfully Hello Word by myself
>>> (examples-4.7.99.2.tar.bz2
>>> ftp://ftp.rtems.com/pub/rtems/4.7.99.2/examples-4.7.99.2.tar.bz2
>>> ) and put my hello.exe in the folder /testsuites/samples/hello).
>>> With my Hello Word, the GRUB gives me the message "No multiboot header
>>> found".
>>>
>>>   
>> Very old examples.  Please use the ones which match 4.9.
>>
>> This sounds like a bug which was fixed between 4.9.0 and 4.9.1.
>>
>> 1337/bsps - Stripping .rodata section produces unusable executables for 
>> the i386-rtems target.
>>> As far as I have understood, my hello.exe does not have a multiboot 
>>> header.
>>> How can I overcome this issue? Should I modify somehow my source code or
>>> the makefiles in order to create this multiboot header into my .exe?
>>>
>>>
>>> Thanks in advance
>>>
>>> Massimo Tipaldi
>>>
>>>   
>>
> 
> 



More information about the users mailing list