기억도 가물하지만 옛날에 써둔 노트가 있어서 옮겨둔다.
start_kernel() / 시스템 독립적인 함수 부팅 후 메모리에서 제거
lld 스크립트
. 은 현재 주소를 나태낸다.
*(.start) -> .start 들을 모아서 나열한다.
arch/arm/vmlinux_armv.lds.in
.init 섹션 / 부팅 코드 = 커널 스타트 업 + start_kernel()
.text 섹션 / 커널 실코드
arch/arm/boot/compressed/vmlinux.lds.in
http://www.arm.linux.org.uk/developer/booting.php
lib/inflate.c -> gunzip() -> STACK + BSS 필요
vmlinux -> ELF / piggy.o -> 디버깅 정보 제거된 ELF 형태의 binary
vmlinux = head.o + misc.o + head-s3c2440.o | + piggy.o
zImage -> ELF 를 bin 형으로
arch/arm/boot/compressed/vmlinux.lds.in
arch/arm/boot/compressed/head.S -> C 언어 환경을 만든다.
head.S 의 .start -> head-s3c2440.S 의 .start
arch/arm/mm/proc-코어이름.S
vmlinux -> arch/arm/vmlinux-armv.lds.in