Server & OS

MBR

컨텐츠 정보

본문

마스터부트영역의 구조와 FDISK/MBR에 대한 설명

≫ MBR이란?

MBR이란 하드디스크로 부팅하기위한 정보와 파티션 분할 정보 부팅에 사용되는 실제 파티션 (ACTIVE PARTITION)에 대한
정보가 저장된 곳으로 하드디스크의 제일 바깥쪽에 위치한 공간으로(절대섹터0(Cylinder 0, Head 0, Sector 1), 크기:1sector(512byte)) 하드 디스크로 들어오는 관문이 되는 곳이다.

≫ MBR이 하는 일

1. 부트파티션(active partition)을 파티션 테이블에서 찾는다.
2. 부트파티션의 시작섹터를 찾는다.
3. 부트파티션내의 부트섹터(boot record)복사본을 메모리로 로드시킨다.
4. 부트섹터의 실행코드의 전송을 중간에서 콘트롤한다.

만일 MBR이 위의 기능들을 완전히 끝마치지 못하면 다음 중 하나의 메세지를 화면에 표시하고 시스템이 정지하게 된다.
Invalid partition table.
Error loading operating system.
Missing operating system.

※ 플로피디스크나 LS-120, Zip 디스크 등은 MBR이 존재하지 않는다. 위의 이동식 저장매체의 첫번째 섹터는 부트섹터 부터 시작한다.

※ 하드디스크가 두개이상 정착된 시스템에서 모든 하드디스크에 MBR이 존재하지만 실행영역으로 지정된 파티션 (active partition)이 포함된 하드디스크의 MBR만 사용된다.

≫ MBR의 구조와 내용

다음은 윈도우98,ME에서 사용되는 표준MBR코드의 내용이다.
Absolute Sector 0 (Cylinder 0, Head 0, Sector 1)

0 1 2 3 4 5 6 7 8 9 A B C D E F

0000: 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3.....|.P.P....|

0010: BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ...PW...........

0020: 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B 8,|.u...........

0030: EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC ....It.8,t....N.

0040: 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 <.t...........F%

0050: 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t.

0060: 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 .u+@.F%.u$..UP.

0070: 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t

0080: 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF ....V$.......f..

0090: 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E .......3.......N

00A0: 25 03 4E 02 CD 13 72 29 BE 46 07 81 3E FE 7D 55 %.N...r).F..>.}U

00B0: AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 27 07 EB .tZ.......u..'..

00C0: 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB ...R..F..V....Z.

00D0: D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 00 00 00 00 .Ot.3...........

00E0: 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V..

00F0: 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r

0100: 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 49 .@u.B......^..tI

0110: 6E 76 61 6C 69 64 20 70 61 72 74 69 74 69 6F 6E Nvalid partition

0120: 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 table.Error loa

0130: 64 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 ding operating S

0140: 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 ystem. Missing op

0150: 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 erating system.

0160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

0170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

0180: 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 ......W.........

0190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

01A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

01B0: z00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 ................

01C0: 01 00 0B 7F BF FD 3F 00 00 00 C1 40 5E 00 00 00 ......?....@^...

01D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

01E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

01F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U.



실행코드영역(excutable area, 271byte)
:하드디스크로 부팅하기 위해 필요한 어셈블러 명령어들로 구성되어 있다.

에러메세지(error message, 80byte)
:하드디스크의 부팅이 실패했을 때 보여줄 메시지들이들어 있는 곳.

예비공간(미래를 위해 남겨둔 공간)
:기본적으로는 사용되지 않으나 일부 프로그램들은 이 영역을 사용하기도 한다.

실행코드(excutable code)
:MS사가 실행코드 7byte를 이곳에 쓰게 했는데 아직 정확한 이유를 밝히고 있지 않다.

파티션테이블(partition table, 64KByte)
:하드디스크내의 기본영역과 확장영역에 관련된 용량,위치 등의 정보와 부팅 가능한 파티션 설정에 대한 정보가
담겨 있다.

매직넘버(magic number)
:내용의 끝을 알리는 표시.



≫ FDISK /MBR 명령이 하는 일

FDISK /MBR 명령명령을 실행하면 MBR영역중 파티션테이블64Byte를 제외한 MBR영역 전체를 FDISK가 다시 기록해 준다.
이명령은 파티션테이블을 제외한 MBR영역이 손상되었을 때 이를 복구하는 도구로 사용된다.
파티션테이블이 손상되었을 경우는 다른 복구 유틸리티나 디스크에디터를 이용하여 직접 정보를 써 주거나 백업본을 이용하여 복구해야 한다.


참고

LILO 지우기
LILO가 부트섹터에 설치될 때 그것의 백업이 /boot/boot.xxyy로 생깁니다. xxyy는 hex로 그 디바이스의 major 그리고 minor 숫자이다. 그것은 ls -l /dev/device 를 실행하여 확인할 수 있다. 예를 들어, /dev/hda (major 3, minor 0)의 처음 섹터의 숫자들은 /boot/boot.0300에 저장됩니다. 이에 대해 /dev/fd0 상의 LILO가 /boot/boot.0200를 만들고 /dev/sdb3 (major 8, minor 19)가 /boot/boot.0813를 만든다.

이것은 이미 하나가 존재한다면 다시 그 파일을 만들 필요가 없다. /boot/에 있는 백업본들은 항상 어떤 릴로를 설치하기 전에 그 상황을 확인한다.

참고로 다음과 같이 하면 백업된 섹터 이미지를 복원할 수 있다.

# /sbin/lilo -u /dev/hda


만약 Lilo가 /dev/hda에 설치되어 있다면 단지 다음과 같이 해 주면 된다.

1] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

또는

cat /boot/boot.0300 > /dev/hda

그러나, 이것은 안전하지 못하다. 원래 파티션 테이블 정보를 복원하게 되기 때문이다.

2] /sbin/lilo -U 또는 lilo -u /dev/hda(MBR이 있는 곳)

3] fdisk /mbr

이것은 도스쉘로부터 실행한다.

만약 리눅스의 루트파티션에 LILo가 설치되어 있다면 어떤 특별한 조치가 필요하진 않는다.
리눅스를 지울 때 이것이 함께 지워진다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
사랑한다는 것은 둘이 마주보는 것이 아니라 함께 같은 방향을 바라보는 것이다. (생떽쥐베리)