Apple/OS X

Hybrid MBR - OSX 멀티

뭉기 2012. 8. 8. 11:38

출처 : http://x86osx.com/bbs/view.php?id=osxtips&no=1946&ksn=1&kss=1&ksc=0&kst=1&ksm=1&kw=gpt%20mbr

GUID partition (GPT) 와 Mastar Boot Record (MBR PC BIOS) partition, 그리고 hybrid MBR까지..


OSX 를 깐다고 삽을 드셨다면, GPT (GUID partition table) 와 MBR 에 대해 들어보셨을 겁니다. 이 글에서는 두 파티션 테이블을 철저히 해부하고 분해해 보도록 하겠습니다. 기술적인 부분이 아닌, 사용자 입장에서 말이지요.

PC BIOS 기반에서 MS-DOS 시절부터 일반적인 윈도우, 예전 버젼 리눅스 등에서 사용하던 방식이 MBR based partition 입니다. 오랜 역사를 가지고 있지요.

이 오래된 MBR partition table 의 문제를 해결하고자 나온 것이, EFI 시스템에서 주로 사용하는 GUID partition table (GPT) 입니다.

일단 두 파티셔닝 방식의 차이를 표를 통해 보겠습니다.



일단 네줄 요약:

1. GPT 가 나중에 나왔으니, 당연히 기능은 MBR보다 다 좋습니다. 윈도 쓸 일이 없다면 GPT 쓰시면 됩니다.

2. 하지만 결정적인 문제는 윈도우에서 GPT가 부팅디바이스로 원래 지원이 안된다는겁니다.

3. 그래도 hybrid MBR 을 사용하면 윈도 설치 및 활용이 가능합니다.

4. hybrid MBR 사용이 아주 쉽지만은 않습니다. 위에 나열된 GPT의 장점을 활용할 일이 없다면, 그냥 MBR을 쓰는 것도 좋은 선택입니다.



자, 그럼 이번엔 3번에 관심있는분. 즉 GPT 디스크에서 윈도우를 설치하고 싶은 분들을 위해 hybrid MBR  에 대해 설명드리겠습니다.

먼저, GPT 디스크에 OSX와 Windows 모두 설치방법:

1. OSX 설치프로그램으로 디스크를 GPT 로 파티셔닝합니다. 윈도우 깔 공간은 따로 만들어놔야겠지요.

2. OSX 가 다 깔린 후 Windows를 설치합니다.

3. fdisk 로 active partition 을 OSX 파티션으로 바꾸면 OSX 로 부팅됩니다.

너무 간단해서 뭔가 이상한가요? 사실 2번은 위의 대전제를 엎고 시작합니다. GPT 파티션에 그냥 Windows를 설치한다고 하니까요. Microsoft 기술문서에도 저건 보통 안된다고 나와있고, 비스타나 XP 를 설치하려고 할 때, "GPT 디스크에는 설치할 수 없습니다." 라는 에러를 보신 분들도 있을겁니다.

저기서 마법은, OSX 에서 디스크 유틸리티로 파티셔닝을 한다는 겁니다. 디스크 유틸리티는 hybrid MBR을 지원하고, 저기서 Boot Camp 용으로 파티셔닝 되어있다는 이야기는 지금 hybrid MBR 이 적용되어 있다는 의미입니다.



*** Hybrid MBR & gptsync ***

여기서 hybrid MBR 이 뭔지 짚고 넘어가죠. 사실 GPT는 MBR이 들어가는 자리를 사용하지 않고 남겨둡니다. 그리고 거기다가 MBR 파티셔닝 방식으로, "이 디스크는 통째로 GPT가 사용하고 있습니다." 라고 기록해두죠.

hybrid MBR은, 현재 GPT로 파티셔닝된 정보를 MBR 파티셔닝 방법으로도 기록해두는걸 뜻합니다. 이 방법을 사용하면 GPT가 지원하는 프로그램에서 보면 GPT 디스크지만, MBR만 지원하는 프로그램에서 보면 MBR 디스크로 보이는거죠. 그래서 윈도우를 설치할 수 있는겁니다.

OSX의 디스크 유틸리티는 기본적으로 hybrid MBR을 지원합니다. 그래서 저 1,2,3 방법이 먹히는거고요. 하지만 어떤 이유로든 (주로 리눅스 파티셔닝 툴을 쓸때 발생하는 문제입니다만) GPT 파티셔닝과 MBR 파티셔닝 정보가 어긋나게 되면 큰일이 납니다. 파티션 테이블이 깨진거니까요. 부팅이 안될수도 있고, 다른 파티션의 데이터를 덮을수도 있습니다. 따라서 파티션 관련 작업을 한 후엔 gptsync 프로그램을 사용하여 GPT 정보를 MBR 로 동기화 시켜주는것이 좋습니다.

Ubuntu Linux 같은 경우는 sudo install gptsync 명령어를 통해 gptsync 프로그램을 설치할 수 있습니다. 설치 후, sudo gptsync /dev/sda 라고 하면 sda 디스크의 GPT 정보를 MBR 로 동기합니다.

OSX 용 gptsync 는 http://www.insanelymac.com/forum/index.php?showtopic=177505 여기서 다운받을 수 있습니다. 전 이 gptsync 를 더 좋아하는데요, 이 enhanced 0.2 버젼은 어떤 파티션을 MBR로 동기화할지 정할 수 있기 때문입니다.

예를 들어, 제 디스크는 GPT로 4개의 파티션이 있습니다. Windows 파티션, Linux 파티션, OSX 파티션, 데이터 파티션. 데이터 파티션은 FAT32로 포맷되어 있어 설치된 모든 OS 에서 자유롭게 자료를 저장할 수 있습니다.

아참, 저 표에서 MBR은 primary partition 이 4개밖에 안된다고 그랬죠? 그런데 사실 GPT 파티션엔 맨 앞에 200M짜리 EFI 파티션이 하나 생깁니다. 그럼 총 5개네요. 그러면 앞부터 선착순으로 하면 데이터 파티션은 MBR 에 동기화시켜줄 수 없어요. 이게 일반적인 gptsync 의 방식입니다.

하지만 저 OSX용 enhanced gptsync 는 동기화 시킬 파티션 지정이 가능합니다. sudo gptsync /dev/rdisk0  2 4 5+ 라고 명령어를 주면, OSX HFS+ 파티션은 빼고 데이터 파티션을 포함해 동기화를 시킵니다. 그러면 윈도에서 데이터 파티션을 접근할 수 있지요. 물론 빼먹은 OSX 파티션은 "할당하지 않은 공간" 으로 표시됩니다. 건드리면 큰일나요!

diskutil list 하면 현재 파티션 번호 및 상태를 볼수 있다. 파티션 번호 뒤에 + 를 붙이면 Active 파티션이 된다. (윈도 파티션에 해줄것)

(표에 있는것처럼 XP 64bit, Vista+ 에서는 GPT 파티션 인식이 가능합니다. 하지만 hybrid MBR 파티션 정보가 있는 경우는 MBR 파티션으로 인식합니다.)


*** 다시 요약 ***

정리하면, 솔직히 GPT 사용해서 그렇게 부귀영화를 누릴 수 있는것은 아닙니다. OSX 쓰는 입장에서 1. 오리지날과 뭔가 비슷하다는 느낌, 2. 파티션 크기 조절이 가능하다는것, 3. OSInstall 파일을 패치할 필요가 없다는것 정도가 실질적 장점이겠죠. 2T 이상 파티션 쓰거나 하지 않는다면 말에요.

위 장점이 그다지 필요없고 윈도우를 같이 쓴다면, 속편하게 MBR partition scheme 를 사용하시는것이 좋습니다. 일단 깔리고 나면 잘 돌아가니까요.

Linux 는 MBR, GPT 군말없이 잘 깔리고 지원하기는 합니다. 다만 Linux의 파티션 유틸리티를 사용하면 hybrid MBR 정보가 전부 날아가요. gptsync 를 꼭 해줘야 합니다.

표에 있는것처럼 OSX, Linux 공통으로 fdisk 커맨드는 MBR을 작업합니다. GPT 작업은 다른 유틸리티를 사용하고요. active(boot flag) 정보가 서로 다를 수 있으니 주의하세요. 경험상 Vista의 부트로더는 hybrid MBR 에서 지정되어있는 boot partition 으로 부팅합니다.


http://refit.sourceforge.net/myths/ 여기에 GPT, EFI 에 대한 진실 혹은 거짓이 잘 정리되어있습니다. 대부분의 오해와 진실을 정확하게 알기 좋죠. 다만, GRUB이 GPT 를 인식 못한다는건 GRUB1 이야기고, GRUB2는 GPT를 잘 지원합니다.



망가진 윈도 부트 영역 복구법
1) 윈도우7 부팅이 되지않는 PC에  윈도우7 CD를 넣어서 부팅
2) 설치초기화면에서 shift +  F10 눌러서 CMD창을 띄운다
3) bcdboot c:\windows /s c:\ /l ko-KR  명령을 실행한다.

C:\> diskpart
DISKPART> list disk
DISKPART> select disk 0
DISKPART> list partition
DISKPART> select partition 4
DISKPART> active


4) 리부팅한다.  ^^


잘안되면 아래로
1) 윈도 7 CD로 부팅
2) 키보드 언어 설정후 / 하단의 복구 선택 -> 첫번째 복구 유틸 사용 선택 -> 시동 복구 선택
3) 리부팅