본문으로 바로가기

나만의 커스텀 윈도우10 만들기

category Programming/Etc 2019. 2. 13. 15:07

VMware에 윈도우를 설치하고 나만의 윈도우를 만들어보겠습니다.

VMware는 Workstation이면 스냅샷을 쓸 수 있어서 에러 테스트를 해볼 수 있어 좋습니다.


윈도우10 설치

우선 윈도우를 설치하기 위해 ISO파일이 필요합니다.

https://www.microsoft.com/ko-kr/software-download/windows10



도구를 다운로드 합니다.

그러면 USB에 굽는 옵션과 ISO파일을 다운받는 옵션이 있는데 ISO파일을 다운받아주시면 됩니다.

다음으로는 vmware에 윈도우를 설치해야합니다.



저는 용량은 30GB정도로 했습니다.

single file 이 아니라 multiple files이어도 마운트만 할 수 있으면 상관없습니다.

그런데 가상하드를 만들지 말고 vhd파일을 만들어서 거기에 윈도우를 설치하는 것을 적극추천한다.

vhd파일로 vmware를 구동하는 법은

https://evols-atirev.tistory.com/11

글의 초반부에 나와있습니다.

가상머신을 만든 뒤에 바로 켜지마시고 vmx파일을 수정해야합니다.

아마 따로 설정하지 않으신 분들은 "문서" 폴더에 가상머신이 들어있을 텐데 거기서 vmx파일을 메모장으로 열어줍시다.




firmware가 기본은 efi로 되어있는데 bios로 바꿔줍니다.

vmware workstation을 가지고 계신분들은 이럴 필요없이 처음에 advanced옵션에서 bios를 선택할 수 있습니다.

설정을 바꿨으면 다운 받은 ISO파일로 윈도우를 설치합니다.



제품키는 없죠.

위의 툴로 ISO를 받으면 Windows Home, Pro, Edu 중 하나를 선택할 수 있습니다.



여기서 파티션을 만들 때 새로만들기로 1mb만 잡아서 파티션을 만들고





확장으로 이렇게 하나의 파티션만 만들어줍니다.

처음에 vmware에서 bios로 바꿔야하는 이유도 efi에서는 파티션을 하나로 만들 수가 없기 때문입니다.

그 다음은 쭉 설치합니다.


감사모드 작업

설치가 거의 끝나면



재부팅 후에 이런 창이 뜹니다.

Ctrl + Shift + F3 을 눌러서 감사모드에 진입합니다.



이렇게 감사모드에 진입하였습니다. sysprep은 꺼도 재부팅하면 계속 나옵니다.

일단 이 상태에서 스냅샷을 찍어둡시다. 이건 필수는 아니지만 에러가 발생했을 때 이전 상태로 돌아오기 위함입니다.



스냅샷을 찍어뒀다면 이렇게 종료옵션을 다시 부팅으로 해서 최종적으로 봉합이 잘 됬는지 테스트 해볼 수 있습니다.

나만의 윈도우를 설치한 뒤의 상태를 확인해볼 수 있습니다.

특정 프로그램들은 설치해 놓고 막상 나중에 윈도우를 설치하면 이상하게 작동하거나 오류가 나기도 하므로

Workstation이라면 프로그램을 하나 설치할 때마다 스냅샷을 찍고 최종 봉합 전에 테스트해보길 추천합니다.

일반화를 체크하는 건 여러 환경에서 쓸 필요가 있을 때 드라이버를 자동으로 잡기 위함입니다.

그런데 만약에 vmware에만 설치할 거다 하면 일반화를 할 필요가 없겠죠.

만약 내 노트북에만 쓰고 싶다면 vmware가 아니라 노트북에 윈도우를 설치하고 감사모드로 진입하여

윈도우를 만들고 일반화를 체크하지 않고 봉인할 수 있습니다.

오피스365를 설치할 때 일반 인스톨러로 설치하려고 했더니 에러가 발생했는데

https://support.office.com/ko-kr/article/office-%EC%98%A4%ED%94%84%EB%9D%BC%EC%9D%B8-%EC%84%A4%EC%B9%98-%EA%B4%80%EB%A6%AC%EC%9E%90-%EC%82%AC%EC%9A%A9-f0a85fe7-118f-41cb-a791-d59cef96ad1c#OfficePlans=signinorgid

레지스트리같은 경우는 등록된 것 중에 사라지는 것도 있고 남아있는 것도 있는데



이렇게 CURRENT_USER로 되어 있는 것들은 사라지는 듯 합니다.

또한 프로그램들을 설치할 때 항상 for all user, 모든 유저용으로 설치해야합니다.

만약에 유저용 레지스트리를 등록시키고 싶다면 .reg파일로 내보내서 바탕화면에 둔 뒤 설치가 끝나고 실행할 수 있습니다.

또는 자동으로 reg파일을 등록하도록 코드를 짜서 시작프로그램에 넣어둘 수 있습니다.

메모장을 열어서



이런 식으로 파일을 작성합니다. 뒤쪽의 파일경로는 reg 파일의 경로입니다.

그 다음 파일 확장자를 .bat으로 저장해서

C:\Users\default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

폴더 안에 bat파일을 놔눕니다. 만약 StartUp폴더가 없으면 만들어서 넣습니다.

추가로 del명령어를 이용해서 bat파일을 지울 수 있습니다.

@echo off regedit /s c:\env.reg del "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\auto.bat" del "C:\Users\default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

만약 파일이름이 auto.bat이고 reg파일이 c:\env.reg일 경우 위처럼 auto.bat를 작성해서 넣어두면 됩니다.

또 다른 방법으로는 작업스케줄러를 이용하는 것입니다.



새 작업을 만든 뒤에



조건을 시작할 때로 하고



동작의 프로그램에 배치파일이름을 적고 시작 위치를 파일 위치로 적습니다.



사용자 계정은 system으로 입력하고 가장 높은 수준의 권한으로 실행해줍니다.

@echo off regedit /s c:\env.reg del "c:\auto.bat" del "c:\env.reg" schtasks /delete /tn Taskname /f

배치파일도 이렇게만 해주면 되겠죠? 마지막 줄은 task를 한 번만 실행하면 되니 이제 task를 지우는 작업입니다.

taskname 자리에 본인이 쓴 taskName을 입력합니다.

그런데 이 방법으러는 HKEY CURRENT USER에는 똑같이 레지스트리를 넣을 수가 없습니다.

왜냐하면 저 명령어가 System으로 실행되서 이용자 계정의 레지스트리로 넣을 수가 없기 때문입니다...

그러니 작업스케줄러 방식은 다른 명령을 실행할 때 사용해야 할 듯 합니다.


Rearm Count 작업

프로그램을 설치하고 봉인작업을 하기 전에 rearm count를 위한 작업을 해주면 좋습니다.

rearm count란 Sysprep을 이용하여 하나의 이미지를 다시 봉인할 수 있는 횟수제한인데,

이미 Sysprep으로 봉인된 이미지에 나중에 프로그램을 삭제하거나 추가하고 싶을 때 횟수제한이 끝나면 할 수 없기 때문에

안해줘도 사용에는 문제가 없지만 해주는 것이 좋습니다.



regedit을 실행해줍니다.

HKEY_LOCAL_MACHINE\System\Setup\Status\SysprepStatus

경로로 가서

CleanupState 를 2,

GeneralizationState를 7로 설정해줍니다.



그 다음은 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\SoftwareProtectionPlatform

로 가서 SkipRearm의 숫자를 1로 설정해줍니다.



그 다음은 에디터를 닫고

cmd 창에서

msdtc -uninstall

msdtc -install

를 한 번씩 쳐줍니다.



마지막으로

Sysprep이 켜져 있다면 끈 뒤에

C:\Windows\System32\Sysprep\Panther 폴더를 지워줍니다.



이제 sysprep을 작동시키면 됩니다.


Sysprep 봉인 및 wim 파일 추출



완전히 테스트까지 끝났고 이 윈도우를 설치파일로 만드려면 시스템 종료 옵션을 선택합니다.

그리고 Vmware에서 Virtual Machine Setting에 들어가면



이렇게 Harddisk 탭에서 Map버튼으로 디스크를 매핑할 수 있습니다.

트위(개인설정, 최적화)을 하려면 Open file in read-only mode를 풀어줍니다.

그러면 vmware로 설치한 윈도우가 드라이브로 마운트됩니다.

근데 왠지 모르게 이 방법으로 마운트한 가상하드는 다른 프로그램으로 인식이나 접근이 되지 않았다....

그래서 OSFmount같은 다른 프로그램도 써봤지만 블루스크린이 떴다.

그래서... vmdk를 vhd로 바꿔 마운트해보기로 했다.

Vmdk2Vhd.zip


파일 다운로드

사용법은 vmdk파일을 불러와서 vhd파일로 저장하는 것이다. 파일경로는

바로 위의 스크린 샷에서 보면 disk file이라고 적힌 부분에 있다.

아예 처음부터 vhd파일에 설치하는 것이 훨씬 나는 것 같다.



다 되면



윈도우 기능으로 마운트할 수 있다.

이제 dism++를 실행합니다.

에서 받을 수 있습니다.



실행하면 탑재된 vhd를 성공적으로 인식합니다.

저는 여기서 바탕화면에 컴퓨터 아이콘만 추가했습니다.

https://oldnew.tistory.com/418 에 가시면

다음은 이 vhd를 설치가능한 wim파일로 만들기 위해 GImageX를 이용합니다.

다운받아줍니다.



실행하면 source에는 마운트한 드라이브를 적어주고

Destination에는 내보낼 파일경로를 입력해줍니다.


Wim파일로 윈도우 설치하기

다음에는 이렇게 만들어진 wim파일로 윈도우를 설치하는 법입니다.



Apply 탭으로 가면 source 방금 그 wim파일, Destination을 윈도우를 설치할 경로로 하면 윈도우를 해당 드라이브에 설치할 수 있습니다.

설치가 끝난 뒤에는

https://msdn.microsoft.com/ko-kr/library/windows/hardware/dn898496(v=vs.85).aspx

를 참고하여 부트로더를 설정해주어야한다. 그래야 부팅이 가능하다.

또는 DISM++로로 설치할 수 있다.



이미지 설치를 누른다.



파일을 선택한 다음 대상 드라이브를 선택하고 부팅을 추가한 뒤 확인을 누른다.



부팅정보는 설치하는 드라이브에 기록하자.


wim파일을 ISO로 만들기



이미지 파일 편집을 눌러서 파일을 선택합니다.

저희는 wim파일을 만들었는데 사실 iso파일 안에는 install.esd가 든 것도 있고 install.wim이 든 것도 있는데

16년07버젼은 wim파일이고 그 이후는 esd가 들어있는 듯 합니다.

따라서 처음부터 추출할 때 iso파일 안에 든 게 wim인지 esd인지 확인하고 똑같은 형식으로 저장하시면 됩니다.

esd파일로 저장하기 위해서는 gimagex로는 안되고 dism++로 저장하는 방법을 이용하셔야합니다.



sources 안에 install.wim을 제거하고 직접만든 wim파일을 추가합니다.



완성되면 설치를 테스트해봅시다.



직접만든 윈도우로 설치가 진행되고 있습니다.