Windows 10 을 VHDX 에 설치

아직도 사라지지 않는 각종 보안 프로그램들의 악행들을 피하고자 BS는 PC에 Windows 10 을 2개 설치해서 사용 중입니다.

하나는 일반적인 설치로 절대 ActiveX 를 비롯하여 nProtect 와 같은 Windows 서비스 형태의 보안툴을 설치하지 않고

또 다른 하나는 VHDX(가상 하드)에 가볍게 설치해서 각종 은행 업무, 공공기관 업무에 사용하고 있습니다.

이전에 Hyper-V를 통해서 설치하다가 중간에 멈추고 bcdedit 로 해당 VHDX 를 연결해서 멀티 부팅을 설정하는 방법을 썼는데, 이보다 편리하게 할 수 있는 방법이 있습니다.

  1. Convert-WindowsImage.ps1 다운로드
    https://github.com/MikeFal/PowerShell 에서 위 파일을 받습니다.
  2. 관리자 권한의 PowerShell 을 열어서 받은 파일을 로드합니다.
    PS X:\Downloads> . .\Convert-WindowsImage.ps1
    
  3. 만약 권한 오류가 발생하면
    PS X:\Downloads> Set-ExecutionPolicy Bypass CurrentUser
    
  4. 도움말 일단 한 번 구경
    HELP Convert-WindowsImage
    
  5. 이런 식으로 변환 합니다. (예제는 40GB 짜리 동적 크기 가상하드에 설치하는 거)
    PS X:\Downloads> Convert-WindowsImage -SourcePath "Y:\install.wim" -WorkingDirectory "X:\somedir" -SizeBytes 40GB -VHDFormat VHDX -VHDType dynamic -Edition Professional -ExpandOnNativeBoot:$False
    

그런데 위에서 쓰는 install.wim 은 어디서 구하냐구요?

  1. MS 사이트를 통해서 Windows 10 ISO 를 받습니다.
    https://www.microsoft.com/ko-kr/software-download/windows10?SearchToggle=true
  2. ISO 파일을 Mount(탑재, 마운트)합니다.
    설명에서는 E 드라이브로 마운트 되었다고 가정하겠습니다.
  3. ISO 파일에서 가능한 에디션의 인덱스 번호를 확인합니다.
    DISM /Get-WimInfo /WimFile:"E:\sources\install.esd"
    
  4. 이제 추출합니다.
    Compress 옵션은 fast, max, none 중 하나로 넣으면 되는데 무난한 것이 fast로 생각됩니다.

    DISM /Export-Image /SourceImageFile:"E:\sources\install.esd" /SourceIndex:<IndexNumber> /DestinationImageFile:"X:\somedir\install.wim" /Compress:fast /CheckIntegrity
    

Windows 8을 VHD에 설치하기

이전에 포스팅한 [Windows 7에서 WIM 파일을 VHD로 변경하여 부팅을 해보자]https://bspfp.pe.kr/205와 비슷하게
Windows 8을 VHDX에 설치하는 방법을 소개합니다.

일단 시도한 방법은 [WIM2VHD for Windows 8]입니다.
설명에 따르면

  • 실행은 Windows 8 이상에서만 가능하고
  • 만들 수 있는 이미지는 Windows 7용 VHD와 Windows 8용 VHDX
  • 그리고 이전과 달리 PowerShell을 기반으로 GUI도 있다

2012년 6월 12일 버전: cfile24.uf.0208793E51D0F8F32F6238.ps1

일단 따라 해보겠습니다.

  1. PowerShell을 실행
  2. GUI로 실행
  3. 권한 문제로 실행 불가능
  4. [오류 페이지의 링크]를 가보면 권한을 설정하는 방법에 대해 설명이 있습니다.
    권한을 확인하고
  5. 권한을 변경했습니다.
  6. 다시 실행
  7. 관리자 권한이 아니라서 또 오류. 그래서 관리자 권한으로 실행
  8. ISO 파일을 선택
  9. 해당 ISO 파일이 가상 드라이브로 마운트 됨을 볼 수 있습니다.

    이미지는 BS의 ShortcutTool
  10. 하지만 생성은 실패

Windows 7에서 썼던 WIM2VHD로 시도했으나 역시 실패
그래서 최후의 수단 Hyper-V에게 부탁했습니다.

평소에 설치하듯이

설치가 끝나고 첫 부팅 전에 가상 머신을 강제 종료하고 VHD를 C:\로 복사
나중에 깨끗한 설치 상태로 복원하기 위한 차이점 보관 디스크를 생성합니다.
관리자 명령 프롬프트를 열어서 DISKPART를 실행합니다.

아래 명령으로 차이점 보관용 디스크를 생성합니다.

CREATE VDISK FILE=”C:\Win8TestCur.vhdx” TYPE=EXPANDABLE PARENT=”C:\Win8Test.vhdx”

부팅 설정에 이제 추가를 해보겠습니다.
이전 포스팅처럼 EasyBCD와 같은 GUI 프로그램을 사용해도 무방하나… 회사와 같은 장소에서는 라이센스가 필요하므로
bcdedit를 직접 사용하도록 하겠습니다.

현재 상태를 백업합니다.

bcdedit /export “C:\bcd_backup.20130701”

현재 항목을 기준으로 하나를 복사 생성합니다.

bcdedit /copy {default} /d “Win8 Test VHD”

부팅 장치를 수정합니다. 아래 명령에서 [] 기호는 옵션을 나타내는 것이 아니라 그것 그대로 입력해야 합니다.

bcdedit /set {a77145e3-6d51-11e2-9190-bf75c76b8050} device vhd=[C:]\Win8TestCur.vhdx
bcdedit /set {a77145e3-6d51-11e2-9190-bf75c76b8050} osdevice vhd=[C:]\Win8TestCur.vhdx

이제 부팅 관리자를 설정합니다.
현재 내용을 확인

bcdedit /enum /v

BS의 경우 원래의 부팅 대상이 a77145e0 으로 시작하는 GUID이고
새로 추가한 부팅 대상은 a77145e3입니다.
bcdedit의 아래 옵션들로 원하는 것을 수정합니다.

  • /default
    부팅 관리자에서 사용하는 기본 항목을 설정합니다.
  • /displayorder
    부팅 관리자가 멀티부팅 메뉴를 표시하는 순서를 설정합니다.
  • /timeout
    부팅 관리자 제한 시간 값을 설정합니다.

BS는 딱히 바꾸고 싶은 옵션이 없네요. 그냥 진행…
리붓해서 새로운 OS에 이런 저런 설정과 업데이트, 그리고 정품 인증 등을 진행합니다.
참고 자료) [부팅 메뉴에 기본 부팅 가상 하드 디스크 추가]

이제 설치도 끝나고 부팅도 했습니다.
이렇게 힘들게 만든 가상하드 이미지를 그냥 둘 수 없죠.
처음에 만든 Win8Test에다가 일단 병합을 해서 복구를 하더라도 하드웨어 설정 다시 하는 일이 없도록 합시다.

관리자 명령 프롬프트를 엽니다.
DISKPART를 실행합니다.
아래와 같이 실행하여 병합을 합니다. 최대한 용량 적게 쓰도록 COMPACT도 한번

자식 디스크는 COMPACT로 46MiB 정도에서 7MiB정도로 축소되었는데 부모 디스크는 그대로이네요…

긴 포스팅이었습니다.
지금 시작은 새벽 3시…
HDD가 특히 느린 집 컴퓨터… 노트북으로 실제로 하면서 스샷 찍고 하다보니… 약 3시간이나 걸렸네요… ㅋㅋㅋㅋㅋ

Windows 7에서 WIM 파일을 VHD로 변경하여 부팅을 해보자

현재 BS는 Windows 7 x64를 사용 중입니다.
그런데 이런 저런 이유로 Windows 7 x86도 필요하고, Windows 7 x64 또한 테스트 용도로 필요하게 되었습니다.
컴퓨터는 1개이고 가상 컴퓨터는 사내 보안 솔루션 때문에 사용이 안되어 멀티 부팅을 하게 되었는데
이것을 고스트로 만들고 매번 복구해가며 테스트 하려니 환장할 노릇이죠.
그래서 Windows 7의 기능 중 하나인 VHD 부팅을 이용하게 되었습니다.
그런데 설치를 위해서 컴터를 리붓하고 하는 것도 귀찮아져서 아예 VHD에다가 Windows를 설치 해 놓구선 바로 부팅해서
나머지를 할 수 있게 하는 방법을 찾게 되었습니다.

이번 포스팅에 소개할 방법은 이런 방법 중 간편한 방법인 WIM2VHD를 이용하는 방법입니다.
(VHD 부팅은 Windows 7 Enterprise나 Ultimate 에서만 가능합니다.)
(VHD에 설치되는 OS도 마찬가지입니다.)

준비물
1. WIM2VHD
2. Windows 7 Automated Installation Kit or Windows IEM Pre-Installation Kit
3. 관리자 권한으로 실행된 명령 프롬프트 (BS의 회사에서는 이것도 특정인만 가능하다능)
4. CSCRIPT 실행 권한 (BS의 회사에서는 이것도 특정인만 가능하다능)
5. 충분한 HDD

단계1) WIM을 VHD로
관리자 명령 프롬프트에서 아래 명령을 실행합니다.
경로는 알아서 바꾸세요.
아래 설정은 동적 크기의 40GB VHD에 WIM을 넣습니다.

cscript wim2vhd.wsf /wim:D:\sources\install.wim /sku:enterprise /vhd:C:\Win7x86Test.vhd /disktype:Dynamic

사용자 삽입 이미지
단계2) VHD 차이점 보관용 만들기
DISKPART를 실행합니다.

CREATE VDISK FILE=”C:\Win7x86TestDiffOrg.vhd” PARENT=”C:\Win7x86Test.vhd”

이렇게 하면 차이점 보관용 디스크가 추가됩니다.

단계3) VHD 복사

COPY C:\Win7x86TestDiffOrg.vhd C:\Win7x86TestDiff.vhd

이렇게 해두면 나중에 복원이 편해집니다.

단계4) BCD에 추가하기
BS는 귀차니즘의 압박으로 EasyBCD를 사용하였습니다.
Add New Entry를 선택하고 아래의 Portable/External Media에서 Virtual Disk를 선택합니다.
부팅 메뉴에서 보여질 이름을 입력하고 Path 옆의 버튼을 눌려 위에서 만든 VHD (C:\Win7x86TestDiff.vhd)를 선택합니다.
Add Entry 를 눌려 추가합니다.
사용자 삽입 이미지Advanced Settings를 들어가서 Select an OS에서 방금 만든 메뉴 (Windows 7 x86 Test)를 선택합니다.
그리고 아래의 Change Settings에서 Basic 탭의 Locale을 Korean으로 변경하고 Save Settings를 눌러 저장합니다.
사용자 삽입 이미지
단계5) 부팅해보기
물리 컴퓨터에 설치한 것이라 부팅되는 모습을 보여드리지 못하네요.
이렇게 해서 부팅을 하면 처음 DVD의 내용이 설치되고 나서 진행되는 계정을 만드는 시점부터 진행됩니다.

참고1) 스누피님의 자료에 의하면 AIK 전체가 필요 없고, imagex bcdboot만 있으면 된다고 합니다.
(아래에 Windows 7 AIK의 해당 파일을 압축해서 첨부합니다.)

참고2) SKU Name
WIM2VHD의 SKU 옵션에 전달되는 값들입니다.

ENTERPRISE
BUSINESS
ULTIMATE
SERVERSTANDARD
SERVERENTERPRISE
SERVERDATACENTER
HOMEBASIC
HOMEPREMIUM
STARTER

참고3) VHD 차이점 보관 디스크를 부모 디스크에 반영하기
단계3에서 만든 차이점 보관 디스크의 내용을 부모 디스크에 반영하는 방법입니다.

SELECT VDISK FILE=C:\Win7x86TestDiff.vhd
MERGE VDISK DEPTH=1
DEPTH가 1이면 현재 선택된 차이점 보관 디스크의 바로 위 부모 디스크에 적용하는 것입니다.

부모 – 차이점 보관 1 – 차이점 보관 2 와 같이 다단계로 구성되어 있을 경우에는 차이점 보관 2의 내용을 부모에 적고 싶을 때 DEPTH의 값을 2로면 되겠죠?
위 예제는 이전 단계에서 작성한 Win7x86Test.vhd에 차이점을 적용시키는 예제입니다.

참고4) 준비물 파일들
각종 필요한 파일들을 첨부하였습니다.
순서대로 AIK에서 필요한 imagex와 bcdboot 파일 압축한 것, EasyBCD 2.0.2, WIM2VHD 스크립트와 문서입니다.
cfile10.uf.120F4B39500631FA03E4AC.7z