OS

MBR과 부트로더

LDobac 2017. 2. 20. 19:59

MBR은 Master Boot Record의 약자이며 파티션된 기억 장치의 첫 섹터인 512바이트의 저장 공간이다.

MBR의 구조는

 주소(10진수)

크기(Byte)

역할

 설명

 0

440

부트 코드

 부팅을 하기 위한 정보가 들어 갑니다.

440 

4

 디스크 서명 

 디스크의 고유한 일련 번호가 들어갑니다

444

NULL 

 

446 

64 

프라이머리 파티션 테이블 

각각 16바이트 씩 개의 주 파티션 영역에 대한 정보가 삽입됩니다. 

510 

MBR 시그니쳐 

0x55AA 이게 없으면 부트로더로 인식하지 못합니다. 

전체 크기 : 446 + 64 + 2  = 512

첫 부분인 부트 코드 부분은 부트 로더에 관한 정보가 들어 갑니다 자세한 정보는 밑 부분에서 설명 하겠습니다.

440주소 부터 4바이트의 크기에는 해당 디스크의 고유한 일련 번호가 삽입되어 있습니다.

446주소 부터 64바이트의 크기에는 각각 16바이트씩 주 파티션(Primary Partition)에 대한 정보가 들어가는데요. 실제로 컴퓨터를 사용 하는 것을 보면 4개의 파티션 뿐만 아니라 그 이상의 갯수의 파티션도 생성이 가능합니다. 이것이 가능한 이유는 4개의 주 파티션에서 또 파티션을 나눌 수 있는 주 파티션이 존재하는데 이 파티션을 확장 파티션(Extended Partition)이라고 부릅니다. 확장 파티션은 하나의 디스크에 하나만 존재 할 수 있습니다.

따라서 프라이머리 파티션 테이블(주 파티션 테이블)은 4개의 주 파티션 또는 3개의 주 파티션과 1개의 확장 파티션을 가지고 있다고 할 수 있습니다.

이 확장 파티션에서는 또 다른 파티션을 생성 할 수 있는데 이렇게 생성된 파티션을 논리 드라이브(Logical Drive)라고 부릅니다.

디스크1의 모습을 보면 3개의 주 파티션과 4번째 부터는 논리 드라이브라고 적혀 있는 모습을 볼 수 있습니다.

논리 드라이브도 결론은 파티션이 분할 된 것이므로 파티션에 대한 정보가 어딘가에 저장되어 있어야 하는데 이미 MBR에는 공간이 없으므로 논리 드라이브는 EBR(Extended Boot Record)라는 공간을 두어 논리 드라이브의 파티션 정보를 저장합니다.


부트로더는 운영 체제가 시동되기 이전에 미리 실행되어 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동 시키는 목적을 가진 프로그램을 말합니다.

부트로더는 MBR에서 부트 코드 영역에 존재하는 프로그램입니다. 

생각 해보면 부트로더는 부트 코드에 존재하는데 부트코드 영역은 440Byte밖에 되지 않습니다.

요즘 상용화된 운영 체제 우분투나 윈도우같은 운영 체제를 보면 기능이 매우 거대한데 440Byte내에 그 많은 기능들을 담기에는 무리가 있습니다.

이럴때 사용하는 방식이 MBR에 들어 있는 부트로더를 1차 부트로더라고 부르며 1차 부트로더에서 2차 부트로더를 부르는 방식으로 운영 체제를 최종적으로 시동 시킵니다.

이러한 방식을 체인 로딩(ChainLoding)이라고 부릅니다.

일반적으로 사용하는 운영 체제의 부트 로더는 리눅스의 LILO,GRUB 윈도우의 NT Loader등이 있습니다.