2009년에 재당 정사님이 이 글의 내용과 비슷한 구성을 하려고 댓글로 질문을 하셨고, 당시에 제가 답변을 드렸는데, 오늘 회사에서 심심해서(?) 한번 만들어 봤습니다. 글을 시작하기 전에 미리 말씀드립니다만, 이 글에서 다루는 내용을 실제로 활용하실 분들은 거의 없으리라 생각합니다. 그럼에도 불구하고 이런거 재미있어 하는 분들은 나름대로 응용해서 활용하시리라 생각하기 때문에 간단히 컨셉만 소개해드립니다.

일단 오늘 제가 회사에서 이 작업을 했던 이유는

1. 동일한 스펙의 1U짜리 서버 8대에 윈도우 서버 2008 R2를 설치해야 한다.
2. 그런데 설치할 디스크를 선택하고, 파티션을 나누는 일이 너무 귀찮다.
3. 물론 설치 초반에 Next 버튼을 몇번 누르는 일 조차도 귀찮다.
4. 게다가 무인설치 응답파일을 만드는 일은 더더욱 귀찮다.

그래서 제가 구상한 방식은 다음과 같습니다.

1. boot.wim 파일에 들어있는 setup.exe 파일을 가짜 파일로 교체한다.
  a. 이 가짜 setup.exe 파일은 단순히 sources 폴더에 들어있는 start.cmd 파일만 호출한다.
  b. 이 가짜 setup.exe 파일은 Quick Batch File Compiler로 만들 수 있다.
2. sources 폴더에 넣어줄 start.cmd 파일은 아래와 같은 역할을 한다.
  a. diskpart로 0번 디스크 초기화 및 파티셔닝, 활성화 등
  b. imagex로 install.wim 파일 하드에 풀어주기
  c. bcdboot으로 부팅파일 생성해주기

물론 가짜 setup.exe 파일이 바로 start.cmd 파일의 역할을 수행하도록 만들어도 되지만, 그렇게 하면 유지보수가 매우 불편합니다. 매번 소스를 수정하고 싶을 때 마다 setup.exe 파일을 새로 컴파일하고 boot.wim 파일 안에 넣어줘야 하기 때문입니다. 따라서 이렇게 setup.exe 파일은 start.cmd 파일을 호출만 하도록 만드는게 좋은 방법이라 생각합니다. start.cmd 파일을 수정하는 일은 매우 쉬우니까요.

어차피 이 작업은 초보 분들이 하기에 적합하지 않다고 생각하기 때문에, 그림 없이 텍스트로만 설명드리겠습니다.

1. 가짜 setup.exe 파일 만들기

먼저 가짜 setup.exe 파일을 만들어봅시다. 위에서 말씀드렸듯이 이놈의 역할은 단순히 sources 폴더에 들어있는 start.cmd 파일을 실행만 시키는 역할을 합니다. 따라서 저는 아래와 같이 짜겠습니다.

예제) setup.cmd
@echo off
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
	if exist %%a:\sources\start.cmd %%a:\sources\start.cmd
)

그리고 이놈을 Quick Batch File Compiler를 사용해 exe로 컴파일 하겠습니다.

Quick Batch File Compiler 홈페이지
http://www.abyssmedia.com/quickbfc/

사용법은 따로 설명드리지 않겠습니다. 그냥 트라이얼 버전으로 바로 컴파일 하셔도 됩니다. 귀찮으실 분들을 위해 제가 위 예제를 트라이얼 버전으로 컴파일한 파일 올려드립니다. 바이러스로 오진할 수도 있는데, QBFC로 컴파일하면 원래 오진을 많이 합니다. 저를 못 믿으시는 분들은 직접 컴파일해서 사용하시기 바랍니다.


2. boot.wim 파일 편집

이제 boot.wim 파일을 마운트해서 가짜 setup.exe 파일을 넣어줄 차례입니다. 여기서 사용하실 boot.wim 파일은 반드시 32비트 버전이어야 합니다. 왜냐하면 QBFC로 컴파일한 exe 파일이 32비트 버전이기 때문입니다. 저는 윈도우 7 SP1 32비트 원본에서 boot.wim 파일을 가져와 D 드라이브 루트에 복사해놓고 작업을 진행하겠습니다.

파일 편집 자체는 dism 명령어를 사용해도 되고, ImageX나 GImageX를 사용해도 됩니다만, 저는 어차피 나중에 ImageX를 ISO 파일 안에 넣을 생각이기 때문에, 여기서도 ImageX로 진행하겠습니다.


지금부터 하는 모든 커맨드 작업은 관리자 권한으로 명령 프롬프트를 띄워서 실행해주세요.

a. boot.wim 파일을 마운트할 폴더를 먼저 생성해둡니다.
예제) md d:\mount

b. ImageX로 boot.wim 파일의 2번 이미지를 마운트합니다. 
예제) imagex /mountrw d:\boot.wim 2 d:\mount

c. 마운트된 폴더에서 setup.exe 파일을 삭제합니다.

d. 가짜 setup.exe 파일을 마운트된 폴더에 복사합니다.

e. ImageX로 boot.wim 파일을 언마운트/커밋 합니다. 이때 마운트된 폴더가 탐색기에 열려 있으면 안 됩니다.
예제) imagex /unmount d:\mount /commit

f. 깔끔하게 export 한번 해주겠습니다.
예제) imagex /export d:\boot.wim * d:\new.wim

g. boot.wim 파일은 삭제하고 new.wim 파일의 이름을 boot.wim 으로 변경합니다.


3. start.cmd 파일 만들기

여기서부터는 여러분의 영역입니다. 자유롭게 자신이 원하는 방식으로 배치파일을 작성하시면 되겠습니다. 저는 서두에 말씀드린 작업을 예제로 보여드리겠습니다.

예제) start.cmd
@echo off
cd /d %~dp0
diskpart /s diskpart.txt
imagex /apply install.wim 3 c:
bcdboot c:\windows /s c: /l ko-kr

예제) diskpart.txt
select disk 0
clean
create partition primary size=102400
format quick
active
assign letter=c
create partition primary
format quick
assign
exit

위 2개의 파일이 어떤 역할을 하는지 대충 눈에 보이시나요?

디스크 0번을 선택해서 초기화 시킨 다음
첫번째 파티션을 100GB로 만들고
포맷을 한 다음
활성화 속성을 걸어주고
드라이브 문자를 C로 할당합니다.

두번째 파티션을 나머지 공간 전체에 할당하고
포맷을 한 다음
드라이브 문자를 할당합니다.

ImageX로 Install.wim 파일의 3번 이미지를 C 드라이브에 풀어줍니다.

bcdboot으로 C 드라이브에 부팅파일을 생성해줍니다.

위 예제는 어디까지나 제가 1U짜리 서버 8대에 윈도우 서버 2008 R2 SP1 Enterprise 버전을 동일한 방식으로 설치하기 위해 만들어둔 것 뿐입니다. 여러분은 각자 상황에 맞게 스크립트를 변경하셔야 합니다. 위 스크립트를 그대로 사용하셨다가는 디스크 0번의 파티션들이 완전히 날아가고 새로 생성됩니다. 따라서 신중하게 작업해주기시 바랍니다.


4. 마무리

이제 다 됐습니다. 설치할 윈도우 7이나 2008 R2 원본 이미지의 sources 폴더에 위 파일들을 넣어주시면 됩니다. 그러니까 저같은 경우 파일 4개를 넣으면 되는 상황입니다.

boot.wim
start.cmd
diskpart.txt
imagex.exe

용량을 줄이기 위해 저는 불필요한 파일들을 전부 삭제했습니다.


이걸로 부팅하면 어떻게 되는지 동영상으로 보여드리겠습니다. 키보드를 한번도 입력하지 않아도 윈도우 설치 마지막 화면까지 논스톱으로 진행이 됩니다.



물론 여기서 더 귀차니즘을 느낀다면 Install.wim 파일에 시디키도 미리 입력시켜놓고, 무인설치 응답파일로 마지막 OOBE 단계까지 자동화 시켜버릴 수도 있습니다. 또한 순정 Install.wim 파일을 사용하지 않고 만능 고스트처럼 여러가지 프로그램을 셋팅해둔 상태로 Sysprep 일반화 봉인된 Install.wim 파일을 활용할 수도 있겠죠.

오랜만에 geek 스러운 글을 올린 것 같은데, 다시 말씀드리지만 저는 동일한 스펙의 여러대의 서버에 설치 작업을 반복해야 하기 때문에 귀찮아서 이렇게 만든 것입니다. 위 예제를 그대로 사용하시면 첫번째 디스크의 파티션이 전부 날아가고 재구성되니 절대로 그대로 따라하지는 마시고, 각자 환경에 맞게 스크립트를 잘 짜서 사용하시기 바랍니다. 이상입니다.
신고

  1. 이전 댓글 더보기
  2. BlogIcon louboutin
    2012.11.21 23:50 신고

    Windows 8 평가판 버전 에서 Shift + F10 누르고 디스크 팔트 해본 결과 잘되네요 감사합니다http://www.mbttrainersinuk.co.uk/
    http://www.louboutinukmidlands.com/

  3. BlogIcon louboutin
    2012.11.21 23:50 신고

    Windows 8 평가판 버전 에서 Shift + F10 누르고 디스크 팔트 해본 결과 잘되네요 감사합니다http://www.mbttrainersinuk.co.uk/
    http://www.louboutinukmidlands.com/

  4. BlogIcon louboutin
    2012.11.21 23:50 신고

    Windows 8 평가판 버전 에서 Shift + F10 누르고 디스크 팔트 해본 결과 잘되네요 감사합니다http://www.mbttrainersinuk.co.uk/
    http://www.louboutinukmidlands.com/

  5. BlogIcon louboutin
    2012.11.21 23:50 신고

    Windows 8 평가판 버전 에서 Shift + F10 누르고 디스크 팔트 해본 결과 잘되네요 감사합니다http://www.mbttrainersinuk.co.uk/
    http://www.louboutinukmidlands.com/

  6. BlogIcon louboutin
    2012.11.21 23:50 신고

    Windows 8 평가판 버전 에서 Shift + F10 누르고 디스크 팔트 해본 결과 잘되네요 감사합니다http://www.mbttrainersinuk.co.uk/
    http://www.louboutinukmidlands.com/

  7. 읭여
    2012.11.23 17:15 신고

    64비트 boot.wim 갖고는 못하는건가요?...

  8. Mr.장
    2012.12.03 00:08 신고

    안녕하세요!~ [윈7무인설치] 검색 결과, 이 카페를 찾았습니다. 제가 아직 컴퓨터 초보인지라 윈XP는 무인설치를 해봤습니다. 근데, 윈7을 무인설치할려고 CD나 USB에 담을 파일을 찾으니 도무지 어떤 방식인지 알 수가 없네요!~ 윈7의 개념도 모르겠고, 자동설치키트(AIK)?? 그런것도 개념이 안 잡혀서 그런답니다. 혹여나 시간이 되신다면, 윈도우7을 설치할수 있게끔 도와주시면 감사드리겠습니다. 토렌트로 올려주셔도 고맙겠습니다. 여유시간이 되지 않으신다면, 개념 이해만 할수 있게끔 도와주시지 않으시겠습니까? 부탁드리겠습니다. [전화:010-4156-5803]전화나 카톡으로 답변주시면 더욱 감사드리겠습니다.

  9. Dinosaurs
    2013.01.07 13:24 신고

    안녕하세요

    위글은 diskpart 명령중에 하드 용량을 수동으로 넣어 주셔잔아요 100gb

    그걸 하드용량중 몇 %만 C로 할당하게 하는 방법은 없을까요?

    예를 들면 500gb 하드라고 가정하고 40:50 이나 50:50 이런 식으로 명령 줄수는 없는건가요?

  10. BlogIcon boyaci
    2013.02.06 06:12 신고

    감사합니다

  11. BlogIcon kwon
    2013.02.26 12:39 신고

    여기있는 setup.exe파일 바이러스 있는데요...
    http://r.virscan.org/0367a96f778191c48f4b31f198bc847b

  12. Kangms
    2013.03.27 15:32 신고

    안녕하세요. 정말 많이 보고 배우고 갑니다. 모르는 부분이 있어서 질문하려고 합니다.

    ---------diskpart.txt---------

    select disk 0
    select partition 1
    format quick
    active
    assign letter=c
    exit

    로 변경해서 현재 사용하고 있는 C만 포멧하려고 했습니다.
    윈도우 설치화면들어가서 도스화면 뜨고난후 X:\ 로 잡히면서 처음부터 진행이 안되더군요..
    혹시 잘못한 부분이 있을까요? Windows7 x64 울티 사용중입니다.

    혹시 boot.wim 파일을 32비트 버전을 사용해서 그런걸까요? 2번 boot.wim 파일 편집에 나와있는대로
    했습니다.

    잘못된 부분있으면 설명부탁드리겠습니다 ㅠㅠ

  13. kakadlm1331
    2013.12.31 15:50 신고

    스누피님 저는 C드라이브가 리스트 파티션 보니 3으로 되있어서

    select disk 0
    select partition 3
    format quick
    active
    assign letter=c
    exit
    이렇게 했습니다. 그런데 하드에서는 잘되는데 usb에 넣고 실행하면 바로 윈도7 일반 설치 화면으로 넘어가 버립니다. start.cmd 있고 setup 있고 boot.wim도 수정했는데 왜그럴까요? 혹시 울트라iso에서 부팅 불가능 이러고 써있긴 했는데...

  14. kakadlm1331
    2013.12.31 15:50 신고

    스누피님 저는 C드라이브가 리스트 파티션 보니 3으로 되있어서

    select disk 0
    select partition 3
    format quick
    active
    assign letter=c
    exit
    이렇게 했습니다. 그런데 하드에서는 잘되는데 usb에 넣고 실행하면 바로 윈도7 일반 설치 화면으로 넘어가 버립니다. start.cmd 있고 setup 있고 boot.wim도 수정했는데 왜그럴까요? 혹시 울트라iso에서 부팅 불가능 이러고 써있긴 했는데...

  15. 스누피팬
    2014.01.22 13:15 신고

    ko_windows_7_ultimate_k_with_sp1_IE11_x86_x64_Hotfix_2013.12.12

    이걸 다운받았느데요. 설치하니 다 좋은데, 즐겨찾기에 광고 사이트가 있네요. 이거 없애는거좀 알려주세요. 제가 볼땐 wim에 포함되어있는듯 해요. 어떻게 못 없애나요..ㅜㅜ
    WimTool-ko으로 풀어서 없애야하나요. 하는 방법좀 알려주세요. 스누피님이 답변안들면 다른분이라도 ..ㅜㅜ

  16. IOTEC
    2014.01.23 03:13 신고

    자동화를 구현한듯한 느낌 ^^
    너무 뿌듯하네요
    초보라서그런지 이것작업하는데까지는 6시간이 소요되었지만~
    동영상엔딩과 같은화면이 나온다는데 놀라워요 ~
    감사합니다.

  17. 키프리스
    2014.05.25 06:49 신고

    감사합니다.

  18. 정사원
    2014.07.02 11:23 신고

    스크린샷 처럼 울트라ISO를 사용하여 저도 똑같이 많들었는데요...

    부팅 파일을 어떤걸로 선택하셨는지?? 궁금합니다... 모든 파일 다 해봤음...

    VMware에서 Test해보려고 했는데 검은 화면에 커서만 있고 화면이 안넘어 갑니다.

  19. 이시우
    2015.04.17 20:31 신고

    좋은글 잘 보고 있습니다 자동설치는 위의 방식을 그대로 사용해서 무난하게 해결은 했지만

    문제가 좀 있는듯 합니다 막상 실용화 하려니 diskpart 에서 지정된 파티션만을 포멧하고 설치하기

    때문에 자동이라고 하기 좀 어려운감이 있습니다

    하드디스크 도 여러개 파티션도 여러개 나눠 있는 컴퓨터 같은경우 꼭 0 번 하드의 1번 파티션이

    기존운영체제 파티션이라고 볼수가 없습니다

    그럴경우마다 매번 diskpar.txt 를 수정하는 작업을 동반해야 하는데 이런경우 활용도가

    떨어집니다 잘 아는 사람이야 직접설치를 하던 diskpart.txt 수정을 하여 원하는 파티션에

    설치를 한다고 할지라도 알기때문에 수정작업이나 직접 설치작업이나 그게 그거 입니다

    중요한건 모르는 사람이 설치를 할 경우 입니다

    중요한건 다른 드라이버 에 보관하는 정도만 아는 사람이 자동설치를 했을경우

    저장되어 있는 자료가 포멧되며 멀티설치가 될수 있고 원하지 않는 하드디스크에 설치가 되는

    상황도 나올수 있습니다

    성능 떨어지는 하드가 0번 하드라고 할경우 ssd 가 1번 하드일경우 자동설치의 의미는

    아무 가치가 없다고 생각 합니다

    기존에 설치된 파티션을 포멧하고 재설치 하는것이 자동설치의 의미가 있는듯 한데

    모르는 사람의 경우 초기에 전문가가 와서 셋팅을 해줬을거고 해당 파티션만 포멧후 재설치

    하는것 많으로도 충분한 활용성을 느낄수 있다고 생각 합니다

    잘은 모르지만 GUID 를 확인하고 운영체제 파티션을 선택후 포멧 설치를 하는 방식이

    있는지 궁금합니다 자동할당 되는 문자는 PE 부팅상황에서 언제든 변할수 있기에

    GUID 를 확인후 문자를 DISKPART 에 지정해주는 방식으로 포멧과 설치를 할수 있다면

    USB 만 끼우고 부팅순서만 바꿔주는것 많으로 기존운영체제 파티션을 포멧하고 설치

    해주기 때문에 활용성이 높다고 보입니다

    아는 사람이 위의 방식을 사용하면 어차피 DISKPART.TXT 를 수정하는거나 그냥 직접

    파티션 포멧하고 정상적인 설치과정을 하는거나 거기서 거기 입니다

    좀 아깝습니다 활용도가 떨어지는것이...

    만약 운영체제 설치된 기존파티션을 포멧후 자동설치 될경우 잘 아는분 역시 편하겠죠

    잘 아는분이야 자신이 원하는 하드에 정확하게 운영체제를 설치 하셨을건 뻔하고

    모르는분 역시 초기 전문가가 설치해놓은 그대로 포맷후 설치를 하는것 이기 때문에

    중요자료 손상등이나 원치않는 하드에 설치되는것을 피할수 있으니 그에 관련된

    글을 한번 써 주셨으면 좋겠습니다

    정말 좋은정보 많이 주시는데 약간 아쉬운 감이 있어 글 남깁니다

    그럼 좋은하루 되세요.

  20. psyclon
    2015.10.16 23:28 신고

    스누피님이 작성하신 글대로 32비트 win7 순정에서 boot.wim을 추출해서,

    setup.exe를 교체했고.

    start.cmd나 diskpart.txt역시 그대로 사용했습니다.

    근데 vmware에서 돌려보면 파티션 생성 및 포맷까지는 정상작동하지만,

    이상하게 exit로 빠져 나올때 cmd 자체에서 빠져 나와 버립니다.

    diskpart만 종료하는게 아니고 아예 빠져 나와 버리는거죠.

    아니면 너무 빠르게 메세지가 사라져서 그럴지도 모른다고 생각하고 있습니다

    제가 사용하는 install.wim은 sysprep 으로 봉인한 이미지라 오류가 나는건 아닐까

    짐작하고 있습니다만.....

    에러 메세지가 출력되는게 아니고 아니고 아예 cmd에서 빠져나오고

    재부팅 되어 버립니다.

    어떤 문제가 있는걸 까요?

  21. computer
    2017.08.14 21:21 신고

    usb로 구워서 할 경우 포맷을 하고 나면 usb에 이미지 파일이 풀리는 경우는 해결방안이 없나요?