Microsoft MVP성태의 닷넷 이야기
Windows: 141. 설치된 Windows로부터 설치 이미지를 만드는 방법 [링크 복사], [링크+제목 복사]
조회: 5811
글쓴 사람
홈페이지
첨부 파일
 

설치된 Windows로부터 설치 이미지를 만드는 방법

"Dell Venue 8 Pro 태블릿에 USB를 이용한 윈도우 운영체제 설치 방법"을 찾다가 알게 된 내용인데,

How To Image A Computer With Windows 10 Using dism
; https://jacobsalmela.com/2016/03/30/how-to-image-a-computer-with-windows-10-using-dism/

그 방법이 재미있어서 기록으로 남깁니다. ^^




우선, "설치된 Windows"를 얻기 위해 Hyper-V에 VM을 하나 만들고 윈도우를 설치합니다. (이 글에서는 x86을 기준으로 설명하고 "Windows 8.1 with Update x86" ISO 파일로 VM을 설치했습니다.)

그다음 아래의 명령어를 해당 VM 내에서 관리자 권한의 cmd.exe를 띄워 실행합니다.

cd C:\Windows\System32\Sysprep
sysprep.exe /generalize /shutdown

*** 주의 사항: 이 명령어는 윈도우 시스템을 설치 이전의 상태로 되돌리므로 절대로 실제 사용 중인 윈도우에서 sysprep 명령어를 내려서는 안 됩니다.

* "How To Image A Computer With Windows 10 Using dism" 글에서는 이 과정에서 unattended.xml 파일을 이용해 자동 설치를 구현하고 있습니다.
* 원 글에서는 unattended.xml 파일을 "C:\Windows\System32\Sysprep" 폴더에 복사해 두고, "sysprep.exe /generalize /oobe /unattend:Unattended.xml /shutdown"으로 명령을 내립니다.

위의 작업을 마치고 나면 VM은 종료될 테고 일단 그렇게 두시면 됩니다. 이것으로 "설치 이미지"를 구하는 방법이 끝났습니다. 위의 VM에 포함된 VHD 디스크를 보면 2개의 파티션이 생성되는데, 그 파티션을 그대로 wim 이미지로 구우면 되기 때문입니다.




이제 필요한 것이 PE 부팅 이미지 파일입니다. 이를 위해 ADK를 다운로드해서 설치해야 합니다.

Windows Assessment and Deployment Kit (Windows ADK) for Windows 8.1 Update 
; https://www.microsoft.com/en-US/download/details.aspx?id=39982

ADK가 설치된 컴퓨터에서 "Deployment and Imaging Tools Environment" 명령행 도구를 관리자 권한으로 실행한 후 다음의 명령을 내리면 PE 부팅 파일들이 마련됩니다.

copype x86 D:\WinPE\x86

원한다면 이때 생성된 "D:\WinPE\x86" 폴더의 내용에 다음과 같은 명령어를 통해 원하는 device driver를 추가하는 것도 가능합니다. (물론, 원하는 device driver가 없다면 이 과정을 생략해도 됩니다.)

Dism /Mount-Image /ImageFile:"D:\WinPE\x86\media\sources\boot.wim" /index:1 /MountDir:"D:\WinPE\x86\mount"

Dism /Add-Driver /Image:"D:\WinPE\x86\mount" /Driver:"C:\...your driver's INF file..."

Dism /Unmount-Image /MountDir:"D:\WinPE\x86\mount" /commit

위의 D:\WinPE\x86 폴더에 복사된 내용을 기반으로 이제 "부팅 가능한 USB"를 다음의 명령어로 만들 수 있습니다.

// USB 드라이브가 F인 경우
MakeWinPEMedia /UFD D:\WinPE\x86 F:

또는 "부팅 가능한 ISO 파일"로 만든 후 나중에 구울 수도 있습니다.

MakeWinPEMedia /ISO D:\WinPE\x86 D:\WinPE\WinPE.iso

이렇게 마련된 PE 부팅 이미지 파일로 sysprep을 실행했던 그 VM을 부팅시킬 수 있습니다. WinPE.iso 파일을 가상 머신의 DVD 드라이브로 연결해 주고 부팅 순서를 CD로 잡아줍니다. (즉, sysprep을 했던 그 VM에서 MakeWinPEMedia로 만든 이미지로 부팅이 되어야 합니다. sysprep을 했던 C 드라이브로 부팅하면 절대 안 됩니다.) 부팅하고 재빠르게 키를 눌러줘야 "CD"로 부팅이 됩니다.

정상적으로 winpe.iso 이미지로 부팅했으면 화면에는 X 드라이브로 연결된 명령행 창이 뜨면서 (x:\windows\system32) 초기 "wpeinit" 명령어가 수행됩니다.

이 명령행 창에서 sysprep을 했던 윈도우의 환경을 설치 가능한 wim 이미지 파일로 만드는 것이 가능합니다.

기본적으로 설치된 VM의 Disk 0에는 파티션이 2개("System Reserved"와 "Primary")가 있는데 이것을 그대로 wim 이미지 파일로 만들어 주는 것입니다. 이를 위해 우선 다음의 명령어로 각각의 파티션에 드라이브 문자를 할당해 줍니다.

diskpart
select disk 0

select partition 1
active
assign letter=r

select partition 2
active
assign letter=c
exit

보는 바와 같이 "System Reserved" 파티션을 R로, VM의 운영체제가 설치되어 있던 Primary 파티션을 C 드라이브로 설정했습니다.

그다음, 각각의 드라이브를 개별 wim 파일로 저장해 둘 텐데요. 이를 위해 여기서는 Hyper-V 호스트 측에 "share"라는 공유 폴더를 만들어 주고 이를 네트워크 드라이브로 연결하겠습니다.

net use j: \\169.254.141.222\share

그 후, 다음의 명령어로 각각의 드라이브를 wim 파일로 저장할 수 있습니다.

Dism /capture-image /imagefile:j:\w10reserved.wim /CaptureDir:r:\ /Name:system_reserved
Dism /capture-image /imagefile:j:\w10.wim /CaptureDir:c:\ /Name:c_drive

즉, R 드라이브를 w10reserved.wim 파일로, C 드라이브를 w10.wim 파일로 만들었습니다.




이걸로 모든 준비는 끝났습니다. 이제 원하는 PC에서 다시 "PE 부팅 이미지 파일"로 부팅을 해줍니다. 그럼 wpeinit 명령행 윈도우가 뜰 것이고 마찬가지로 대상 컴퓨터에 동일하게 2개의 파티션을 diskpart로 잡아줍니다.

diskpart
select disk 0
clean

create partition primary size=500
select partition 1
active
format quick fs=ntfs
assign letter=r

create partition primary
select partition 2
active
format quick fs=ntfs
assign letter=c

select partition 1
active
exit

그리곤, 네트워크 드라이브에 .wim 파일들을 보관해두었기 때문에 이를 연결하고,

net use j: \\server\share /user:username

wim 이미지 파일 2개를 동일하게 대상 PC에 복원하는 것입니다.

Dism /apply-image /imagefile:j:\w10reserved.wim /index:1 /ApplyDir:r:\
Dism /apply-image /imagefile:j:\w10.wim /index:1 /ApplyDir:c:\

* "How To Image A Computer With Windows 10 Using dism" 글에서는 "copy /Y j:\SetupComplete.cmd c:\windows\setup\scripts\SetupComplete.cmd" 명령어로 SetupComplete.cmd 파일을 복사하는 과정까지 포함합니다.
* SetupComplete.cmd는 "del /f %windir%\system32\sysprep\unattended.xml" 명령어만 포함하는 간단한 명령행 스크립트 파일입니다.
* 이 명령어를 통해 윈도우 설치 후 민감한 정보를 담고 있는 unattended.xml 파일을 자동으로 삭제하는 역할을 합니다.

이렇게 wim 이미지를 적용했으면 이제 USB 드라이브를 빼고 부팅하시면 sysprep 이미지 처리한 부팅으로 진입하게 되고 정상적으로 윈도우 설치를 마무리할 수 있습니다.




참고로, 제가 원하는 상황과 맞지 않았기 때문에 저도 위의 /apply-image 단계는 실습해 보지 않았습니다. 그래도 저런 식의 설치도 가능하다는 것이 알아둘 만 했습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]





[최초 등록일: ]
[최종 수정일: 5/3/2017 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 




... 31  32  33  34  35  36  37  38  39  40  [41]  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
11206정성태5/24/20175484오류 유형: 389. DISM.exe - The specified image in the specified wim is already mounted for read/write access.
11205정성태5/24/20174512.NET Framework: 658. C#의 tail call 구현은?
11204정성태3/8/202011985개발 환경 구성: 316. 간단하게 살펴보는 Docker for Windows [5]
11203정성태5/19/20176270오류 유형: 388. docker - Host does not exist: "default"
11202정성태5/19/20174523오류 유형: 387. WPF - There is no registered CultureInfo with the IetfLanguageTag 'ug'.
11201정성태5/16/20176773오류 유형: 386. WPF - .NET 3.5 이하에서 TextBox에 한글 입력 시 TextChanged 이벤트의 비정상 종료 문제 [1]파일 다운로드1
11200정성태5/16/20174453오류 유형: 385. WPF - 폰트가 없어 System.IO.FileNotFoundException 예외가 발생하는 경우
11199정성태5/16/20175363.NET Framework: 657. CultureInfo.GetCultures가 반환하는 값
11198정성태5/10/20176502.NET Framework: 656. Windows Forms의 오류(Exception) 처리 방법에 대한 차이점 설명
11197정성태5/8/20174677개발 환경 구성: 315. VHD 파일의 최소 크기파일 다운로드1
11196정성태5/4/20175647오류 유형: 384. Msvm_ImageManagementService WMI 객체를 사용할 때 오류 상황 정리 [1]
11195정성태8/19/20175829.NET Framework: 655. .NET Framework 4.7 릴리스
11194정성태5/3/20176889오류 유형: 383. net use 명령어로 네트워크 드라이브 연결 시 "System error 67 has occurred." 오류 발생
11193정성태5/3/20175811Windows: 141. 설치된 Windows로부터 설치 이미지를 만드는 방법
11192정성태5/2/20176628Windows: 140. unattended.xml/autounattend.xml 파일을 마련하는 방법
11191정성태5/2/20176849Windows: 139. Dell Venue 8 Pro 태블릿에 USB를 이용한 윈도우 운영체제 설치 방법
11190정성태5/2/20178608Windows: 138. Windows 운영체제의 ISO 설치 파일에 미리 Device driver를 준비하는 방법
11189정성태5/2/20175211Windows: 137. Windows 7 USB/DVD DOWNLOAD TOOL로 98%에서 실패하는 경우
11188정성태4/27/20175591VC++: 118. Win32 HANDLE 자료형의 이모저모
11187정성태4/26/20177109개발 환경 구성: 314. C# - PowerPoint 확장 Add-in 만드는 방법 [1]파일 다운로드1
11186정성태4/24/20175687VS.NET IDE: 117. Visual Studio 확장(VSIX)을 이용해 사용자 매크로를 추가하는 방법 [1]파일 다운로드1
11185정성태4/22/20174811VS.NET IDE: 116. Visual Studio 확장(VSIX)을 이용해 사용자 메뉴 추가하는 방법 (2) - 동적 메뉴 구성파일 다운로드1
11184정성태4/21/20175720VS.NET IDE: 115. Visual Studio 확장(VSIX)을 이용해 사용자 메뉴 추가하는 방법파일 다운로드1
11183정성태4/19/20175097.NET Framework: 654. UWP 앱에서 FolderPicker 사용 시 유의 사항파일 다운로드1
11182정성태4/19/20175846개발 환경 구성: 313. Nuget Facebook 라이브러리를 이용해 ASP.NET 웹 폼과 로그인 연동하는 방법
11181정성태4/18/20174420개발 환경 구성: 312. Azure Web Role의 AppPool 실행 권한을 Local System으로 바꾸는 방법
... 31  32  33  34  35  36  37  38  39  40  [41]  42  43  44  45  ...