Thanks syed, Ok, I did a little more digging... On 22/11/11 16:34, sk.syed2 wrote: >> /vmlinux 2,629,659 bytes >> /vmlinux.o 2,889,050 bytes >> /arch/i386/boot/bzImage 1,104,864 bytes >> /arch/x86/boot/bzImage 1,104,864 bytes >> /arch/x86/boot/vmlinux.bin 1,092,060 bytes >> /arch/x86/boot/compressed/vmlinux 1,099,538 bytes >> /arch/x86/boot/compressed/vmlinux.bin 2,094,132 bytes >> /arch/x86/boot/compressed/vmlinux.bin.gz 1,074,711 bytes >> >> I understand that /arch/x86/boot/compressed/vmlinux.bin.gz is a compressed >> version of /arch/x86/boot/compressed/vmlinux.bin, and >> /arch/i386/boot/bzImage and /arch/x86/boot/bzImage are the same file and >> that it is the 16-bit boot code + /arch/x86/boot/compressed/vmlinux.bin.gz > This is correct. >> but I don't understand the rest... I traced it all out. I sent a separate message to the ML documenting the bzImage build chain - It's rather fascinating > >> >> My guess is that /vmlinux.o is the ELF image generated by the compiler + >> linker stage and /vmlinux may be /vmlinux.o objdump'd into a raw binary and >> perhaps /arch/x86/boot/vmlinux.bin is a further stripped version >> of/vmlinux, but I'm at a loss with /arch/x86/boot/compressed/vmlinux > > vmlinux is ELF image with ELF header. So actual point of kernel entry > would be at an offset, somewhere after the ELF header. > vmlinux.bin is what you would get after doing > #objcopy -O binary vmlinux vmlinux.bin. > vmlinux.bin has only obj code and nothing else. To be more precise: arch/x86/boot/compressed/vmlinux.bin is the result of #objcopy -R .comment -S vmlinux so it is still an ELF image arch/x86/boot/vmlinux.bin is the result of: #objcopy -O binary -R .note -R .comment -S arch/x86/boot/compressed/vmlinux arch/x86/boot/compressed/vmlinux has the decompression stub + compressed version of arch/x86/boot/compressed/vmlinux.bin >> >> In any event, it looks like either /arch/x86/boot/compressed/vmlinux.bin or >> /vmlinux is what I need to copy into RAM @ 0x100000 (1MiB) which is where >> my non-relocatable kernel is compiled to. > > copy vmlinux.bin. I don't think either is what I want - arch/x86/boot/vmlinux.bin still contains a compressed kernel. And the contents of the compressed section is an ELF image which requires more memcpys and memsets What I really want, I think, is: #objcopy -O binary -R .comment -S vmlinux Which is not generated during the build process >> - How to setup the memory map (keeping in mind I have 2GB of contiguous >> memory with no BIOS/ACPI etc to worry about clobbering >> - Any other tricks I need to be aware of.. > Check if x86 kernel expects some parameters(like machineid, bootargs > location etc) in some registers. > Check if x86 has low level debug support(like DEBUG_LL). > Also you might want to check how initial page tables are being setup in kernel. I need to have a good look at what goes into arch/x86/boot/setup.bin - That will really tell me what I need to do Thanks, Graeme _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies