예전부터 이 질문을 자주 받았는데, 주말을 맞이하여 시간을 좀 내서 테스트를 해봤습니다. 결론부터 말씀드리면 잘 되더군요. 뭐 하기야 딱히 안 되어야 할 이유는 없으니까요.

우선 윈도우 비스타부터 도입되었던 시스템 이미지 백업. 아시는 분은 아시겠지만 이게 VHD 파일로 백업이 됩니다. 일단 시스템 이미지 백업에 관해서는 예전에 포스팅했던 글을 참조하세요.

2009/11/07 - [Windows 7/기타 윈도우 7 이야기] - 윈도우 7의 완벽한 복구기능을 활용해보자

그래서 많은 분들이 시스템 이미지 백업으로 만들어진 VHD 파일로 부팅하는게 가능하지 않겠냐는 궁금증을 가지셨습니다. 왜냐하면... VHD 부팅을 활용해보고 싶기는 한데, 새로 윈도우를 설치하는건 부담스럽기 때문에 현재 시스템을 그대로 VHD로 만들어서 부팅을 하고 싶었기 때문입니다.

물론 윈도우 7의 시스템 이미지 백업 기능을 꼭 활용해야 하는건 아닙니다. 그냥 VHD 파일을 하나 만들어서 마운트 시키고, 고스트같은 복제도구를 이용해서 파티션 복제를 해버려도 됩니다. 어떤 방법이든 각자 편리한 방법을 선택하시면 되겠죠.

서론은 그만두고 이제 실전으로 들어가보겠습니다. 현재 테스트 환경은 다음과 같습니다.

디스크 0
C - 20GB Windows 7 Ultimate K SP1 32bit
D - 20GB 비어있음

디스크 1
E - 100GB 비어있음

이 상태에서 디스크 0번의 C 드라이브를 윈도우 7의 시스템 이미지 백업 기능으로 VHD 파일로 백업을 받을 겁니다. 물론 E 드라이브에 백업을 받겠습니다.


여담이지만 백업받는데 2분도 채 걸리지 않더군요. 왜냐하면... VMware 머쉰 자체를 SSD에 설치했거든요.

아무튼 이렇게 백업받은 파일을 E 드라이브에서 찾아들어가 보니 용량이 5.12GB 나왔습니다. 무압축으로 백업하기 때문에 그런 것 같습니다.


이놈을 잘라내기 해서 E 드라이브 루트로 옮긴 다음 이름을 간단하게 backup.vhd로 변경했습니다. 이름이 너무 길고 복잡하면 작업하기 불편하니까요. 그리고 원래 있던 WindowsImageBackup 폴더는 삭제했습니다. 다른 파일들은 전혀 필요하지 않으니까요.


사실 지금까지는 준비운동에 불과했습니다. 시스템 이미지 백업이야 그냥 마우스 몇번만 클릭하면 누구나 손쉽게 할 수 있으니까요. 하지만 아래 단계부터는 신경을 좀 쓰셔야 합니다.

저는 이 backup.vhd 파일을 K 드라이브에 마운트 시켜놓고 작업을 하겠습니다. 꼭 K 드라이브일 필요는 없으니 각자 원하는 문자로 하세요. 그리고 마운트 작업은 디스크관리자로 처리해도 되는데, 저는 지금부터 하는 작업을 전부 커맨드로 처리하겠습니다. 초보자 분들은 정신차리고 잘 따라해보세요.

아 그리고 아래 작업들은 반드시 관리자 권한으로 명령 프롬프트를 띄우신 다음 실행해주세요.


먼저 DISKPART로 들어가서 VHD 파일을 K 드라이브로 마운트 시키겠습니다.

diskpart
select vdisk file=e:\backup.vhd
attach vdisk
select partition 1
assign letter=k
exit


여기까지 하시면 C 드라이브를 백업한 VHD 파일이 K 드라이브로 등장하게 됩니다.


이제 이 VHD 파일을 부팅메뉴에 등록해보겠습니다. bcdedit을 이용해도 되지만 어차피 마운트했기 때문에 간단히 bcdboot을 사용해봅시다.

bcdboot k:\Windows /l ko-kr


이대로 부팅하면 끝일까요?

안타깝게도 그렇지 않습니다. 가장 중요한 작업이 남아 있습니다. 바로 드라이브 문자 문제입니다. 지난번에 잠깐 언급드렸던 적이 있는데

2011/10/05 - [컴퓨터 관련 팁] - 디스크, 파티션 복제하기 - Macrium Reflect Free

위 글에서 9번 마무리 작업을 보시면 드라이브 문자 충돌 문제를 다루고 있습니다. 즉 이 백업한 VHD 파일로 부팅을 해버리면 저 파일에 들어있는 K 드라이브의 윈도우는 현재의 C 드라이브를 C 드라이브라고 인식하고 있습니다. 따라서 부팅시에 자신이 C 드라이브를 차지하지 못하게 됩니다. 그래서 바탕화면에 진입하지 못하고 먹통상태로 빠지게 됩니다.

이 문제를 해결하려면 K 드라이브에 있는 윈도우의 레지스트리를 수정해서 현재 C 드라이브가 차지하고 있는 문자를 다른 문자로 변경해줘야 합니다. 그래야 VHD 파일로 부팅했을 때 K 드라이브의 윈도우가 C 드라이브라는 문자를 차지할 수 있게 됩니다. 무슨 말인지 대충 이해는 하셨죠?

1. regedit.exe를 실행합니다.
2. HKEY_USERS 키를 선택합니다.


3. 파일 - 하이브 로드


4. 마운트한 (K 드라이브) 윈도우의 아래 파일을 선택

K:\Windows\System32\config\SYSTEM


5. 하이브 로드 키 이름은 아무거나 해도 되는데, 저는 TEST로 하겠습니다.


6. HKEY_USERS\TEST\MountedDevices로 찾아간 다음 \DosDevices\C: 부분에 우클릭 해서 이름 바꾸기를 눌러서 \DosDevices\S: 처럼 이름을 변경해주세요.


이게 끝입니다. 이대로 재부팅을 하시면 원래 C 드라이브를 차지하던 녀석은 S 드라이브로 변경되기 때문에 백업받은 VHD 파일의 윈도우가 정상적으로 C 드라이브를 차지하면서 부팅할 수 있게 되었습니다.

멀티부팅 화면에서 기본값으로 잡혀있는 Windows 7이라는 메뉴가 있는데, 그 녀석이 바로 VHD 파일입니다. 왜냐하면 bcdboot으로 등록을 하게 되면 그놈이 기본값으로 잡히기 때문입니다. 만약 이놈의 이름을 수정하고 싶다면 아래와 같이 해주시면 됩니다. 큰 따옴표 안에다 각자 원하는 부팅메뉴 이름을 적어주세요.

bcdedit /set {default} description "Windows 7 VHD"

부팅을 하게 되면 아래와 같이 멀티부팅 메뉴가 뜹니다.


그런데 첫번째 부팅시에는 일단 에러가 한번 납니다. 왜냐하면 기동중인 상태의 윈도우를 라이브로 백업했기 때문에, 이 백업된 이미지 입장에서는 켜져있는 윈도우가 저장되어 있었으니, 첫번째 부팅시에는 강제종료된 윈도우가 다시 부팅된 것처럼 인식되기 때문입니다. 신경쓸 필요 없이 표준 모드로 Windows 시작 해주시면 되구요.


보시다시피 아무런 이상 없이 바탕화면 진입 잘 되었고, 제가 S 드라이브라고 수정해줬던 기존 윈도우는 역시나 S 드라이브로 잘 잡혀 있습니다.


E 드라이브에 가서 backup.vhd 파일을 봐도 20GB로 잡혀 있습니다. 이 말은 현재 이 VHD 파일로 부팅이 된 상태라는 뜻이죠.



이 글에서 가장 중요한 부분이 무엇인지 다들 잘 아시겠죠? 기존 윈도우를 VHD로 백업한 다음 이걸로 부팅할 때는 반드시 백업본이 가지고 있던 C 드라이브에 대한 정보를 수정해줘야 한다는 것입니다.

그런데 이대로 사용하기엔 좀 불편한 점이 있을 겁니다. 기존 C 드라이브가 부팅 정보를 가지고 있는 활성 파티션인 경우가 아마 대부분일 것입니다. 따라서 현재 S로 변경된 드라이브를 포맷할 수 없을 것입니다. 포맷을 하려면 활성 파티션을 다른 드라이브로 걸어주고 그쪽에 BCD를 새로 생성해줘야 합니다. 여기에 대해서 설명을 드리려면 글이 꽤 길어질 것이고, 사용하고 있는 환경이 다 다르기 때문에 (확장 파티션, 동적 디스크, MBR, CMOS 부팅 설정 등의 문제) 설명드리기 좀 거시기합니다.

그렇다고 설명을 드리지 않으려니 그것도 좀 거시기하기 때문에, 간단히 말로만 설명을 드리자면

1. 다른 파티션에 (예를 들어 E) 활성 파티션 속성을 걸어준다.

2. bcdboot으로 다른 파티션에 (예를 들어 E) 부팅 파일을 생성해준다.
예제) bcdboot c:\windows /s e: /l ko-kr

3. 만약 E 드라이브가 물리적으로 다른 디스크라면 CMOS에 들아가서 하드디스크 부팅 우선순위를 변경해준다.

대충 이정도만 설명을 드리겠습니다. 부팅권한, 페이징파일 등의 문제를 해결하면 S 드라이브를 포맷할 수 있을 것입니다. 어차피 VHD 부팅에 관심가지시는 분들은 어느정도 부팅 영역에 대해서 이해를 하고 계시리라 생각하기 때문에, 셀프로 충분히 잘 해결하시리라 믿겠습니다. ㅠㅠ