티스토리 뷰

Bootcamp로 설치한 윈도우에서 용량이 부족해서 파티셔닝 프로그램을 사용해서 크기를 조절했는데, 재부팅을 하고 나서 윈도우로만 부팅이 되고, 부팅할 때 option 키를 누르고 있어도 부팅 가능 목록에 윈도우만 표시가 되는 황당한 경험을 했다. 맥 파티션 안에 잃어버리면 치명적인 자료들이 있었기 때문에, 갖은 방법을 시도해 보았다.


윈도우 상에서 diskmgmt.msc 를 통해 확인한 결과 MACINTOSH HD 파티션과 RECOVERY HD 파티션의 타입이 Windows 복구 파티션으로 변경되어 있었다. 파티셔닝 툴이 데이터는 손상시키지 않았지만 파티션 정보가 담긴 헤더 쪽에 영향을 미친 것 같은 느낌이 들었다.



첫 번째로 시도한 방법은 Paragon HFS+ for Windows® 10  이라는 상용 툴을 사용하는 방법이었다.

이 프로그램은 윈도우 상에서 맥의 HFS+ 파일 시스템을 볼 수 있게 하는 솔루션인데, 정상적인 GPT 정보를 가진 맥 파티션이라면 윈도우에서 인식이 되지만 파티션 정보가 손상되버린 내 경우에는 아무 것도 표시되지 않았다.


두 번째로 시도한 방법은 Testdisk 라는 디스크 복구 툴을 사용하는 방법이었다.

예전에 윈도우 파티션을 실수로 지워버렸을 때 이 툴을 사용해서 손상 없이 말끔하게 복구를 했던 좋은 기억이 있다. 다양한 시스템의 파티션을 지원하지만, 디스크 파티션을 분석하는 단계가 매우 오래 걸린다는 단점이 있다. 혹여 오랜 시간이 걸려 분석이 끝났어도, 키를 잘못 조작하면 오랜 시간 분석한 내용이 날아가버리는 헛고생을 할 가능성이 있었다. 구글링을 해 봤지만 나와 같은 경우로 맥 파티션을 복구하려고 한다는 자료는 찾지 못했다. 방금 말한 헛고생을 경험하고 나서, 다른 방법을 고민해 봤다.


자꾸 처음에 생각했던 원인과 동떨어진 방법을 시도하다가, 다시 원점으로 돌아와서 생각해봤다.

맥의 EFI 방식의 부트 로더를 사용하며, GPT 라는 방식으로 파티셔닝을 한다. 최신의 윈도우와 같은 방식이다. 다만, GPT 파티션에는 GUID 라는 필드를 통해 파티션의 파일시스템 타입을 설정할 수 있는데, 내 경우에는 맥의 HFS+ 파일 시스템 타입 아니라 윈도우 파일시스템 타입의  GUID가 설정되어 있던 것이다. 이것을 바꿀 방법을 찾아보았는데, "Mac GPT repair" 키워드로 검색을 하니 내가 찾던 해결 방법과 가까운 Q&A 글이 나왔다. 그 내용은 맥 GPT 파티션의 손상된 헤더를 원래의 값으로 바꿔야 한다는 것이었다.


만약 지금 나와 같은 문제를 겪고 있는 분들이 있다면, 기쁜 마음으로 실실 웃으며 한 step씩 따라오면 꿈에 그리던 결과를 얻을 수 있을 것이다. 지금부터 시작한다.


1. Option Key를 누른 채 부팅을 한다 

그럼 윈도우만 덩그러니 보일 것이다. 슬퍼하지 말고, command+R 키를 누르면 복구 모드로 진입을 할 텐데, 현재 맥 파티션과 복구 파티션 헤더가 모두 손상되서 '인터넷 복구' 모드로 진행이 된다. 이 상태는 인터넷에서 Live rescue 이미지를 받아와서, 마운트 및 부팅이 되는 방식이며, 디스크 도구 및 맥 클린 설치, Shell 같은 기능을 지원한다. 더 이상 잃을게 없는 사람이라면 여기서 클린 설치를 하면 되고, 나같이 잃으면 아쉬운 사람이라면 2번으로 계속 따라오면 된다. 아, 디스크 유틸리티를 이용해서 '파티션 복구' 기능을 실행해봤지만 달라지는건 없었다. 다음.



2. 상단 메뉴의 [Utility - Terminal] 을 실행


그러면, Root 권한을 가진 심플한 쉘이 실행된다.


Select terminal



기본적으로 다양한 명령어들을 가지고 있으며, 우리를 구원해줄 diskutil과 gpt 명령어 또한 포함되어 있다. 기쁜 마음으로 쉘을 실행하자.




3. 쉘에서 다음 명령어를 실행해보자


# gpt -r show /dev/disk0



그럼 아래와 같이 디스크에 있는 파티션들의 현황이 나온다. 내용은 예시.


    start                size          index          contents
        0                   1                                 EFI
        1                   1                                 Pri GPT header
        2                 32                                 Pri GPT table
       34                  6        
       40          409600                1               GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
 409640      823778456               2               GPT part - DE94BBA4-06D1-4D40-A16A-BFD50179D6AC # 맥 데이터 파티션
824188096  152916931               3               GPT part - DE94BBA4-06D1-4D40-A16A-BFD50179D6AC # 맥 복구 파티션

977105027  643055258               4               GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7   # 윈도우 Bootcamp
1620160285            32                                 Sec GPT table
1620160317              1                                 Sec GPT header



내 경우, index 2번이 내 소중한 데이터가 들어있는 MACINTOSH HD 파티션이었다. 이는 size를 통해 판단을 할 수 있다.  3번 파티션은 맥의 복구 파티션인 RECOVERY HD 파티션이었다. contents에 있는 GPT part - XXXX 어쩌고 하는 것이 바로 파티션 유형을 나타내는 GUID 값이다. 저 값에 윈도우 복구 파티션을 뜻하는 DE94BBA4-06D1-4D40-A16A-BFD50179D6AC 라는 값이 들어가 있었던 것이 문제였다. 이제 저것을 정의구현 할 차례다. 그럼 이제 원인도 파악했겠다, 그동안 쌓였던 울분을 풀어보자. (참고 : Wikipedia - GUID Partition Table)



4. 작업을 할 디스크를 마운트 해제 시키기

gpt 작업을 하기 위해서는 파티션을 마운트 해제하는 작업이 필요하다. 다음 명령어를 실행하자


# diskutil ummountDisk disk0



unmount of all volumes on disk0 was successful 메시지가 보인다면, 마운트가 정상적으로 해지되었다는 뜻이다. 급할 것 없다. 다음 단계로 넘어가자.




5. 잘못된 GPT partition 정보를 제거하기

2번과 3번의 파티션 정보가 잘못되었으므로, 지우는 작업을 해야한다. 다음 명령어를 차례대로 실행시키자. -i 옵션 뒤에는 삭제할 파티션의 인덱스를 넣어주면 된다. 먼저 2번을 지웠다.


# gpt remove -i 2 disk0


만약 3번 파티션도 잘못되었다면, 같은 방법으로 -i 3 옵션으로 지워주도록 하자


6. 정상적인 GPT partition 정보를 기록하기

드디어 마지막 단계다. 따라오느라 고생이 많다. 우선 명령어 사용법은 다음과 같다.
맥 파일시스템의 GUID 타입 값은 53746F72-6167-11AA-AA11-00306543ECAC 였다. 참고로, HFS+ 파일시스템의 48465300-0000-11AA-AA11-00306543ECAC 값을 넣고 시도했더니 먹통이 되는 문제점을 발견했다.
 

# gpt add -b [시작 LBA] -i [파티션 인덱스 번호] -s [파티션 사이즈] -t [GUID 파티션 타입] /dev/disk[디스크 번호]


먼저, 중요한 데이터 파티션 (MACINTOSH HD) 정보를 복구했다.

굵게 표시된 값들(시작 LBA, 파티션 사이즈)은 위의 [3]번 단계에서 얻은 값들을 참고해서 넣어야 한다.

주의! 시작 LBA와 파티션 사이즈가 1이라도 틀리면 5번부터 다시 시도해야 한다.


# gpt add -b 409640 -i 2 -s 823778456 -t 53746F72-6167-11AA-AA11-00306543ECAC /dev/disk0


다음으로, 부팅에 필요한 복구 파티션 (RECOVERY HD) 정보를 기록했다. '426F6F74-0000-11AA-AA11-00306543ECAC' 라고 정상으로 표시됐으면, 하지 않아도 된다.  



# gpt add -b 824188096 -i 3 -s 152916931 -t 426F6F74-0000-11AA-AA11-00306543ECAC /dev/disk0



7. 눈물의 재부팅....ㅠㅠ


마치며

구글링 실력과 독해 능력이 뛰어나다면 금방 해결할 수 있는 문제겠지만, 한글로 작성된 포스트를 찾아볼 수 없었기에 글을 남기게 되었다. 백업의 중요성을 뼈저리게 느꼈던 값진 경험이었다. 여기까지 따라온 여러분들도 느끼는 바가 많을 것이라고 생각한다.



백업을 생활화 합시다!!



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함