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가 설치되어 있다면 어떤 특별한 조치가 필요하진 않는다.
리눅스를 지울 때 이것이 함께 지워진다.

관련자료

등록된 댓글이 없습니다.
Today's proverb
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)