Embedded Linux Kernel Make With Compressed Boot PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Embedded Linux:

Kernel Make
(compressed with boot)

kernel

in $(TOPDIR)

% make
-- $(TOPDIR)
linux
(
vmlinux)
.
% file linux
ELF 32-bit LSB executable, Advanced RISC Machines ARM, version 1,
statically linked, not stripped

kernel

: File sequence

head-armv.S
or
head-arm-dsc21.S
main.c

arch/armnommu/kernel
init/

.
.
.
.
http://network.hanbat.ac.kr

Embedded Linux

arch/arm/kernel/head-armv.S

Set

r0 = 0, r1= unique architecture number, MMU = off, I-cache =


on/off, D-cache = off
mode to supervisor, all IRQs to disable

bl __lookup_processor_type

bl __lookup_architecture_type

goto __arm720_setup (in file proc-arm720.S)


goto __mmap_switched

goto SYMBOL_NAME(start_kernel)

http://network.hanbat.ac.kr

Embedded Linux

Linux architecture-independent initialization

Refer

http://www.linuxdoc.org/HOWTO/Linux-Init-HOWTO-5.html

main.c/start_kernel()

setup_arch()

setup_processor()
setup_architecture(machine_arch_type)
init_bootmem_node(), free_bootmem(), paging_init(),

trap_init(), init_IRQ() /* initialize IRQ handler */


sched_init()
softirq_init()
time_init(); /* initialize timer */
console_init()
init_modules()
kmem_cache_init(), mem_init(),
mount initrd (maybe)

cpu_idle();

http://network.hanbat.ac.kr

Embedded Linux

kernel

(not completed)
* (.text.init)
x16

.init

x 4096

* (.proc .info)
* (.arc h.info)

_stext, __init_begin
__proc_info_begin
__proc_info_end, __arch_info_begin

* (.data.init)

__arch_info_end

* (.setup.init)

__setup_start

* (.initc all.init)
* (.text)

__setup_end, __initcall_start
_text

...
.text

* (__ex_table)
* (__ksymtab)
* (__kallsyms)
* (.got)

http://network.hanbat.ac.kr

Embedded Linux

__start___ex_table
__stop___ex_table, __start___ksymtab
__stop___ksymtab, __start___kallsyms
__stop___kallsyms,
_etext

boot/compressed/vmlinux

boot/zImage

$(TOPDIR)/arch/
armnommu/boot/
compressed/vmlinux

head.o
misc.o

,
in ...boot/c ompressed/
head-armv.S
or
head-arm-dsc21.S
main.c

.
.
.

y
objcop
gzip, ld

http://network.hanbat.ac.kr

$(TOPDIR)/arch/
armnommu/boot/
zImage

y
objcop

zImage

kernel
(piggy.o)

Embedded Linux

$(TOPDIR)/arch/armnommu/boot/compressed/vmlinux

text

*(.start)
*(.text)
*(.fixup)
*(.gnu.warning)
*(.rodata)
*(.rodata.*)
*(.glue_7)
*(.glue_7t)
piggy.o

data
bss
stack

http://network.hanbat.ac.kr

*(.data)
*(.bss)
*(.stack)

Embedded Linux

LOAD_ADDR, _load_addr,
TEXT_START, _text, _start

input_data
input_data_end, _etext
_edata, BSS_START, __bss_start
_end
user_stack, sp (initially)
7

Flash Image

...boot/bootp/bootp
(Flash
)

init.o
zImage

ld

kernel.o

flash
kernel.o initrd.o
RAM
,
kernel.o
in .../boot/bootp/

initrd.o
ld

initrd

http://network.hanbat.ac.kr

Embedded Linux

Overall Flash Image

,
in .. .boot/ c ompressed/

init.o
head.o
misc.o

head-armv.S
or
head-arm-dsc21.S
main.c

.
.
.

http://network.hanbat.ac.kr

flash
kernel.o initrd.o
RAM
,
kernel.o
in .../ boot/bootp/

kernel.o

kernel
( piggy.o)
initrd.o

Embedded Linux

Booting Scenario (1)

,
in ...boot /c ompressed/

Flash
init.o
head.o
misc.o

flash kernel.o
initrd.o
RAM
,
kernel.o
in .../boot/bootp/

kernel.o

(1)

kernel
( piggy.o)

http://network.hanbat.ac.kr

head-armv.S
or
head-arm-dsc21.S
main.c

.
.
.

initrd.o

boot
block

RAM

(1) power-on
boot block pc
flash
init.o
.
(pc
r0=0, r1="unique
architecture #, MMU off, D-cache
off
.
head-armv.S
.)

Embedded Linux

10

Booting Scenario (2)

,
in ... boot/ c ompressed/

Flash
init.o
head.o
misc.o

(2 )

kernel.o

kernel
( piggy.o)

.
.
.
(2) Flash

http://network.hanbat.ac.kr

head-armv.S
or
head-arm-dsc21.S
main.c

initrd.o

boot
block

RAM
head.o
misc.o

initrd.o
,

Embedded Linux

kernel
( piggy.o)
initrd.o

init.o
, kernel.o
RAM
kernel.o
.
11

Booting Scenario (3)

,
in . ..boot/c ompressed/

Flash
init.o
head.o
misc.o

head-armv.S
or
head-arm-dsc21.S
kernel.o

kernel
( piggy.o)

main.c

kernel
( piggy.o)

.
.
.

http://network.hanbat.ac.kr

(3)

initrd.o

initrd.o

boot
block

RAM
head.o
misc.o

(3) head.o
.

kernel

Embedded Linux

12

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy