Hi Vikram, ...snip... > So when compiling the kernel, what is the purpose of the other > files(mentioned below) > linux-2.6/vmlinux - ELF executable, not stripped > linux-2.6/arch/x86/boot/vmlinux.bin - Raw binary (Guess this is the > one which is inside the bzImage) > linux-2.6/arch/x86/boot/compressed/vmlinux.bin - ELF executable, stripped > linux-2.6/arch/x86/boot/compressed/vmlinux - ELF executable, not stripped Take luca's email and start at the bottom working towards the top. linux-2.6/vmlinux is the output of the linker. As such, it is an ELF file. A binary is then extracted from this to create arch/x86/boot/compressed/vmlinux.bin This binary is then compressed to produce arch/x86/boot/compressed/vmlinux.bin.gz This gzipped binary is then converted into an object file (which just contains the gzipped data) but now we're back to having an ELF file called arch/x86/boot/compressed/piggy.o The linker then compiles a decompressor (misc.o) and piggy.o together to produce arch/x86/boot/compressed/vmlinux (an ELF file). objcopy is used again to convert this ELF into a binary: arch/x86/boot/compressed/vmlinux arch/x86/boot/vmlinux.bin Finally, the binary is compressed to produce bzImage. So what you get is a compressed binary which contains a decompressor and another compressed binary, this inner compressed binary being the kernel. GRUB loads bzImage into memory and decompresses it and then executes the resulting binary. This binary starts with a decompressor which then decompresses the kernel, and executes the resulting binary. This binary may relocate itself (probably depends on the architecture) to a different spot in memory, and then runs. The kernel is now running. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies