1. 부트 로더 (Boot Loader) 이란?
ㅇ 전원이 켜지기 전에,
- 실행가능 상태로 존재하고 있다가,
- 전원이 켜지면, 자동으로 실행되는 프로그램
ㅇ 통상,
- BIOS가, 부트 로더 (통상, 디스크의 정해진 위치에 있음)을 메모리로 올리고,
. (리눅스 부트 로더 例 ☞ 아래 4.항 참조)
- 이곳으로, 제어권을 넘기며 점프 수행되면,
- 이것이, 하드웨어를 최소수준으로 초기화시키고,
- 운영체제의 커널(Kernel)을, 메모리에 올리고,
- 운영체제의 커널(Kernel)이, 최종적으로 제어권을 넘겨 받게 됨
* 최근에는, BIOS 기반의 부팅 과정이, UEFI로 대체됨
2. (어원, 의미, 명칭)
ㅇ 원래, `부트스트랩 (Bootstrap)`은,
- `장화(Boot)의 끈(Strap)을 묶고 일어섬`이라는 뜻을 갖음
ㅇ 통상, 매우 일반적인 의미로써,
- `자동으로 설정되어지게 함`이라는 용어로 쓰이고 있음
ㅇ 또한, 트위터社의 개발자,UI 디자이너가 개발한, 오픈소스 프레임워크 명칭이기도 함
- 효율적인 웹 사이트 디자인을 위해,
- 미리 필요한 부분들을 작업해 놓아, 라이브러리 형태로 모아두어, 사용하기 쉽게 해 둔 것
ㅇ (유사명칭)
- 부트 매니저(Boot Manager), 부트 프로그램(Boot Program), 부트스트랩(Bootstrap),
부트 이미지 파일 등
3. 부트 로더의 주요 동작 과정
ㅇ 전원이 켜지기 전에, 실행가능 상태로 존재하고 있다가,
- 주로, 시스템에 내장된 ROM, 하드디스트, 네트워크 상의 다른 서버 등에 저장되어 있다가,
ㅇ 전원이 켜지면, 바이오스(BIOS)로부터 제어권을 넘겨받아서,
ㅇ RAM을 사용할 수 있게 초기화하고,
ㅇ 루트(root) 파일시스템을 준비하고,
ㅇ 자신을 RAM에 복사한 후 RAM 상에서 계속 실행하며,
ㅇ 필요한 하드웨어를 초기화하고,
ㅇ 특정 운영체제 커널을 컴퓨터 메모리 RAM에 올린 후,
ㅇ 제어권(실행권한)을 운영체제 커널에 넘겨주는 프로그램
※ 한편, 여기에 언급된 일련의 과정을 부팅이라고 함
4. 마스터 부트 프로그램 (Master Boot Program), 부트스트랩 프로그램 => 부트 로더 (Boot Loader)
ㅇ 과거, 대부분의 PC 기반의 시스템에서는,
- 크기가 작은 단순한 `부트 로더(Boot Loader)`가,
- 여타 다른 곳(하드디스크 등)에 있는, `부트 프로그램`을, 메모리에 적재하고,
- 이 부트 프로그램이, 커널을 메모리에 로딩(적재)하게 함
- 이후, 커널이, 주도적으로, 하드웨어를 초기화하고, 루트 파일 시스템을 마운트 하게 됨
ㅇ UEFI 방식이 아닌, PC 기반 BIOS 경우에는,
- BIOS가, PC 기동시의 BIOS 진단(POST)을 마친 후,
- 부트 프로그램을 하드디스크 첫번째 섹터에서 찾고, ☞ MBR (Master Boot Record) 참조
- 455 바이트 크기의 작은 부트 프로그램이, 다른 대용량 저장장치로부터,
- 덩치큰 커널 프로그램을 로딩하여 부팅 과정을 시작하게 됨
5. [리눅스] 한편, 리눅스에서 대표적인 부트 로더
※ 주로, 하나의 컴퓨터에, 여러 운영체제가 설치되어 있을 경우, 선택하여 부팅할 수 있도록 해줌
ㅇ LILO (과거)
- 리눅스 만 가능
ㅇ GRUB (grand unified bootloader)
- 리눅스,윈도우즈 모두 가능 (멀티 부팅 가능) : LILO에 비해 쉬움
- 부팅시에 명령 수정도 가능 (/boot/grub/grub.conf)
- grub.conf 내 편집 가능 항목
. default : 기본으로 선택된 부팅 메뉴 번호 (0부터)
. timeout : 부팅 선택 대기 가능 시간 (초 단위, 기본 10초 후 default 부팅)
. splashimg : 부팅 화면 배경 이미지
. password : 부팅시 GRUB 모드로 들어가기 위한 암호화된 패스워드
. title : GRUB 부팅 화면 상단의 메뉴에 나타나는 제목
. root : 루트 파일시스템의 고유 식별자를 지정
.. 용법) root "하드디스크 디바이스 이름" "부트 파티션 이름"
.. 例) root hd00 : 첫번째 하드디스크의 첫번째 파티션이 루트 디바이스로써 지정
. kernel(BOOT_IMAGE) : 부팅시 커널의 이미지 파일을 경로로 지정한 것
. initrd 항목 : SCSI 디스크 사용시 반드시 지정해야 하는 항목
. fallback : 기본 부팅 메뉴로 부팅 실패시, 다음 부팅 항목으로 설정해두는 것
6. 부트 디스크, 시스템 디스크
ㅇ 여러 다중 하드디스크들을 갖는 파티션 중에서,
- 부트 디스크 파티션을 갖는 하드디스크를 일컬음