개요
부트로더는 커널을 작동시키기위해서 사용하는 프로그램이다.
부트로더의 역활
- 커널을 메모리로 로드하기
- 커널에게 적절한 정보를 제공하기
- 커널이 작동할 수 있는 환경 만들기
- 커널에게 컨트로를 넘기기
x86에서 부트로더는 리얼 모드에서 작동을 시작한다. 부트로더는 리얼 모드에서 BIOS의 정보를 이용하여 컴퓨터의 작동을 위한 최소한의 역활을 수행한다. 커널은 디스크에 어딘가에 위치하고 있다. 그렇다면 디스크의 어떤 위치에 존재하는지 커널의 정보를 담은 디스크가 어떤 포맷으로 되어 있는지는 모두 모르는 일이다. 커널에 따라 어떤 부팅과정을 수행하는지는 모두 다르다. 따라서 이러한 작업에 대비하기 위해서 GRUB과 대중적인 부트로더를 사용하던지 아니면 각자 나름의 부트로더를 만들던지는 커널을 만드는 사람의 자유이다.
리얼 모드에서 부트로더는 A20 라인을 작동시키고, GDT를 로드하고 Protected Mode로 넘어간다.
부트로더의 종류
- Single Stage Bootloader: Single stage bootloader는 BIOS에서 정보를 얻기 위해 필요한 최소한의 요소만을 담고 있다. 512바이트의 하드디스크 첫번째 섹션이라는 제한이 있기 때문에 많은 정보를 담을 수는 없지만 최소한의 부팅을 위한 정보는 가져올 수 있다.
- Two-Stage Bootloader: 1차 부트로더가 2차 부트로더를 불러와서 더 자세한 부팅을 수행하게 된다. 이러한 부트로더의 좋은 예가 GRUB이다.
- Mixed Bootloader: 부트로더의 크기가 512바이트를 초과하는 경우, 부트로더의 에셈블리 코드를 여러 부분으로 나누어 다른 섹션에 로딩하는 방식이다.