2015/09/12

BIOS GPT 하드디스크를 이용한 Windows 10 Clean Install


이전 글에서는 UEFI를 지원하는 PC에서 Windows 10 Clean Install 한 것에 대해 얘기했었는데, 여기서는 GPT(GUID Partition Table) 파티션을 사용하는 BIOS PC에서 Windows 10 Clean Install 한 것에 대해 얘기해 보려고 한다.

구입한지 5년된  Dell 11" Alienware(m11x)에는 Windows 7과 Ubuntu 외에 Hackintosh를 시험삼아 설치했었다. 결과적으로 Hackintosh 설치 당시에는 m11x가 최신 PC였기 때문에 설치는 했지만 네트웍과 Nvidia 3D 가속이 안돼서 이 후로 쓰지 않고 방치해 놓고 있었다. 참고로, 당시에 성능과 휴대성을 갖춘 노트북으로 Dell 12" 모델이 단종되는 바람에 이 놈을 산 것이었다. m11x  출시 후에 11" Macbook Air가 나왔다. 11인치는 너무 작고 최대 해상도가 1366x768 이라 답답하다. 최근에는 베젤 공간을 없앤 12인치 노트북 모델들이 아마 휴대성과 성능을 겸비한 노트북들이지 않을까 싶다.

아무튼 이 놈은 UEFI를 지원하지 않았기 때문에 Multi-OS를 설치하기 위한 방법을 찾아야 했다. 그 때 찾은 것이 Grub BIOS-GPT 파티션이다. BIOS PC에서 GPT 파티션을 사용하면서 Multi-OS booting이 가능한 방법이다. 이 파티션에 대해서는 "Ubuntu UEFI 모드 설치 USB 만들기"에서도 언급한 바 있다. GPT 파티션을 사용하려면 모든 것을 지우고 새로 설치해야 했기에 위의 USB를 만들어서 작업했었다. 나에게 있어서 OS에 관한 한 항상 모든 문제의 시작은 Windows였고 그 끝도 Windows였다. Windows에서는 아래와 같은 제약 사항이 있는데 당시에는 주로 USB에서 테스트했기에 제약 사항조차 제대로 파악하기 어려워서 매우 헤맸었다.

Windows에서 GPT 파티션 사용시 제약 사항
  • Windows Vista 이후 UEFI를 지원하면서 HDD(하드디스크)에서 GPT를 지원하기 시작했지만, BIOS 모드로 Windows 설치시  GPT 파티션을 인식하지 못함
  • Windows 10을 포함해서 UEFI 환경에서조차 HDD에서는 GPT 파티션을 지원하지만 USB는 1개의 파티션만 인식함
  • 결과적으로, BIOS 모드 Windows 환경에서 GPT 파티션을 사용하려면 Hybrid-MBR 파티션을 사용해야 하나, 여기서도 USB는 1개의 파티션만 인식함
우분투 설치 USB는 UEFI와 BIOS를 모두 지원할 수 있지만, 위의 Windows 제약 사항들 때문에 UEFI와 BIOS를 모두 지원하는 Windows 설치 USB는 만들기가 매우 어렵다. All-in-one Multi-OS 설치 USB를 만들어 보려고 한 사람들이 나 말고도 꽤 있을 것이다. 사실, 아예 불가능한 것은 아니다. USB에 UDF 영역을 별개로 만들어서 Windows 설치 iso를 구우면 USB의 UDF 영역을 CD로 인식하기 때문에 UEFI 환경에서는 UEFI 모드로 부팅하고, BIOS 모드에서는 BIOS 모드로 부팅한다. 다만, 이 영역을 만들기 위해서는 전문적인 USB Tool을 사용해야 한다. 이 USB에 앞서의 USB 만들기 글을 적용하면 All-in-one에 근접한 Multi-OS 설치 USB가 된다. Grub2와 Grub4Dos를 같이 사용하면 All-in-one Multi-OS 설치 USB를 만들 수 있을지도 모른다.

Windows 10 Clean Install 노가다를 다시 시작할 수 밖에 없었던 사연

사실, Windows 7도 훌륭한 OS이다. 전에 Windows 10 설치 노가다를 한 경험이 있어서 다시는 하고 싶지 않은 일이었다. 문제는 애초에 Windows 파티션을 너무 작게 잡은데서 비롯된 것이다.


위의 화면과 같이 WRoot(/dev/sda3) 파티션에 Windows 7을  50GB 할당했었다. 당시에는 넉넉해 보였다. 나중에 알았지만 Windows 7은 Update를 계속할수록 디스크를 갉아 먹는다. 최근에 Update 했더니 여유 공간이 200MB 정도 밖에 없어서 Update 조차 불가능한 상황이 되었다. Windows 7에서 제공하는 디스크 정리 도구를 사용해서 불필요한 시스템 Backup 파일까지 제거해도 1GB 정도 밖에 남지 않았다. 웬만하면 OS 이외의 앱들은 D: 드라이브인 WData(/dev/sda4) 파티션에 설치하는데도 이런 일이 생긴 것이다. 다행히, iTunes를 포함한 Apple 앱들과 Data 공간을 싸그리 지웠더니 6GB정도의 공간이 남았다. Windows 8 이후부터는 Windows Update 후에도 공간을 어느정도 정리해준단다. 하지만, Windows 7은 Update 후 공간이 부족할 때마다 또 다른 노가다를 해야 한다. 이런 상황에서 Windows 10 무료 업그레이드 예약하라고 자꾸 귀찮게 하는 놈이 눈에 띄었다.

Windows 10으로 Clean Install 하면 OS 공간이 대략 18GB밖에 되지 않는다. 그래서 이 참에 이 노가다나 저 노가다나 비슷하다는 생각이 들어서 Windows 10 Clean Install을 결심하게 되었다. 그래서 바로 무료 업그레이드 예약을 해 버렸다. 뭐 10분 정도 지나니까 Windows 10으로 Upgrade하란다. Upgrade 시간이 오래 걸리는 것을 알기 때문에 그냥 Upgrade 걸어 두었다.  Windows Clean Install을 진행하기에 앞서 Upgrade 후에 Windows 정품인증이 됐는지 확인할 필요가 있는데 잘 돼 있더라.

참고로, Windows 10 Upgrade에 필요한 최소 공간이 3GB 정도란다. Windows 10 설치파일 용량 정도이다. 그런데, Windows 10으로 Upgrade 한 후 한달 이내에는 다시 Windows 7으로 복원할 수 있단다. 상식적으로 현재 여유 공간이 6GB 밖에 안남았는데 Windows 7과 Windows 10을 동시에 디스크에 남겨놓을 순 없기에 아마 MS 서버에 Backup을 하는 것 같다. 기존에 설치된 앱들이 많기 때문에 역시나 Upgrade 시간도 상당한 시간이 걸렸다. Windows 10으로 Upgrade를 마치고 나서 OS 공간이 얼마나 남았나 보았더니 똑같이 6GB 정도 남았더라. Windows.old 폴더가 있긴 한데 5GB 정도 밖에 안되고... 이것이 Windows Clean Install을 하지 않으면 안되는 이유이다. Windows 10 Clean Install 후에는 역시 18GB 정도 밖에 OS 파티션을 잡아먹지 않는다.

Windows 10 Upgrade 시에 또 한가지 참고할 점은 기존의 Grub 설정을 건드리지 않는다는 점이다. 즉, MBR 영역을 건드리지 않는다. 하지만, 나중에 Windows 10을 Clean Install 하면 MBR을 덮어 버리므로 Grub을 복구해 주어야 한다.

BIOS 모드에서 GPT-MBR Hybrid Partition 사용

위의 gparted 화면에서 알 수 있듯이 gparted에는 GPT 파티션 순서와 용량 정보는 있지만 Hybrid MBR 파티션 정보는 보이지 않는다. Hybrid MBR 파티션을 만들어 주는 도구는 리눅스에 기본 설치된 gdisk이다. gdisk로 다시 들여다 본 것이 아래의 화면이다.


위의 화면 아랫 부분에 4개의 MBR 파티션이 보인다. 이 파티션들은 gdisk의 "recovery and transformation options (experts only)" 메뉴에서 "make hybrid MBR" 메뉴를 이용해서 만든 것이다. 기존에 생성한 GPT 파티션 중에서 MBR 파티션에 어떤 놈을 보여 줄지를 지정하면 된다. 단, MBR 파티션은 Windows에서 사용하는 파티션이므로 vfat 또는 ntfs 파티션이어야 한다. gdisk의 GPT 파티션 상에서는 code가 0700(Microsoft Basic Data)인 놈들 중에서 골라야 한다. Hybrid-MBR에서는 EFI Protective Partition이 기본적으로 필요하기 때문에 실제로 사용자가 사용할 수 있는 파티션 갯수는 3개까지이다. 위의 화면에서 0xEE는 gdisk가 자동으로 지정한 파티션이다.

gdisk가 좋은 점은 파티션에 별짓을 다했다가도 "write table to disk and exit" 명령만 사용하지 않으면 실제로 파티션 변경이 일어나지 않는다는 것이다. "quit without saving changes" 명령으로 빠져 나오면 안전하다.

gdisk를 이용한 파티션 재구성

Windows 10을 Clean Install 하기로 한 마당에 더이상 사용하지 않는 Hackintosh 파티션인 MRoot(/dev/sda2)를 WRoot 파티션과 합쳐서 Windows OS 공간을 늘리기로 했다. 또, Grub에서 사용하는 BIOS boot partition(/dev/sda10)이 sector 순으로 보면 /dev/sda3가 됐어야 하는데 맨 나중에 생성하는 바람에 10번째 파티션이 되어 버린 것도 gdisk의 "sort partitions" 메뉴를 이용해서 재정렬할 필요가 있었다. 이것 때문에 gparted 실행시 경고 메시지가 뜬다.

그런데, 이 시점에서 Windows 10 설치 USB를 다시 만들어야 하는 문제가 있었다. 예전에 만들어 놓은 USB는 우분투 설치 USB에 함께 들어 있어서 Grub2에서 UEFI 모드로만 동작하기 때문이다. 별개의 USB를 사용하기 보다는 HDD에 4GB의 Windows 10 설치 파티션을 따로 만들어서 설치 iso의 파일들을 모두 복사해 놓고 Grub2를 사용하면 HDD를 이용해서 Windows를 설치할 수 있겠다는 생각이 들었다.

위의 고려 사항들을 종합해서 결과적으로 아래 화면과 같이 파티션을 재구성하였다. 파티션 재구성 작업시에는 앞서 만든 우분투 설치 USB로 부팅해서 작업해야 한다.


기존의 Grub BIOS 파티션을 지우고 EFI System Partition(ESP) 다음에 새로 만들었다. 그 다음에는 Windows 10 설치 파티션(WInst)을 만들고, 그 다음에 WRoot 파티션을 다시 만들었다. 파티션 재 구성시 주의할 점은 기존의 중요한 Data 파티션 들과 우분투 파티션은 건드리면 안된다는 것이다. 우분투 파티션은 Grub을 이용해서 Windows 10 설치 파티션으로 부팅시 사용해야 한다. 참고로, BIOS 모드에서는 ESP 파티션을 만들 필요는 없다. 다만, 공간도 그리 많이 차지하지 않고 UEFI 환경과 비슷하게 만들어 사용하는 것이 좋은 습관이 될 듯해서 그냥 둔 것이다.

gdisk에서 파티션을 생성한 후에 gparted를 사용하여 WInst와 WRoot 파티션을 ntfs로 포맷하였다. 아예 gparted로 파티션 작업을 할 수도 있겠지만 gdisk가 세부 정보를 보여 주기 때문에 편리한 점이 있다. 포맷을 완료 한 후에 gdisk에서 아래 화면과 같이 Hybrid MBR 파티션을 지정해 주어야 한다.


gdisk와 gparted 또는 다른 OS의 partition tool을 혼용해서 사용할 경우에는 항상 gdisk로 파티션 table에 변경사항이 없는 지 확인해야 한다. 실제로, gdisk에서 Hybrid MBR 파티션을 생성하고 나서 gparted에서 ntfs 파티션 포맷만 하더라도 Hybrid MBR 파티션 정보가 날아가 버린다. 이 정보가 날아가면 BIOS 환경에서 Windows로 부팅할 수 없게 된다.

또한, 위의 경우와 같이 Grub BIOS 파티션을 새로 생성하는 경우에는 우분투 파티션의 BIOS Grub을 다시 설치해 주어야 우분투로 부팅할 수 있다. Grub 재설치 방법은 이전 글인 "Ubuntu BIOS 및 UEFI Grub 복구"를 참고하면 된다.

Grub2와 HDD의 Windows 설치 파티션을 이용한 Windows 10 설치

우분투 설치 USB에서 파티션을 재구성한 후 우분투로 부팅해서 Windows 10 iso의 파일들을 WInst 파티션에 모두 복사한다. 그리고 나서, update-grub 하면 자동으로 Windows  Recovery 메뉴엔트리가 Grub에 추가된다. 참고로 우분투 14.04 환경이다. 이전 버전에서는 자동으로 안될 수도 있는데 이 때에는 수동으로 Grub menuentry를 /etc/grub.d/40_custom 파일에 만들어 주고 update-grub을 해 주어야 한다.

$ sudo update-grub
$ sudo reboot

재부팅 후 Windows Recovery 메뉴로 부팅해서 Windows 10 Clean Install을 진행하면 된다. Windows 설치 자체는 뭐 큰 어려움이 없다. 다만, 설치시에 설치할 파티션을 WRoot 파티션으로 지정해 주어야 한다.

Windows 10 설치 후 WInst 파티션은 D: 드라이브로 잡혀 있다. 이 놈은 숨겨 두는게 좋은데, 디스크 관리자에서 드라이버 문자만 제거해 주면 된다.

Windows 10 설치 후 Driver 문제

Windows 7에서 10으로 Upgrade 한 상태에서는 모든 Driver가 정상 동작했었는데 Windows Clean Install 후에 제어판의 장치관리자에서 확인해 보니 Video 드라이버도 기본 저해상도 드라이버로 잡혀 있고, 알 수 없는 장치로 표시된게 대부분이었다. 혹시나해서 드라이버 업데이트를 On-line에서 검색해서 설치하도록 했는데 대부분 잘 잡아 준다.

참고로, Dell 사이트에서는 m11x 드라이버는 Windows 7 밖에 지원하지 않는다. 그리고, Windows 7 드라이버의 설치 프로그램이 Windows 10에서는 아예 실행되지 않는다. 일단, 알수 없는 장치 두 개는 드라이버 업데이트를 할 수 없었고  Bluetooth도 안잡혀 있었다. Bluetooth는 Dell site에서 Windows 10을 지원하는 Bluetooth 4.0 드라이버를 다른 랩탑 모델 다운로드 사이트에서 시험삼아 설치해 봤는데 잘 된다. 알 수 없는 장치는 장치관리자의 상세 정보를 이용해서 구글링해 보니까 키보드 콘트롤 드라이버하고 낙하센서 드라이버인 듯 하다. 이외에도 키보드 LED Backlight 를 비롯한 LED 제어 드라이버도 필요하긴 한데 PC 쓰는데 큰 지장이 있는 것들은 아니어서 그런대로 만족이다.

Grub 복구

Windows를 설치하고 나서 우분투를 다시 사용하기 위해서 우분투 설치 USB로 다시 부팅해서 Grub 복구 작업을 다시 해 주어야 한다. "Ubuntu BIOS 및 UEFI Grub 복구"를 참조하면 된다.

노가다 소감

Windows 7 디스크 공간 문제 때문에 Windows 10 Clean Install 노가다를 했는데 그런대로 만족이다. 어차피 파티션 정리작업을 한번쯤 하려고 했었기 때문에... 더구나, BIOS GPT 환경에서 Hybrid MBR을 사용하는 유일한 PC이기도 했기 때문에 잊어버리기 전에 다시 여러가지 문제들을 정리할 기회가 되기도 했으니까.

보통 OS 설치시 USB를 많이 사용하는데 HDD를 사용해서 Windows를 설치하는 것도 괜찮은 방법인것 같다. 더구나 BIOS GPT 환경에서는 Windows의 제약 사항때문에 무척 편리한 방법이라는 것도 새삼스럽게 느껴진다.