Hello,

I failed to boot from etherboot as payload in linuxbios.

The failing message is this:

>> ...(ELF)... segment in reserved area 

and I checked the failing part in "osloader.c":


1030-                           return 0;
1031-                   }
1032-                   phdr=(Elf32_Phdr *)((unsigned int)&info
1033-                                   + (unsigned int)(info.elf32.e_phoff));
1034-                   /* Check for Etherboot related limitations.  Memory
1035:                    * below 0x10000 and between RELOC and 0xfffff is not
1036-                    * allowed.  Reasons: the Etherboot code/data area
1037-                    * and the ROM/IO area.  */
1038-                   for (segment = 0; segment < info.elf32.e_phnum;
1039-                        segment++) {
1040-                           unsigned int start, end;
--
1047-                           }
1048-#endif
1049-                           start = phdr[segment].p_paddr;
1050-                           end = phdr[segment].p_paddr+phdr[segment].p_memsz;
1051-                           if ((phdr[segment].p_paddr < 0x100000) &&
1052:                               (end > RELOC)) {
1053-                                   printf("segment in reserved area\n");
1054-                                   return 0;
1055-                           }
1056-                           fit = 0;
1057-                           for(i = 0; i < meminfo.map_count; i++) {


And this I don't understand.

RELOC is defined 0x94000 and oviously less less than 0x100000.

And paddr of vmlinux is 0x100000 but, applying mkelfImage makes
it 0x10000, which is obviosly less than 0x100000.
and why conditioned &&?
Actually how do I make elfboot image  of vmlinux?
I assumed to use mkelfImage.

Regards,
Kei.

Reply via email to