최근 PC에 윈도우와 리눅스 멀티부팅 시스템을 사용하는 경우가 많아졌는데 윈도우를 먼저 설치하고 리눅스를 설치하면 부팅할 때 GRUB이 실행되서 어떤 OS로 부팅할지 선택하게 된다.
문제는 리눅스를 지우는 경우 grub까지 같이 없어져 버리면서 윈도우까지 부팅을 할 수 없게 된다는 점이다.
윈도우 파티션은 그대로 남아있기 때문에 아무 문제가 없는데 MBR에 부트로더가 없어서 컴퓨터를 on 하면 OS가 없다는 메시지가 나오고 더 이상 진행이 되지 않게 된다. 이 경우 그냥 윈도우를 다시 까는 사람들도 있는데 특별히 중요한 데이터가 없다면 몰라도 그렇지 않다면 상당히 귀찮은 일이 되어버리게 된다.
그래서 MBR이 무엇이고 어떤 내용을 담고 있는가와 위에서 말한 경우에 윈도우를 다시 설치하지 않고 부팅할 수 있는 방법에 대해 설명하려고 한다.
MBR이란?
Master Boot Record의 약자로 하드디스크의 첫번째 파티션을 생성할 때 만들어진다. 항상 디스크의 첫번째 섹터
에 위치하며 디스크의 파티션 테이블과 부팅에 필요한 작은 실행파일을 저장하게 된다.
앞쪽 446 바이트는 실행파일이고 바로 뒤 64 바이트가 파티션 테이블, 마지막 2 바이트가 시그니쳐로 항상 0x55AA 값을 가진다. (한 섹터는 512 바이트로 446 + 64 + 2 = 512)
다음은 정상적인 MBR의 예이다.
Physical Sector: Cyl 0, Side 0, Sector 1
000000000 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3AZ??.|uP.P.u?.|
000000010 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ?..PW?a.o¤E??.±.
000000020 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B 8,|.u.??.aoI.‹.‹
000000030 EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC i??.It.8,to?..N¬
000000040 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 <.tu»..?.I.eo‰F%
000000050 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 –SF.?.<.t.?.<.t.
000000060 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 :Au+@?F%.u$»?UP?
000000070 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 AI.Xr.?uU?u.oA.t
000000080 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF .Sa?V$C.?.e.?f.?
000000090 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E ..?..‹U3E?y..‹N
0000000A0 25 03 4E 02 CD 13 72 29 BE 46 07 81 3E FE 7D 55 %.N.I.r)?F.?>?}U
0000000B0 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 27 07 EB ?tZ?i.U…ou??'.e
0000000C0 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB S?‘R™.F..V.e..Ze
0000000D0 D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 00 00 00 00 OOta3AI.e?......
0000000E0 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 V3oVVRP.SQ?..V‹o
0000000F0 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 PR?.BSV$I.ZX?d.r
000000100 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 49 .@u.B€C.a?o^AetI
000000110 6E 76 61 6C 69 64 20 70 61 72 74 69 74 69 6F 6E nvalid partition
000000120 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 table.Error loa
000000130 64 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 ding operating s
000000140 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 ystem.Missing op
000000150 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 erating system..
000000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000180 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 ...‹u.W‹oE......
000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001B0 00 00 00 00 00 00 00 00 A6 34 1F BA 00 00 80 01 ........¦4.?..€.
0000001C0 01 00 07 FE 7F 3E 3F 00 00 00 40 32 4E 00 00 00 ...?>?...@2N...
0000001D0 41 3F 06 FE 7F 64 7F 32 4E 00 A6 50 09 00 00 00 A?.?d2N.¦P....
0000001E0 41 65 0F FE BF 4A 25 83 57 00 66 61 38 00 00 00 Ae.??J%?W.fa8...
0000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U?
바이러스나 기타 이유로 앞쪽 446 바이트가 지워지거나 값이 변경된다면 부팅할 때 아무 메세지 없이 그냥 멈춰있게 되는데 그 경우라 하더라도 파티션 테이블만 살아 있다면 디스크를 분리해서 다른 컴퓨터에 연결한다면 파티션 안의 정보는 그대로 사용할 수 있다.
가장 심각한 문제는 파티션 테이블이 망가지는건데 이 경우는 쉽게 해결할 방법은 없고 하드 복구 전문업체에 의뢰하거나 전용 소프트웨어를 사용해서 복구를 시도해야 한다.
마지막 2 바이트 값이 0x55AA가 아니라 다른 값이면 부팅할 때 "Operating System not found" 같은 에러가 발생하게 된다.
망가진 MBR을 복구(파티션 테이블은 살아있는 경우에만 가능)하는 방법으로는 먼저 fdisk를 사용할수가 있다.
A:\> fdisk /mbr
다음으로는 윈도우 NT/W2K/XP인 경우 디스크나 CD로 부팅한 다음 repair 옵션을 선택해서 recovery console을 실행한다. 콘솔에서 fixmbr 명령어를 실행시키면 망가진 MBR을 복구할 수 있다.