2011년 6월 29일 수요일

VHD 파일로 윈도우 설치 및 깨끗하게 복구하기

아래내용들은 스누피님 블로그의 내용을 조합 해서 만든 겁니다. (스누피님블로그 에서 와따가따하기 불편해서 정리해놈.)

 

1. PE 부팅

윈도우 7 DVD로 부팅을 하신 다음 처음 화면에서 Shift + F10을 누릅니다. 또는 그냥 PE 파일을 구해 부팅한다.

2. VHD 만들기

diskpart
create vdisk file=c:\win7.vhd maximum=20480 type=expandable
attach vdisk
exit

=> DISKPART 실행

=> VHD 파일을 생성. 생성될 파일의 위치와 이름은 각자 지정해주세요.
maximum 다음에는 MB 단위의 숫자를 입력합니다. VHD 파일의 최대 크기를 설정하는 것인데 20GB로 지정하기 위해 20480을 입력

type 부분은 expandable로 지정해주셔야 동적 확장 디스크가 생성됩니다. 평소엔 VHD 파일 안에들어있는 용량만큼의 크기로 존재하지만 VHD로 부팅했을 경우엔 지정해주신 용량으로 (20GB)파일의 크기가 변경됩니다.

=> VHD 파일을 마운트합니다.

=> DISKPART 종료

 

3. 윈도우 설치

VHD에 설치하려고 하면 부팅되지 않을 수 있다는 경고가 나옵니다.

그냥 무시하고 설치

 

4. 프로그램 셋팅

설치를 다 하셨다면 이제 각종 프로그램을 설치하고 최적 셋팅

 

5. Differencing VHD를 활용 복구모드 생성

diskpart

create vdisk file=c:\win7-diff.vhd parent=c:\win7.vhd

attach vdisk

list vol

exit

bcdboot f:\windows /l ko-kr

copy c:\win7-diff.vhd d:

 

1. DISKPART로 들어갑니다.
2. 자식 VHD 파일을 생성해줍니다. - (자식 VHD 파일 이름은 각자 원하는 이름으로, 부모 VHD 파일 위치는 정확히 지정해주세요.) ※ 자식 VHD 파일과 부모 VHD 파일은 반드시 동일한 파티션에 존재해야 합니다.
3. 자식 VHD 파일을 마운트합니다. - 
4. 방금 자식 VHD 파일이 어느 드라이브에 마운트 되었는지 확인해줍니다. -
5. 확인이 되었다면 이제 DISKPART를 종료합니다. -
6. 이제 자식 VHD 파일을 BCD에 부팅 등록시켜 줍니다. -  (F 드라이브는 5번 단계에서 확인했던 VHD 파일이 마운트된 드라이브를 지칭합니다.)
7. 자식 VHD 파일을 이제 다른 곳에 백업합니다. 저는 40MB 정도 나왔는데 이걸 지금 백업해둬야 최소화된 백업 원본을 소유하게 되겠죠? -  (백업을 꼭 해야하는건 아니지만 매번 자식 VHD를 똑같은 이름으로 새로 만드는 것 보다는 백업해둔 파일을 교체하는 편이 훨씬 간단하기 때문에 저는 파일을 백업해둡니다.)
이게 끝입니다. 이제 재부팅 해보시면 자식 VHD로 부팅이 될 것입니다. 다만 기존 부모 VHD 엔트리와 이번에 새로 만든 자식 VHD 엔트리가 공존하게 되는데 기존 부모 VHD 엔트리는 삭제해주시면 됩니다. 엔트리 편집으로 가장 편한 방법은 msconfig 들어가서 부팅 탭에서 사용하지 않는 부모 VHD 부팅 메뉴를 삭제하시면 됩니다.

저는 이제부터 기존에 9GB 교체하던 작업을 앞으로는 40MB만 교체하면 됩니다. 제가 쓰고있는 부모 VHD와 백업해둔 자식 VHD 파일입니다.


6. 복구

Clean.vhd 파일과 복사한 Vhd 파일을 교체해주면끝.

Windows7설치.vhd,  Windows7설치 Child .VHD, Copy Windows7설치 Child.VHD 3개의 파일이 존재 하고, 부팅은 Copy Windows7설치 Child .VHD로 되어 있음.

 

Windows7설치 Child .VHD를 Copy Windows7설치 Child .VHD 파일로 복사

 

그런데 PE로 부팅해서 자동교체 하는 시간도 이제는 너무 귀찮게 느껴집니다. 불과 30초 정도밖에 되지 않지만... 그래서 오늘부터 자식을 2개 운용하기로 했습니다. 진작에 이렇게 사용할걸 그랬네요. 1번 자식을 사용하다가 깔끔하게 되돌리고 싶으면 2번 자식을 깨끗한걸로 교체하고 2번으로 부팅하면 됩니다. 이것도 커맨드로 한방에 처리할 수 있습니다.
아마 지금 100kb짜리 깨끗한 자식 파일 가지고 계실텐데 이놈을 복사해서 2개를 새로 만듭니다. 저는 child1.vhd, child2.vhd 파일을 만들었습니다.

이제 메모장을 열고 교체 & 부팅 기본값 변경 & 재부팅 스크립트를 작성합니다.
저는 자식 1번으로 부팅.cmd 파일을 이렇게 구성했습니다.

@echo off
pushd %~dp0
copy clean.vhd child1.vhd
bcdedit /default {78f20410-b0eb-11df-aa6f-e3d504a75150}
shutdown /r /t 0
exit

pushd %~dp0
이 명령어는 저한테 필요없지만 여러분께 필요해서 적어둡니다. bcdedit 명령어는 관리자 권한이 필요한데 UAC를 끄고 사용하거나 어드민 계정을 사용하는 경우가 아니라면 스크립트에 우클릭 해서 관리자 권한으로 실행했을 때 C:\Windows\System32 폴더를 기준으로 스크립트가 실행됩니다. 그러면 복사할 파일 경로를 전체로 적어줘야 하기 때문에 차라리 첫줄에 저렇게 넣어두는게 나아서 저렇게 해둡니다.
copy clean.vhd child1.vhd
이 명령어는 자식 1번으로 부팅할 생각이니 부팅하기 전에 먼저 자식 1번을 깨끗한 파일로 교체해주는 것입니다.
bcdedit /default {78f20410-b0eb-11df-aa6f-e3d504a75150}
이 명령어는 위 화면에서 bcdedit을 입력했을 때 나오는 자식 1번의 식별자 {GUID}를 기본 부팅 값으로 지정해주는 것입니다. 각자 자신의 컴퓨터 환경에 맞게 저 {GUID} 부분을 적어주시면 됩니다.
shutdown /r /t 0
이 명령어는 지금 바로 재부팅하겠다는 의미입니다.
저런 식으로 구성해서 메모장에 넣고 VHD 파일 모아놓은 곳에 확장자 CMD나 BAT로 저장해두면 됩니다. 지금 자식 1번으로 부팅했는지 2번으로 부팅했는지 그런건 헛갈릴 이유가 전혀 없다고 봅니다. 현재 부팅한 자식 파일이 부모의 최대 용량으로 되어 있으니까요.

저는 현재 자식 1번으로 부팅해서 글을 쓰고 있습니다. 보시다시피 child1.vhd 파일 용량이 20GB이죠. 따라서 VHD 파일을 교체할 생각이라면 자식 2번으로 부팅.cmd 파일을 실행하면 됩니다. 물론 지금은 아직 자식 2번으로 부팅한 적이 없어서 100kb 깨끗한 상태인데 평소에 2번 쓰다가 1번으로 온 상황이라면 2번 파일 크기가 1~2GB 정도는 되겠죠. 그놈을 100kb로 교체하고 그놈이 멀티부팅의 기본 메뉴가 되도록 지정하고 재부팅 하는게 위 배치파일의 역할입니다. 이것도 1,2 선택하게 메뉴를 구성하면 되지만 그러면 키보드를 한번 눌러야 하기 때문에 귀찮아서 그냥 파일 2개를 사용하기로 했습니다. 이 귀찮음의 끝은 어디일지...
아무튼 저처럼 매일 VHD 파일을 교체하시는 분들은 이렇게 사용해보세요. PE로 부팅해서 교체하던 30초를 줄일 수 있습니다. 그리고 가끔 부모 VHD로 부팅한 다음 윈도우 설정을 업데이트 하는 경우가 있는데, 그럴 때도 부모 VHD 상태에서 위 스크립트중 아무거나 하나 실행하면 그 자식이 깨끗한 놈으로 교체되고 부팅됩니다. 이제 더이상 PE로 부팅할 필요가 없어졌습니다. ^^

 

7. 기타사항

바로 자식 VHD의 변화분을 부모 VHD에 적용시키는 것입니다. 이렇게 자식 VHD로 부팅해서 사용하다보면 새로 추가된 프로그램이나 윈도우 설정이 마음에 들어서 이걸 부모 VHD에 적용시키고 싶어질 경우가 발생할 것입니다. 이럴 때는 부모 VHD 파일 자체를 변경시키는게 좋겠죠?
마찬가지로 PE로 부팅한 다음 CMD 창에서
1. DISKPART로 들어갑니다. - diskpart
2. 자식 VHD 파일을 선택합니다. - sel vdisk file=c:\win7-diff.vhd
3. 부모 VHD 파일에 자식 VHD 파일을 병합시켜줍니다. - merge vdisk depth=1
4. DISKPART를 종료합니다. - exit
(추가2) 자식파일 크기가 40MB로 된건 bcdboot 작업 때문에 attach를 한번 해줬기 때문에 그런 것 같습니다. 어차피 BCD엔 동일 이름으로 등록되어 있으니 자식 파일 삭제하고 다시 동일 이름으로 만들어주고 attach를 하지 않으니 100KB로 생성되었습니다. 저는 이제 교체할 때 100KB 파일만 바꾸면 됩니다. 어차피 40MB나 100KB나 바꾸는데 1초 걸리는건 똑같지만 그래도 용량을 절감하게 되었네요. ^^

(추가3) 자식 VHD 생성 작업은 PE로 부팅해야 하는게 맞습니다. 부모 VHD로 부팅한 상태에서 바로 자식 VHD를 생성해주려고 시도해보니 사용중이라는 이유로 거절당했습니다.

\\

출처:스누피님 블로그

윈도우 7 VHD 만들어서 설치하기
윈도우 7의 Differencing VHD 기능을 활용해보자
VHD 파일 교체하기 귀찮다면 자식 2개를 운용해보자

댓글 없음:

댓글 쓰기