Boot Loader   부트 로더

(2023-10-12)

Boot Program, 부트 프로그램, Bootstrap, 부트스트랩, GRUB


1. 부트 로더 (Boot Loader) 이란?

  ㅇ (유사명칭)
     - 부트 매니저(Boot Manager), 부트 프로그램(Boot Program), 부트스트랩(Bootstrap),
       부트 이미지 파일 등

  ㅇ 전원이 켜지기 전에,
     - 실행가능 상태로 존재하고 있다가, 
     - 전원이 켜지면, 자동으로 실행되는 프로그램
        
  ㅇ 통상, 
     - BIOS가, 부트 로더 (통상, 디스크의 정해진 위치에 있음)을 메모리로 올리고,
        . (리눅스 부트 로더 例  ☞ 아래 4.항 참조)
     - 이곳으로, 제어권을 넘기며 점프 수행되면,
     - 이것이, 하드웨어를 최소수준으로 초기화시키고, 
     - 운영체제커널(Kernel)을, 메모리에 올리고,
     - 운영체제커널(Kernel)이, 최종적으로 제어권을 넘겨 받게 됨

     * 최근에는, BIOS 기반의 부팅 과정이, UEFI로 대체됨

  ※ [용어]
     - 원래, `부트스트랩 (Bootstrap)`은,
        . `장화(Boot)의 끈(Strap)을 묶고 일어섬`이라는 뜻을 갖음
     - 통상, 매우 일반적인 의미로써, 
        . `자동으로 설정되어지게 함`이라는 용어로 쓰이고 있음
     - 또한, 트위터社의 개발자,UI 디자이너가 개발한, 오픈소스 프레임워크 명칭이기도 함
        . 효율적 사이트 디자인을 위해, 
        . 미리 필요한 부분들을 작업해 놓아, 라이브러리 형태로 모아두어, 사용하기 쉽게 해 둔 것


2. 부트 로더의 주요 동작 과정전원이 켜지기 전에, 실행가능 상태로 존재하고 있다가, 
     - 주로, 시스템에 내장된 ROM, 하드디스트, 네트워크 상의 다른 서버 등에 저장되어 있다가,
  ㅇ 전원이 켜지면, 바이오스(BIOS)로부터 제어권을 넘겨받아서,
  ㅇ RAM을 사용할 수 있게 초기화하고,
  ㅇ 루트(root) 파일시스템을 준비하고,
  ㅇ 자신을 RAM에 복사한 후 RAM 상에서 계속 실행하며,
  ㅇ 필요한 하드웨어를 초기화하고,
  ㅇ 특정 운영체제 커널컴퓨터 메모리 RAM에 올린 후,
  ㅇ 제어권(실행권한)을 운영체제 커널에 넘겨주는 프로그램

  ※ 한편, 여기에 언급된 일련의 과정을 부팅이라고 함


3. 마스터 부트 프로그램 (Master Boot Program), 부트스트랩 프로그램  => 부트 로더 (Boot Loader)

  ㅇ 과거, 대부분의 PC 기반의 시스템에서는,
     - 크기가 작은 단순한 `부트 로더(Boot Loader)`가, 
     - 여타 다른 곳(하드디스크 등)에 있는, `부트 프로그램`을, 메모리에 적재하고,
     - 이 부트 프로그램이, 커널을 메모리에 로딩(적재)하게 함
     - 이후, 커널이, 주도적으로, 하드웨어를 초기화하고, 루트 파일 시스템마운트 하게 됨

  ㅇ UEFI 방식이 아닌, PC 기반 BIOS 경우에는,
     - BIOS가, PC 기동시의 BIOS 진단(POST)을 마친 후, 
     - 부트 프로그램하드디스크 첫번째 섹터에서 찾고,  ☞ MBR (Master Boot Record) 참조
     - 455 바이트 크기의 작은 부트 프로그램이, 다른 대용량 저장장치로부터,
     - 덩치큰 커널 프로그램을 로딩하여 부팅 과정을 시작하게 됨


4. [리눅스]  한편, 리눅스에서 대표적인 부트 로더

  ※ 주로, 하나의 컴퓨터에, 여러 운영체제가 설치되어 있을 경우, 선택하여 부팅할 수 있도록 해줌

  ㅇ 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 : 기본 부팅 메뉴로 부팅 실패시, 다음 부팅 항목으로 설정해두는 것


5. 부트 디스크, 시스템 디스크

  ㅇ 여러 다중 하드디스크들을 갖는 파티션 중에서, 
     - 부트 디스크 파티션을 갖는 하드디스크를 일컬음

부팅
   1. 부팅   2. 부트 로더   3. 웜,콜드 부팅   4. BIOS   5. EFI, UEFI   6. 펌웨어  
마이크로 컨트롤러
   1. 마이크로 컨트롤러   2. 8051 칩   3. 아두이노   4. 부트 로더   5. GPIO  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"