2007년 11월 2일 금요일

bootloader란

bootloader는 다른말로 bootstrap이라고 하는데 이 말의 어원은 boot(장화) + strap(끈)에서 비롯되었다.
장화의 끈을 묶고 일어서려는 사람이라는 설도 있고, 장화끈을 묶어주는 사람이라는 설도 있는데 아무튼 출발하기 직전의 준비작업이라는 의미가 되는 것 같다.

컴퓨터에서 bootloader는 OS의 최소부분을 메모리로 올려 프로세서가 이를 실행할 수 있게 해주는 일을 하는 녀석이다.
컴퓨터에 전원이 들어오면 시스템을 정상적으로 작동시킬 수 있도록 소프트웨어 및 하드웨어를 초기화 시키고 (Memory setting, CPU clock setting GPIO setting, Serial setting MAC address, Ethernet port setting 등) 커널을 부팅시키는 일을 한다.
하드웨어에 dependent하게 짜여져 있기 때문에 어셈코드가 많으며 flash메모리에 저장되기 때문에 크기가 매우 작다.

부트로더는 메모리로 운영체제를 읽어들이는 역할을 한다.
전원이 들어오면 가장 먼저 수행되어야 하기 때문에 항상 ROM같은 비휘발성 메모리에 보관되어 있다.
부트로더의 가장 큰 역할은 시스템의 초기화 이다.
CPU내의 MMU와 캐시를 활성화시키고 RT클럭과 하드웨어 등을 초기화 시킨다.


그렇기 때문에 bootloader에 대해서 공부하기 위해서는 clock 및 메모리 장치, flash를 잘 알아야하고, C와 assembler를 다룰 줄 알아야 한다.


bootloader의 종류는 매우 많은데 가장 많이 알려진 것들은 다음과 같다.

GRUB: Grand Unified Bootloader GNU 프로젝트 부트로더
LILO: linux loader x86기반의 리눅스
redboot: 레드햇에서 개발된 부트로더, eCos기반
U-boot: universal Bootloader PPCBoot와 ARMBoot를 타깃으로 개발(두개를 합친 것), 환경설정이 쉽다는 장점이 있다.
EZBoot: EZ-X5보드를 위하여 개발된 것으로 부트로더의 장점을 취합
BLOB: arm프로세서 기반의 하드웨어를 위해 개발. 아사벳보드 등
PMON: PROM Moniter MIPSqhem를 지원하기 위해 개발

댓글 1개:

  1. 부트로더의 위치는 ROM이 아니라 하드디스크의 MBR에 지정되어 있습니다.

    답글삭제