링크는 제 블로그에 쓴 원문입니다.
기록용으로 써 둔 것이라 설명이 많이 부족한 점 양해 부탁드립니다.
시스템 구성
메인보드: Asrock H77 Pro4/MVP
CPU: Intel i5 3570
RAM: 삼성램 DDR3 8G x 2
SSD: 삼성 840 pro 128GB
VGA: MSI AMD Radeon HD 6870 R6870-2PM2D1GD5
PCI-E: USB 3.0 카드
+ 말 안듣는 구형 노트북
1 | 설치 USB 만들기
노트북은 옛날 그대로여서 노트북에 깔려있는 해킨(+우분투)을 이용했다. 통합본 만드느라 USB를 열 번도 더 엎고 고민도 몇 시간 했지만... 다 제쳐두고 여기서는 결과만 이야기하겠다.
?
USB는 16GB짜리를 썼고 파티션은 MBR로 아래와 같이 구성했다.
?
파티션 작업은 우분투에서 했는데, 이대로라면 맥에서 진행해도 괜찮을 것 같다. 파티션을 활성시키려면 맥에서는 fdisk440을 이용하면 된다. 활성 파티션이 윈도우로 되어있는건 데스크탑에서는 UEFI 환경이고 노트북에선 BIOS 환경이라 그렇다. 데스크탑에선 UEFI 환경에서 EFI 파티션을 이용해서 Windows 8, Mac OS X 10.8 설치를 할 수 있고, 노트북에선 윈도우즈의 부트로더를 통해 Windows 8, Mac OS X 10.7 설치를 할 수 있다.
자세한 구성은 뒤에서 설명하기로 하고, 우선 EFI 파티션이 왜 두 번째에 와 있는지 이야기해 보고자 한다. 윈도우에서는 USB의 첫 번째 파티션밖에 인식하지 못하는 것이 가장 큰 이유이기는 하다. 목표가 UEFI, BIOS 겸용 설치 USB를 만드는 것이다 보니, 여러 가지 구성을 생각해 볼 수가 있다.
?
- 파티션 테이블을 GPT로 한다: UEFI 환경에서도 EFI가 첫 번째에 있으면 윈도우 설치화면에 들어가보면 EFI 파티션만 인식되어 있는 것을 확인할 수 있다. EFI를 두 번째에 두면 UEFI 환경에선 윈도우 설치가 된다. 하지만 BIOS 환경에서는 설치를 할 수가 없다. BIOS 환경에서 윈도우즈를 부팅시키려면 Hybrid MBR로 구성해야 하는데, MBR에서 첫 번째 파티션이 기존 GPT 파티션 테이블을 보호하기 위한 파티션(GPT Protective)으로 잡히기 때문이다. 실제로 윈도우 설치화면으로 들어가보면 파티션이 인식이 아예 안 되어있는 것을 확인할 수 있다. 그렇다고 이 Protective 파티션을 안 쓸 수도 없는게, gptsync에서 그런 식으로는 설정이 안 되는 것도 있지만, 아마 맥이나 우분투에서 GPT가 아닌 MBR로 잘못 인식할 수도 있는 게 문제다. Hybrid MBR은 딱히 표준이 정해져 있지가 않아서 OS에서 어떤 식으로 인식할지 보장할 수가 없기 때문에... 예를 들어서 윈도우만 해도 Hybrid MBR은 그냥 MBR로 인식한다.
?
- 파티션 테이블을 MBR로 한다: 윈도우를 첫 번째 파티션으로 두면 된다. UEFI 부팅에 꼭 GPT가 필요한 건 아니라서, 윈도우의 EFI 폴더를 통해서 UEFI 설치도 잘 되고, 부트섹터도 윈도우용으로 해 두면 BIOS 환경에서의 설치도 잘 된다. MBR및 PBR를 맞추려면 윈도우 설치 파일에 동봉된 boot\bootsect.exe를 써도 되고, GUI로는 bootice (
1.0.6 K)라는 강력한 툴이 있다. EFI 파티션은 UEFI 환경에서 맥을 부팅하기 위해 두번째 파티션으로 배치한다. EFI 파티션이 꼭 첫 번째일 필요는 없다.
?
사족을 달자면 이렇게 MBR로 구성하면 주 파티션을 4개밖에 못 만들기 때문에 우분투를 넣을 수가 없다. 만약에 확장 파티션을 쓴다면 주 파티션 3개 + 확장 파티션 1개 (논리 파티션 n개) 이런 식이 되는데, 윈도우는 첫번째를 지켜야 하고, 우분투는 논리 파티션으로 만들더라도 상관 없지만, 맥은 어떻게 될지 모르겠다. 어차피 우분투는 용량도 적어서 설치 USB는 금방 만들 수 있으니 이 쯤 하기로 했다.
?
이렇게 파티션 구성을 마쳤으면 이제 부트로더를 심을 차례다. 클로버를 두 번째 EFI 파티션에 심으려면 약간 돌아서 가야 한다. 클로버 설치 패키지가 EFI 파티션이 무조건 첫 번째라고 생각하는 모양인지 저 상태로 클로버를 설치하면 실패한다. 어차피 UEFI 환경에선 파일만 있으면 그만이니까 다른 USB에 클로버를 깔고 EFI 파티션 아래의 파일들만 복사해 오면 된다. 현재 EFI 파티션의 폴더 구조는 아래와 같다.
EFI
?- BOOT: 클로버 부팅 파일(BOOTIA32.efi, BOOTX64.efi)
?- CLOVER
? - ROM: 6870용 1002_6738.rom, 7770용 1002_683d.rom (ATIflash로 추출)
? - drivers64UEFI: CsmVideoDxe, FSInject, HFSPlus, OsxAptioFixDrv, OsxFatBinaryDrv
? - OEM
? ?- B75M-D3H (다른 컴퓨터)
? ? - kexts > 10.8: FakeSMC, RealtekRTL8111
? ? - PostInstall > kexts > 10.8 > SLE: AppleHDA (설치 후 /S/L/E에 덮어쓸 kext 저장)
? ? - ROM: 1002_683d.rom (클로버에서 인식을 못해서 CLOVER 바로 아래의 ROM 폴더에도 둔 것임)
? ? - config.plist
? ?- H77 Pro4_MVP
? ? - kexts > 10.8: FakeSMC, RealtekRTL8111
? ? - PostInstall > kexts > 10.8: GenericUSBXHCI (설치 후 옮김), > SLE: AppleHDA (설치 후 덮어씀)
? ? - ROM: 1002_6738.rom (클로버에서 인식을 못해서 CLOVER 바로 아래의 ROM 폴더에도 둔 것임)
? ? - config.plist
?
나머지 파일들은 클로버 설치 후 건드리지 않아서 생략했다.
?
H77 Pro4_MVP의 config.plist는 아래와 같다(B75M-D3H도 세세한 옵션만 빠졌을 뿐 똑같다).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
? ? ?<key>GUI</key>
? ? ?<dict>
? ? ? ? ? <key>Theme</key>
? ? ? ? ? <string>mrengles</string>
? ? ? ? ? <key>Timeout</key>
? ? ? ? ? <integer>10</integer>
? ? ? ? ? <key>DefaultBootVolume</key>
? ? ? ? ? <string>Mac</string>
? ? ? ? ? <key>DebugLog</key>
? ? ? ? ? <false/>
? ? ?</dict>
? ? ?<key>RtVariables</key>
? ? ?<dict>
? ? ? ? ? <key>LogEveryBoot</key>
? ? ? ? ? <string>Yes</string>
? ? ? ? ? <key>LogLineCount</key>
? ? ? ? ? <integer>3000</integer>
? ? ?</dict>
? ? ?<key>SystemParameters</key>
? ? ?<dict>
? ? ? ? ? <!-- 부트 옵션은 GUI로. 설치 시에는 캐시 사용 안함으로 -->
? ? ? ? ? <key>boot-args</key>
? ? ? ? ? <string></string>
? ? ? ? ? <key>prev-lang:kbd</key>
? ? ? ? ? <string>ko:0</string>
? ? ? ? ? <key>CustomUUID</key>
? ? ? ? ? <string><!-- UUID 생성기로 생성 --></string>
? ? ? ? ? <key>InjectSystemID</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>LegacyBoot</key>
? ? ? ? ? <string>PBR</string>
? ? ? ? ? <key>InjectKexts</key>
? ? ? ? ? <true/>
? ? ?</dict>
? ? ?<key>KernelAndKextPatches</key>
? ? ?<dict>
? ? ? ? ? <key>Debug</key>
? ? ? ? ? <false/>
? ? ? ? ? <key>AsusAICPUPM</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>AppleRTC</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>KextsToPatch</key>
? ? ? ? ? <array>
? ? ? ? ? ? ? ?<dict>
? ? ? ? ? ? ? ? ? ? <key>Comment</key>
? ? ? ? ? ? ? ? ? ? <string>SSD Trim</string>
? ? ? ? ? ? ? ? ? ? <key>Name</key>
? ? ? ? ? ? ? ? ? ? <string>IOAHCIBlockStorage</string>
? ? ? ? ? ? ? ? ? ? <key>Find</key>
? ? ? ? ? ? ? ? ? ? <data>QVBQTEUgU1NEAA==</data> ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? <key>Replace</key>
? ? ? ? ? ? ? ? ? ? <data>AAAAAAAAAAAAAA==</data>
? ? ? ? ? ? ? ?</dict>
? ? ? ? ? </array>
? ? ? ? ? <!-- radeon/redsock bios decoder 사용 -->
? ? ? ? ? <key>ATIConnectorsController</key>
? ? ? ? ? <string>6000</string>
? ? ? ? ? <key>ATIConnectorsData</key>
? ? ? ? ? <string>0004000004030000000100001204050100040000040300000001000022050402000800000402000000010000110206040002000014020000000100000000030504000000040200000001000011020103</string>
? ? ? ? ? <key>ATIConnectorsPatch</key>
? ? ? ? ? <string>0004000004030000000100001204050100040000040300000001000022050402000800000402000000010000110206040002000014020000000100000000030504000000040200000001000011020106</string>
? ? ?</dict>
? ? ?<key>Graphics</key>
? ? ?<dict>
? ? ? ? ? <key>GraphicsInjector</key>
? ? ? ? ? <false/>
? ? ? ? ? <key>FBName</key>
? ? ? ? ? <string>Gibba</string>
? ? ? ? ? <key>VideoPorts</key>
? ? ? ? ? <string>5</string>
? ? ? ? ? <key>LoadVBios</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>PatchVBios</key>
? ? ? ? ? <true/>
? ? ?</dict>
? ? ?<key>PCI</key>
? ? ?<dict>
? ? ? ? ? <key>HDAInjection</key>
? ? ? ? ? <string>892</string>
? ? ? ? ? <key>USBInjection</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>USBFixOwnership</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>InjectClockID</key>
? ? ? ? ? <true/>
? ? ?</dict>
? ? ?<key>ACPI</key>
? ? ?<dict>
? ? ? ? ? <key>DropDMAR</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>GenerateIvyStates</key>
? ? ? ? ? <true/>
? ? ? ? ? <key>FixDsdtMask</key>
? ? ? ? ? <string>0xA097</string>
? ? ?</dict>
? ? ?<key>SMBIOS</key>
? ? ?<dict>
? ? ? ? ? <key>BoardManufacturer</key>
? ? ? ? ? <string>Apple Computer, Inc.</string>
? ? ? ? ? <key>Board-ID</key>
? ? ? ? ? <string>Mac-942B59F58194171B</string>
? ? ? ? ? <key>BoardSerialNumber</key>
? ? ? ? ? <string>XXXXXXXXXXXXXXXXXX</string>
? ? ? ? ? <key>BiosVendor</key>
? ? ? ? ? <string>Apple Inc.</string>
? ? ? ? ? <key>BiosVersion</key>
? ? ? ? ? <string>IM121.88Z.0047.B1D.1110171110</string>
? ? ? ? ? <key>BiosReleaseDate</key>
? ? ? ? ? <string>10/17/11</string>
? ? ? ? ? <key>Manufacturer</key>
? ? ? ? ? <string>Apple Inc.</string>
? ? ? ? ? <key>ProductName</key>
? ? ? ? ? <string>iMac12,2</string>
? ? ? ? ? <key>Version</key>
? ? ? ? ? <string>1.0</string>
? ? ? ? ? <key>Family</key>
? ? ? ? ? <string>iMac</string>
? ? ? ? ? <key>SerialNumber</key>
? ? ? ? ? <string>XXXXXXXXXXX</string>
? ? ? ? ? <key>ChassisType</key>
? ? ? ? ? <string>0x0D</string>
? ? ?</dict>
</dict>
</plist>
기울임 처리한 부분은 하얀 화면만 나오는 문제 때문에 설치 시에는 지워야 하는 부분이다. FixDsdtMask는 필요한 옵션만 선택했다. 무분별하게 선택하면 Loading drivers....에서 넘어가지 않거나 가끔씩만 부팅되는 이상한 일이 생긴다(처음에는 DSDT 문제인지도 모르고 한참 삽질했음). 위키에는 0xA7D7을 추천하는데 0xA097로 아무 문제 없으면 그냥 써도 무방하다.
?
이렇게 해서 UEFI 환경에서 설치화면을 보는 데 성공했다. Mac OS X 10.8은 InstallESD.dmg를 그대로 복원한 것이라 용량이 낮다. 리얼맥과 같이 EFI 환경에서 boot.efi에서 시작하기 때문에 InstallESD.dmg의 BaseSystem.dmg를 풀지 않아도 잘 되는 모양이다.
?
다음으로 노트북에서도 사용할 수 있도록 BIOS 환경에 맞게 부트섹터를 심었다. 카멜레온을 메인으로 하면 Windows 8, EFI가 FAT32라 카멜레온이 GUI도 안 뜨고 Windows 8을 선택할 수도 없는 문제가 있어서 윈도우를 메인으로 했다. 즉, 부트섹터는 이렇게 구성했다.
?
MBR: 윈도우의 MBR(활성 파티션을 찾아서 부팅).
PBR Windows 8: 윈도우의 PBR.
PBR EFI: 아무것도 안 함(부트섹터에 아무것도 없음).
PBR Mac OS X 10.8: 아무것도 안 함(부트섹터에 아무것도 없음).
PBR Mac OS X 10.7: 카멜레온.
?
Mac OS X 10.7 파티션은 카멜레온의 Extra 폴더를 포함해서 예전에 셋팅해둔 환경을 그대로 가져온 것이다. 노트북에선 클로버도 안 돌아가고 10.8도 안 돌아가는 구형이라 어쩔 수가 없었다. 윈도우 부트로더에 카멜레온을 등록하려면 윈도우에서 BCD를 수정해야 한다. 우선
chain0를 Windows 8 파티션의 루트에 복사한다. 그 다음 cmd (관리자) 창에서 아래의 명령어로 BCD에 카멜레온을 추가했다.
bcdedit /create /d “Chameleon Bootloader” /application BOOTSECTOR /store X:\boot\bcd
(X:\는 Windows 8의 파티션. 이 명령어의 결과로 나온 {UUID}를 복붙하여 사용)
bcdedit /set {UUID} device partition=X: /store X:\boot\bcd
bcdedit /set {UUID} PATH \chain0 /store X:\boot\bcd
bcdedit /displayorder {UUID} /addlast /store X:\boot\bcd
bcdedit /timeout 10 /store X:\boot\bcd
bcdedit /set {default} bootmenupolicy Legacy /store X:\boot\bcd
?
이렇게 해서 카멜레온에 진입하여 노트북에서도 설치화면을 볼 수가 있었다(데스크탑에서는 chain booting error라고 떴었는데 하드가 많이 꼽혀있던 탓인 듯 하다. 소스를 보니 하드를 4개까지 검색하는 식이었음). 한 가지 재미있는 점은 FAT32 파티션(여기서는 Windows 8, EFI)이 포함되어 있으면 GUI가 안 뜨던 카멜레온이 이렇게 하니까 GUI가 잘 뜨는 것이었다.
?
2 | 맥 설치 및 멀티부팅
설치 화면을 보는 데 성공했으니 설치는 금방이었다. 그런데 안전모드가 아니면 macx_swapon SUCCESS에서 멈추고 로그인 화면이 뜨질 않았다. 뭐가 문제인지 몰라서 kext도 바꿔보고 한참을 삽질하다가 질려서 2주쯤 냅두기도 했다. 알고보니 내장그래픽 때문에 안 되는 것이었다 ㅠㅠ.. BIOS에서 iGPU Multi-monitor를 꺼서 해결했다. 맥 설치의 기본 중 기본이 BIOS 설정이건만.. 참 허탈했다.
?
클로버를 하드에 심고 클로버 GUI 메뉴의 clover boot options에서 클로버를 UEFI에 등록하는 것으로 맥 설치는 끝났다. 클로버를 하드에 심을 때 클로버 설치 패키지를 써도 되지만 파일만 직접 USB에서 복사해와도 된다. EFI 파티션을 마운트하려면
?
mkdir /Volumes/EFI
mount_msdos /dev/diskXsY /Volumes/EFI
?
이런 식으로, 언마운트는 umount /Volumes/EFI 이렇게 터미널에 명령을 입력하면 된다.
?
클로버의 kexts에 kext를 추가했다면 커널캐시를 다시 생성해야 반영되는데, 이 때 kext 본체가 /S/L/E에 있는 것이 아니므로 Kext Wizard로는 캐시 재생성을 하면 안된다. 따라서
?
touch /System/Library/Extensions
rm -R /System/Library/Caches/com.apple.kext.caches/Startup/*
?
이렇게 하고 재부팅시 클로버에서 캐시를 사용하지 않도록 하면 맥이 알아서 캐시를 다시 만들어준다.?
?
이 다음으로 윈도우 8과 우분투를 설치했다. 윈도우 8은 알아서 부트메뉴를 등록해줬는데, 우분투는 그러지 않았다. 찾아보니 우분투의
버그라고 한다 (-_-) 그래서 직접 부트메뉴를 등록해줘야 하는데 여러 가지 방법이 있다.
?
- 바이오스에 부트메뉴에 등록하는 메뉴가 있는 경우도 있다.
- UEFI Shell 쓰기: 클로버에는 UEFI Shell이 들어있다. 클로버 GUI에서 UEFI Shell을 선택하면 된다. UEFI 메뉴를 등록하려면 bcfg boot add 0 fs1:\EFI\ubuntu\grubx64.efi "Ubuntu" 이런 식으로 하면 된다. 앞의 숫자는 메뉴 번호이고 뒤의 fs1은 EFI 파티션의 위치이다. map 명령어를 쓰면 파티션들을 확인할 수 있는데 화면이 휙 지나간다면 map -b 이렇게 명령어 뒤에 -b를 붙여서 한 페이지씩 볼 수 있다.
- 우분투에서 등록하기: 우분투에서는 efibootmgr를 쓰면 되는데(
참고) 내 경우엔 추가를 해도 반영이 되지 않았다. dump 파일이 있으면 지우라는데 dump 파일은 있지도 않았다. 커널을 최신으로 업데이트하고 efi_no_storage_paranoia를 넣어보는 방법은 해보지 않았다. 이래저래 찾아보다가 윈도우에서
bcdedit /export savebcd
bcdedit /import savebcd /clean
이렇게 한 뒤에 우분투에서 다시 해보면 된다고 하길래 해 보니 다행히 성공했다.
?
이렇게 길고 긴 삽질을 끝냈다.
현재 SSD의 파티션은 대략 이렇다.
맥으로 파티션하고 빈 공간에 윈도우를 깔았더니 못 쓰는 공간이 512MB나 생겨버렸다. 다음번에는 우분투로 미리 파티션해야겠다(언어를 한글로 하고 우분투 설치창에서 파티션을 하면 창이 커져서 파티션을 못하는 문제가 있는데 이때는 환경설정에서 작업공간을 켜거나 alt+드래그로 창을 옮겨가면서 파티션을 해야 한다).
히야 대박이네요. 노바 벤치 정도 한번 재보시면 더 완벽한 가이드가 될 것 같습니다.