[만능 USB를 만들어 보자!] 2편 - 부트로더란?

Multibooting/GRUB4DOS


앞서 1편에서는 만능 멀티부팅 USB가 무엇인지, 어떻게 쓸 수 있는지 설명드리고 제가 만든 만능 USB를 소개했습니다. 이번 포스팅에서는 이런 멀티부팅 USB를 만들때 가장 중요한 부분인 부트로더에 대해서 설명하려 합니다.


부트로더, 그게 뭐지? 먹는건가?


부트로더(boot loader)란 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다. - 위키피디아


'부트로더' 라는 단어의 사전적 정의입니다. 위 정의만 가지고는 잘 이해가 되지 않으시는 분들도 계실 텐데, 간단하게 설명하면 이렇습니다.



가장 먼저 컴퓨터가 켜지면 롬에 들어있는 BIOS가 로드됩니다. BIOS는 컴퓨터에 연결된 저장 매체에서 설정된 부팅 순서대로 부트로더들을 불러오게 됩니다. 이 때, 하드 디스크가 첫 번째 부팅 장치로 설정되어 있으면, BIOS는 하드 디스크의 부트로더를 로드하게 됩니다.

운영체제는 크게 세 부분으로 나뉩니다. 실제 명령어들이 구동되는 커널, 프로그램에 포함된 명령어들을 커널에 전해주는 프레임워크, 그리고 커널과 프레임워크 위에서 구동되는 UI가 있습니다.

일반적으로 '부팅'이라하면 커널을 로드하고, 프레임워크를 실행시킨뒤, UI를 실행하는, 운영체제를 시동하는 행위를 일컫는데요, 위의 정의에서 나타나는 것 같이 부트로더는 커널을 시동시키기 전 하드웨어들을 준비하는 역할을 합니다.

그렇다면 부트로더는 어디에 있을까요?



하드디스크의 파티션 정보는 MBR이라는 하드 디스크의 첫 섹터 속에 존재합니다. 여기서 BIOS는 파티션 테이블을 읽은 후 활성화 되어있는 파티션의 PBR을 읽어 그 데이터로 부팅하게 됩니다. 여기서 이 MBR과 PBR이 바로 1차 부트로더입니다.

여기서 잠깐, 제가 왜 '1차' 부트로더라는 말을 썼을까요? 그렇다면 '2차' 부트로더도 있다는 말인가요?



네, 있습니다. 바로 이렁게 생겼는데요, 여기서 GRLDR은 GRUB4DOS의 2차 부트로더입니다. 윈도우 비스타/7/8의 2차 부트로더는 BOOTMGR이고요, XP는 NTLDR입니다. 2차 부트로더는 파일의 형식으로 부팅 파티션의 루트경로에 존재합니다.

왜 2차 부트로더라는 것이 존재할까요? MBR/PBR의 최대 용량은 512바이트밖에 되지 않기 때문에 도스 같은 운영체제 정도에는 적합했지만 윈도우 같은 복잡한 운영체제의 커널을 로드할 준비를 하기에는 턱없이 모자랐습니다. 그래서 2차 부트로더를 1차 부트로더를 통해 커널을 로드하듯이 로드한뒤, 2차 부트로더를 통해 커널을 로드하는 방식을 택하게 된 것입니다.



따라서 현재 일반적으로 운영체제를 부팅시키는 대략적인 과정은 다음과 그림과 같습니다. 그렇다면 멀티부팅을 하게 되면 어떻게 될까요?  



어떤 부트로더인지에 따라 조금씩 달라질 수도 있지만 우리가 사용하게될 GRUB4DOS의 멀티부팅 과정은 이렇습니다. 2차 부트로더가 로드된 후 어떤 운영체제를 부팅할 지 선택하는 화면을 띄워준 뒤, 해당 운영체제의 2차 부트로더를 로드하게 됩니다. 이러한 과정을 체인 로딩 (Chainloading) 이라고 하는데요, 자세한 부분은 뒤에 가서 살펴보겠습니다.

다음 편에서는 USB에 GRUB4DOS를 설치해보고, 간단한 실습을 해보겠습니다 ^^