All of lore.kernel.org
 help / color / mirror / Atom feed
* x86 kernel build chain - how bzImage gets created
@ 2011-11-22 10:46 Graeme Russ
  2011-11-22 10:59 ` Daniel Baluta
  2011-11-22 17:54 ` Mulyadi Santosa
  0 siblings, 2 replies; 5+ messages in thread
From: Graeme Russ @ 2011-11-22 10:46 UTC (permalink / raw)
  To: kernelnewbies

Hi All,

Hopefully this will help demystify the build process

Notation:
<primary input file> (<file size in bytes>)
  |
  + <additional input file>
  |
  * <command>
  |
  \-> <output file> (<file size in bytes>)

The file sizes are arbitrary and are based on the current configuration
options I have set for a small kernel. They are simply there to illustrate
the relative differences in file sizes.

Note that vmlinux.o is not used to generate bzImage but I've included it
for completeness

+ arch/x86/kernel/head_32.o
+ arch/x86/kernel/head32.o
+ arch/x86/kernel/head.o
+ arch/x86/kernel/init_task.o
+ init/built-in.o
+ usr/built-in.o
+ arch/x86/built-in.o
+ kernel/built-in.o
+ mm/built-in.o
+ fs/built-in.o
+ ipc/built-in.o
+ security/built-in.o
+ crypto/built-in.o
+ block/built-in.o
+ lib/lib.a
+ arch/x86/lib/lib.a
+ lib/built-in.o
+ arch/x86/lib/built-in.o
+ drivers/built-in.o
+ sound/built-in.o
+ firmware/built-in.o
+ arch/x86/pci/built-in.o
+ net/built-in.o
|
* ld -m elf_i386 -r -o vmlinux.o
|
\->vmlinux.o (2,889,050)

+ arch/x86/kernel/head_32.o
+ arch/x86/kernel/head32.o
+ arch/x86/kernel/head.o
+ arch/x86/kernel/init_task.o
+ init/built-in.o
+ usr/built-in.o
+ arch/x86/built-in.o
+ kernel/built-in.o
+ mm/built-in.o
+ fs/built-in.o
+ ipc/built-in.o
+ security/built-in.o
+ crypto/built-in.o
+ block/built-in.o
+ lib/lib.a
+ arch/x86/lib/lib.a
+ lib/built-in.o
+ arch/x86/lib/built-in.o
+ drivers/built-in.o
+ sound/built-in.o
+ firmware/built-in.o
+ arch/x86/pci/built-in.o
+ net/built-in.o
+ .tmp_kallsyms2.o
|
* ld -m elf_i386 --build-id -T arch/x86/kernel/vmlinux.lds
|
\->vmlinux (2,629,659)
   |
   * objcopy -R .comment -S
   |
   \->arch/x86/boot/compressed/vmlinux.bin (2,094,132)
      |
      * gzip
      |
      \-> arch/x86/boot/compressed/vmlinux.bin.gz (1,074,711)
         |
         * .incbin
         |
         \-> piggy.S
            |
            * gcc
            |
            \-> piggy.o (1,075,419)
               |
               + arch/x86/boot/compressed/head_32.o
               + arch/x86/boot/compressed/misc.o
               + arch/x86/boot/compressed/string.o
               + arch/x86/boot/compressed/cmdline.o
               + arch/x86/boot/compressed/early_serial_console.o
               |
               * ld -m elf_i386 -T arch/x86/boot/compressed/vmlinux.lds
               |
               \->arch/x86/boot/compressed/vmlinux (1,099,538)
                  |
                  * objcopy -O binary -R .note -R .comment -S
                  |
                  \-> arch/x86/boot/vmlinux.bin (1,092,060)
                     |
                     |   + arch/x86/boot/a20.o
                     |   + arch/x86/boot/bioscall.o
                     |   + arch/x86/boot/cmdline.o
                     |   + arch/x86/boot/copy.o
                     |   + arch/x86/boot/cpu.o
                     |   + arch/x86/boot/cpucheck.o
                     |   + arch/x86/boot/early_serial_console.o
                     |   + arch/x86/boot/edd.o
                     |   + arch/x86/boot/header.o
                     |   + arch/x86/boot/main.o
                     |   + arch/x86/boot/mca.o
                     |   + arch/x86/boot/memory.o
                     |   + arch/x86/boot/pm.o
                     |   + arch/x86/boot/pmjump.o
                     |   + arch/x86/boot/printf.o
                     |   + arch/x86/boot/regs.o
                     |   + arch/x86/boot/string.o
                     |   + arch/x86/boot/tty.o
                     |   + arch/x86/boot/video.o
                     |   + arch/x86/boot/video-mode.o
                     |   + arch/x86/boot/version.o
                     |   + arch/x86/boot/video-vga.o
                     |   + arch/x86/boot/video-vesa.o
                     |   + arch/x86/boot/video-bios.o
                     |   |
                     |   * ld -m elf_i386 -T arch/x86/boot/setup.ld
                     |   |
                     |   \->arch/x86/boot/setup.elf (186,171)
                     |      |
                     |      * objcopy -O binary arch/x86/boot/setup.elf
                     |      |
                     +      \-> arch/x86/boot/setup.bin (12,604)
                     |
                     * arch/x86/boot/tools/build
                     |
                     \-> arch/x86/boot/bzImage (1,104,864)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* x86 kernel build chain - how bzImage gets created
  2011-11-22 10:46 x86 kernel build chain - how bzImage gets created Graeme Russ
@ 2011-11-22 10:59 ` Daniel Baluta
  2011-11-22 11:06   ` Graeme Russ
  2011-11-22 17:54 ` Mulyadi Santosa
  1 sibling, 1 reply; 5+ messages in thread
From: Daniel Baluta @ 2011-11-22 10:59 UTC (permalink / raw)
  To: kernelnewbies

On Tue, Nov 22, 2011 at 12:46 PM, Graeme Russ <graeme.russ@gmail.com> wrote:
> Hi All,
>
> Hopefully this will help demystify the build process
>
> Notation:
> <primary input file> (<file size in bytes>)
> ?|
> ?+ <additional input file>
> ?|
> ?* <command>
> ?|
> ?\-> <output file> (<file size in bytes>)
>
> The file sizes are arbitrary and are based on the current configuration
> options I have set for a small kernel. They are simply there to illustrate
> the relative differences in file sizes.

Great! Thanks for sharing this.

> Note that vmlinux.o is not used to generate bzImage but I've included it
> for completeness

[...]
> + net/built-in.o
> |
> * ld -m elf_i386 -r -o vmlinux.o
> |
> \->vmlinux.o (2,889,050)

What is the purpose of vmlinux.o then?

thanks,
Daniel.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* x86 kernel build chain - how bzImage gets created
  2011-11-22 10:59 ` Daniel Baluta
@ 2011-11-22 11:06   ` Graeme Russ
  0 siblings, 0 replies; 5+ messages in thread
From: Graeme Russ @ 2011-11-22 11:06 UTC (permalink / raw)
  To: kernelnewbies

Hi Daniel

On 22/11/11 21:59, Daniel Baluta wrote:
> On Tue, Nov 22, 2011 at 12:46 PM, Graeme Russ <graeme.russ@gmail.com> wrote:
>> Hi All,
>>
>> Hopefully this will help demystify the build process
>>
>> Notation:
>> <primary input file> (<file size in bytes>)
>>  |
>>  + <additional input file>
>>  |
>>  * <command>
>>  |
>>  \-> <output file> (<file size in bytes>)
>>
>> The file sizes are arbitrary and are based on the current configuration
>> options I have set for a small kernel. They are simply there to illustrate
>> the relative differences in file sizes.
> 
> Great! Thanks for sharing this.

Your welcome :)

> 
>> Note that vmlinux.o is not used to generate bzImage but I've included it
>> for completeness
> 
> [...]
>> + net/built-in.o
>> |
>> * ld -m elf_i386 -r -o vmlinux.o
>> |
>> \->vmlinux.o (2,889,050)
> 
> What is the purpose of vmlinux.o then?

I don't know - Anyone?

Regards,

Graeme

^ permalink raw reply	[flat|nested] 5+ messages in thread

* x86 kernel build chain - how bzImage gets created
  2011-11-22 10:46 x86 kernel build chain - how bzImage gets created Graeme Russ
  2011-11-22 10:59 ` Daniel Baluta
@ 2011-11-22 17:54 ` Mulyadi Santosa
  2011-11-27 21:41   ` Graeme Russ
  1 sibling, 1 reply; 5+ messages in thread
From: Mulyadi Santosa @ 2011-11-22 17:54 UTC (permalink / raw)
  To: kernelnewbies

On Tue, Nov 22, 2011 at 17:46, Graeme Russ <graeme.russ@gmail.com> wrote:
> Hi All,
>
> Hopefully this will help demystify the build process


Hi!

Wow great man! I deeply suggest to write that into kernelnewbies wiki too....

Once again, great job!

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* x86 kernel build chain - how bzImage gets created
  2011-11-22 17:54 ` Mulyadi Santosa
@ 2011-11-27 21:41   ` Graeme Russ
  0 siblings, 0 replies; 5+ messages in thread
From: Graeme Russ @ 2011-11-27 21:41 UTC (permalink / raw)
  To: kernelnewbies

Hi Mulyadi Santosa

On Wed, Nov 23, 2011 at 4:54 AM, Mulyadi Santosa
<mulyadi.santosa@gmail.com> wrote:
> On Tue, Nov 22, 2011 at 17:46, Graeme Russ <graeme.russ@gmail.com> wrote:
>> Hi All,
>>
>> Hopefully this will help demystify the build process
>
>
> Hi!
>
> Wow great man! I deeply suggest to write that into kernelnewbies wiki too....

I've had another followup suggestion to add this to the wiki. I don't
have permissions to add or edit wiki pages, so if someone feels like
adding me as a wiki editor then I can do it soon enough, otherwise,
I'm happy for any existing editor to create a new page.
/Documents/bzImageBuildProcess is where I would think to put it.

Also, I'm in the process of disecting the x86 boot_params and
associated structures, what members are used where etc including the
'header.bin' 16-bit real-mode initialisation code and the kernel
decompression and start of execution which, I think, would be worth
adding to the wiki when done

I've created a wiki account (GraemeRuss) so if anyone wants me to add
a new page, add me to the editors list, send me and email, and I will
get to it

>
> Once again, great job!

Thanks,

Graeme

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-11-27 21:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-22 10:46 x86 kernel build chain - how bzImage gets created Graeme Russ
2011-11-22 10:59 ` Daniel Baluta
2011-11-22 11:06   ` Graeme Russ
2011-11-22 17:54 ` Mulyadi Santosa
2011-11-27 21:41   ` Graeme Russ

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.