본문 바로가기

윈도우

[윈도우7] VHD 시스템구성 풀셋팅 (BigShit작성)

* Snoopy 블로그 '윈도우 7의 VHD 부팅기능을 활용해보자' 참조
  (원문 :
http://snoopybox.co.kr/1129)

* 2009.11.18 BigShit 작성

* 개인적인 백업용 글입니다. 검색을 통해 들어오신분은 위에 링크된 Snoopy님 블로그를 참조하세요.


※ 시 작

1. 윈도우7 CD를 넣고 CD부팅 후, 파티션 만드는데까지 가서 기존 C드라이버(시스템)를 정리한다.
   * 포맷이 되어있는 깨끗한 하드라면 생략 후 2번과정으로 이동.

2. 포맷까지 완료했다면 계속 진행하지말고 X를 눌러서 윈도우7 설치 처음화면으로 돌아간다.

3. 처음화면에서 Shift + F10 키를 눌러서 커맨드창을 열고, 아래 내용을 순서대로 입력한다.

3-1. diskpart
      → DISKPART 실행 명령어

3-2. create vdisk file=c:\win7.vhd maximum=30720 type=expandable
      → c:\win7.vhd의 경우 파일생성 위치, maximum=30720의 경우 가상 VHD의 크기)

3-3. attach vdisk
      → VHD 파일 마운트

3-4. exit
      → DISKPART 명령어 종료

3-5. exit
      → 커맨드창 종료

4. 커맨드창 닫고 설치화면으로 돌아가 아까 만든 VHD 파티션에(=할당되지 않은 공간으로 표기됨) 윈도우7 설치
   * 할당되지 않은 공간이 8~9m 짜리 하나가 더 있을경우 신경쓰지말고, 아까 3-2 과정에서 지정한 용량으로 확인!

5. 윈도우 설치가 다 되면, VHD가 C드라이버로 잡힐것이다. win7.vhd파일은 D드라이버에 존재할것으로 예상.

6. 프로그램 깔거 다 깔고, 윈도우를 최적의 상태로 만든다.
   * 고용량의 프로그램 및 게임은 C드라이버에 설치하지 말고, win7.vhd파일이 있는 드라이버에 설치!
      (*.VHD 파일의 용량을 줄이기위함)


※ Differencing VHD(자식 VHD 만들기)
* 시작하기전에 부모vhd 백업해주면 좋음

7. 재부팅후 마찬가지로 PE부팅 진입해서 Shift + F10으로 cmd창 열고, 아래순서대로 입력

8-1. Diskpart
      → DISKPART 실행 명령어

8-2. create vdisk file=c:\child.vhd parent=c:\win7.vhd
      → c:\child.vhd의 경우 새로 만들 자식 vhd, c:\win7.vhd의 경우 3-2에서 만들었던 vhd 파일

8-3. attach vdisk
      → 방금 만든 child.vhd 파일 마운트

8-4. list vol
      → C, D, E 등의 정보가 내려올거고, VHD 파일크기에 맞는 파티션네임을 기억한다.(보통 F나 G정도..)

8-5. exit
      → DISKPART 명령어 종료

8-6. bcdboot f:\windows /s c: /l ko-kr
      → f:\는, 아까 8-4에서 말한 그 파티션을 입력해야하고, c:는 부팅정보가 존재하는 파티션명(보통 C)

8-7. copy c:\child.vhd d:
      → 지금 만든 c:\child.vhd 파일을 다른파티션으로 복사.(40메가 정도 될것임)

8-8. exit
      → 커맨드창 종료.

9. 재부팅을 해주고, 똑같은 윈도우7이 두개로 생겼을텐데 위쪽것 선택
  * 일반적으로 위쪽것이긴 한데 혹시모르니 윈도우 진입해서
     D드라이버에 win7.vhd는 실용량인지, 방금만든 child.vhd 파일은 30G인지 확인해줄것.
     확인해서 맞으면 자식vhd로 진입한것이고, win7.vhd가 30G고 child.vhd 파일이 40메가정도면
     부팅잘못한거니 아래쪽 윈도우로 부팅해보자.

10. 9과정에서 이상없다면 시작 실행메뉴에서 msconfig -> 부팅(탭) -> '현재OS; 기본OS' 빼고 다삭제

11. 재부팅후 마찬가지로 PE부팅 진입해서 Shift + F10으로 cmd창 열고, 아래순서대로 입력

12-1. del c:\child.vhd
      → 자식 vhd 삭제.. 용량 줄이기 위한 작업임 8-7 이전에는 할수가 없었음)

12-2. diskpart
      → diskpart 실행

12-3. create vdisk file=c:\child.vhd parent=c:\win7.vhd
      → 한번더 만들어주고..

12-4. exit
      → diskpart 종료

12-5. copy c:\child.vhd d:
      → D로 백업해주고..

12-6. exit
      → 커맨드창 종료

13. 재부팅하여 윈도우 진입


※ 자동교체 및 자동병합 메뉴 만들기
* 1번부터 13번까지 그대로 따라왔다면(파일명까지 전부) 윈도우상 D드라이브에 win7.vhd파일과 child.vhd파일이 있을것임. 

14. E:로 가서 12-5과정에서 복사해준 child.vhd 파일을 clean.vhd로 이름변경

15. win7.vhd, child.vhd 파일와 같은곳에 복사(D경로에 모두 존재하도록.. 폴더에 넣진 말고..)

16. D:vhdboot 폴더 생성(나같은경우 vhd파일이 몰려있는 드라이브경로에 함)

17. 윈도우7 x86 CD이미지(x64안됨)에서 Sources 폴더에 있는 Boot.wim 파일 두번 복사

18. 하나는 update.wim로 이름변경, 하나는 recovery.wim로 이름변경해서 vhdboot 폴더에 넣을것

19. C:\Windows\Boot\DVD\PCAT 폴더로 가서 boot.sdi 파일 복사해서 vhdboot 폴더에 넣을것

20. 메모장 실행해서 아래내용 입력한걸 diskpart.txt 파일로 저장하고 vhdboot 폴더에 넣을것

sel vdisk file=c:\child.vhd
merge vdisk depth=1

21. 메모장 실행해서 아래내용 입력하고 setup.cmd 파일로 저장(일단 아무곳에나 저장)
@echo off
for %%A in (C: D: E:) do if exist %%A\clean.vhd copy /y %%A\clean.vhd %%A\child.vhd
exit

22. QBFC, Bat To Exe Converter 등의 프로그램을 이용하여 setup.cmd 파일을 setup.exe 파일로 변환

23. E:asdf 폴더 생성(반드시 wim 파일이 있는 경로와 다른경로에 만들것. 이 폴더는 이따 지울폴더임)

24. cmd창 열고,

25. dism /mount-wim /wimfile:d:\vhdboot\recovery.wim /index:2 /mountdir:e:\asdf
      → recovery.wim 파일을 asdf폴더에 마운팅

26. 아까 22번에서 변환한 setup.exe 파일을 asdf폴더에 덮어씌운다음 반드시 폴더 닫을것

27. dism /unmount-wim /mountdir:e:\asdf /commit
      → asdf폴더에 마운팅됐던 내용을 다시 언마운팅


※ ↓↓↓ 한번더 비슷하게 명령어만 달리해서 반복작업

28. 메모장 실행해서 아래내용 입력하고 setup.cmd 파일로 저장(일단 아무곳에나 저장)
diskpart /s c:\vhdboot\diskpart.txt
copy /y c:\clean.vhd c:\child.vhd
exit

29. QBFC, Bat To Exe Converter 등의 프로그램을 이용하여 setup.cmd 파일을 setup.exe 파일로 변환

30. cmd창 열고,

31. dism /mount-wim /wimfile:d:\vhdboot\update.wim /index:2 /mountdir:e:\asdf
      → update.wim 파일을 asdf폴더에 마운팅

32. 아까 22번에서 변환한 setup.exe 파일을 asdf폴더에 덮어씌운다음 반드시 폴더 닫을것

33. dism /unmount-wim /mountdir:e:\asdf /commit
      → asdf폴더에 마운팅됐던 내용을 다시 언마운팅

34. cmd창 열고 아래내용 입력
* 자동교체 메뉴임

bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=D:
bcdedit /set {ramdiskoptions} ramdisksdipath \vhdboot\boot.sdi
bcdedit /create /d "VHD Recovery" /application OSLOADER  
↑↑ 이거 입력후 나오는 {Guid} 값 복사

bcdedit /set {Guid} device ramdisk=[D:]\vhdboot\recovery.wim,{ramdiskoptions}
bcdedit /set {Guid} osdevice ramdisk=[D:]\vhdboot\recovery.wim,{ramdiskoptions}
bcdedit /set {Guid} path \windows\system32\winload.exe
bcdedit /set {Guid} systemroot \windows
bcdedit /set {Guid} winpe yes
bcdedit /set {Guid} detecthal yes
bcdedit /set {Guid} ems yes
bcdedit /displayorder {Guid} /addlast
bcdedit /timeout 3

35. cmd창 열고 아래내용 입력
* 자동병합 메뉴임

bcdedit /create /d "VHD Update" /application OSLOADER  
↑↑ 이거 입력후 나오는 {Guid} 값 복사

bcdedit /set {Guid} device ramdisk=[D:]\vhdboot\update.wim,{ramdiskoptions}
bcdedit /set {Guid} osdevice ramdisk=[D:]\vhdboot\update.wim,{ramdiskoptions}
bcdedit /set {Guid} path \windows\system32\winload.exe
bcdedit /set {Guid} systemroot \windows
bcdedit /set {Guid} winpe yes
bcdedit /set {Guid} detecthal yes
bcdedit /set {Guid} ems yes
bcdedit /displayorder {Guid} /addlast
bcdedit /timeout 3

36. 끝