오래전에 해외 포럼에 올라온 내용인데, 저는 MS에서 직접 통합한 원본이 올라오면 포맷하고 새로 설치할 생각이라 그다지 관심을 가지지 않았습니다. 하지만 댓글로 질문 주신 분도 계시고, 이런 내용은 하나쯤 제 블로그에 올려두는게 맞겠다 싶어 올려봅니다.

여기서 소개해드릴 방법은 윈도우 7에 내장된 기능인 DISM을 이용하여 직접 이미지에 서비스팩을 통합하는 것입니다. 원래 비스타부터 서비스팩은 오프라인 통합을 막아두었기 때문에 안 되는게 정상인데, 패키지를 풀어서 일부 파일을 수정해주면 오프라인 통합도 가능합니다. 마치 빌드가 다른데도 언어팩을 통합할 수 있었던 것과 비슷한 원리입니다.



0. 작업 조건

먼저 이 작업은 윈도우 7 (또는 서버 2008 R2) 에서 진행하는 것을 기준으로 설명드립니다. 물론 XP나 비스타 환경에서도 WAIK를 설치하면 DISM 작업이 가능합니다만, 윈도우 7 원본에 서비스팩을 통합하고픈 분들이 XP를 사용하고 있지는 않을 것이라 판단하기 때문에 XP에서의 작업은 설명하지 않겠습니다.

또한 64비트 원본에 서비스팩을 통합하려면 64비트 환경이어야 합니다. 그 이유는 windows6.1-KB976932-X64.exe 파일이 64비트 환경에서만 풀리기 때문입니다.



1. 초보자용 가이드

먼저 초보자를 위해 제가 만든 배치파일을 올려드립니다. 사실 초보자용이라 말은 했지만 초보자가 아니라 하더라도 일일이 작업하는게 귀찮으신 분들에겐 이 배치파일이 유용할 수도 있습니다. CAB 압축을 푸는데는 7z CLI 버전을 이용하였고, Imagex /info와 FOR 구문을 활용하여 에디션 선택을 쉽게 할 수 있도록 만들었습니다. 또한 수정해야할 파일 3개를 미리 수정해서 첨부해두었습니다.


위 파일을 다운받은 다음 적당한 위치에 압축을 풀어줍니다. 그리고 통합할 윈도우 7 원본에서 install.wim 파일을 복사해옵니다. 또한 통합할 서비스팩 1 파일도 같이 복사해옵니다.

저는 32비트 얼티밋 원본 ko_windows_7_ultimate_k_x86_dvd_x15-65969.iso 파일에서 install.wim 파일을 복사해왔고, 32비트 서비스팩1 파일인 windows6.1-KB976932-x86.exe를 작업 폴더에 넣어두었습니다.




이제 통합하기.cmd 파일을 실행합니다. (우클릭 해서 관리자 권한으로 실행해주세요.) 그러면 32비트 통합인지 64비트 통합인지 물어보는데 32비트라면 1번을, 64비트라면 2번을 입력하고 엔터키를 누릅니다. 참고로 64비트 작업은 64비트 윈도우 환경에서만 가능합니다. 저는 이 가이드에서 32비트를 통합하기 때문에 1번을 누르겠습니다.




다음은 통합할 에디션을 선택해야 합니다. 윈도우 7 순수 원본에는 아래 그림처럼 다양한 에디션이 들어있습니다. 다만 ei.cfg 파일 때문에 설치시 한 가지 에디션만 보일 뿐입니다. 저는 Ultimate 에디션에 통합할 생각이기 때문에 5번을 누르겠습니다. 64비트의 경우 Starter 에디션이 없기 때문에 번호가 한개씩 당겨집니다. 순수 원본이 아니라 하더라도 제가 올려드린 배치파일은 알아서 DISPLAYNAME을 보여주기 때문에 번호가 헛갈릴 일은 없습니다.




마지막으로 통합하는데 시간이 오래 걸린다는 안내문구가 한번 나옵니다. 아무 키나 눌러주시면 통합이 시작됩니다. 작업을 위한 여유공간은 충분히 있어야 합니다. (넉넉히 20GB 정도) 그리고 64비트 통합의 경우 시간이 엄청 오래 걸립니다. 제 컴퓨터에서도 수십분 걸리더군요. 32비트의 경우도 최소 10분 이상은 소요될 것입니다.




통합이 끝나면 위 창은 자동으로 꺼집니다. 통합이 잘 되었다면 install.wim 파일이 원래 용량보다 커졌을 것입니다. Imagex의 export 기능을 활용하면 용량을 아주 조금 줄일 수 있지만, 초보자용 가이드라서 다루지 않습니다.

이대로 통합한 install.wim 파일을 원래의 원본 iso 파일에 교체해주시면 됩니다. 일반적으로 UltraISO 등록판을 많이 사용하지요. 또는 cdimage.exe나 oscdimg.exe를 사용하여 ISO 패키징 할 수도 있습니다.



2. 중급자용 가이드

제가 생각하는 중급자란 CLI에 익숙하고 WIM 파일을 DISM, Imagex, GImagex 등으로 마운트해서 수정하는 작업에 익숙하신 분들을 지칭합니다. 또한 저는 말로만 설명드리겠습니다. 말로만 설명드려도 이해가 가능한 수준의 분들을 중급자라 지칭했습니다. 또한 아래 설명은 32비트 x86 기준입니다. 64비트의 경우 파일 이름에서 x86 대신에 x64를 찾아보시면 되겠지요.


1. 윈도우 7 서비스팩 1 파일을 일단 풀어줍니다. 64비트 파일은 64비트 환경에서만 풀 수 있습니다. 푸는 방법은 뒤에 /x:경로 붙여주시면 됩니다.

예제) windows6.1-KB976932-x86.exe /x:temp


2. 위 예제처럼 하면 temp 폴더가 생성되면서 파일이 풀리는데 다른 파일은 다 필요없고 windows6.1-KB976932-X86.cab 파일만 있으면 됩니다. 이 파일만 꺼내주시고 temp 폴더는 삭제하셔도 됩니다.


3. 이 windows6.1-KB976932-X86.cab 파일을 적당한 위치에 압축 풀어줍니다. 저는 폴더에 압축을 푼 다음 폴더 이름을 SP1으로 변경했습니다. WinRAR이나 7zip 등을 사용하신다면 CAB 파일을 바로 풀 수 있습니다. 물론 내장 명령어 Expand를 사용해도 되는데 시간이 오래 걸려서 저는 WinRAR로 바로 풀어버렸습니다.


4. 압축을 풀고 SP1 폴더 안에 보면 CAB 파일이 8개 들어있습니다. KB976933-LangsCab0 부터 6까지 파일과 NestedMPPContent.cab 파일인데 이 8개의 파일들을 현재 폴더 SP1에 그대로 압축 풀어줍니다. 압축을 풀다가 나타나는 중복 파일은 그냥 덮어씌워도 무방합니다. 8개의 파일을 모두 압축 풀었다면 SP1 폴더에서 8개의 CAB 파일들을 삭제합니다.


5. cabinet.cablist.ini 파일을 삭제합니다.


6. update.mum 파일을 메모장으로 편집합니다. 하단에 나오는 allowedOffline="false" 값을 true로 변경합니다.


7. update.ses 파일을 메모장으로 편집합니다. <Tasks operationMode="OfflineInstall"> 항목에서 하위 항목을 보면 <package id="Windows7SP1-KB976933~31bf3856ad364e35~x86~~6.1.1.17514" targetState="Absent"/> 라고 되어 있는데 Absent를 Installed로 변경해줍니다.


8. Windows7SP1-KB976933~31bf3856ad364e35~x86~~6.1.1.17514.mum 파일을 메모장으로 편집합니다. 우선 제일 하단에 나오는 allowedOffline="false" 값을 true로 변경합니다. 이것만 해줘도 되기는 한데, 한글판 통합에는 다른 언어들이 불필요하므로 이 파일을 약간 정리해주는게 좋습니다. 그러니까 예를 들어 아래와 같은 항목들이 30개 이상 있는데

<update name="Windows7SP1-ja-jp">
   <package integrate="hidden">
    <assemblyIdentity name="Package_for_KB976933" version="6.1.7601.17514" language="ja-jp" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"/>
   </package>
  </update>

한국어와 영어만 제외하고는 위 형식의 항목들을 다 삭제해주세요.


9. 이제 통합을 위한 SP1 준비는 완료되었습니다. DISM 또는 Imagex, GInageX 등을 이용하여 install.wim 파일을 마운트합니다. 여기서는 DISM을 이용한 예제만 보여드리겠습니다. 그런데 마운트 작업을 하기 전에 반드시 마운트할 빈 폴더를 먼저 생성해두어야 합니다. 저는 mount 라는 폴더를 미리 생성해두었습니다. 인덱스 번호는 32비트에서 얼티밋을 마운트할 생각이라 5번으로 지정했습니다. 

예제) dism /mount-wim /wimfile:install.wim /index:5 /mountdir:mount


10. 서비스팩을 통합합니다. SP1 폴더에 필요한 파일이 전부 풀어져 있고, mount 폴더에 원본이 마운트 되어 있다고 가정하면

예제) dism /image:mount /add-package /packagepath:sp1


11. 통합이 완료되었다면 이제 마운트를 풀어줍니다. 변경사항을 저장해줘야겠죠.

예제) dism /unmount-wim /mountdir:mount /commit


이게 끝입니다. 원본에서 install.wim 파일을 교체해주시면 됩니다. 설명이 어렵죠? 그렇게 느껴지신다면 초보자용 가이드를 이용하세요. 위 작업들을 자동으로 한방에 다 처리해줍니다.



※ 근황
1. 평일에는 블로그 할 시간이 없습니다. 밤 늦게 집에 들어오고 아침 일찍 출근합니다.
2. 지금까지는 편하게 교육을 받았는데, 다음주부터는 자바 교육이 시작되어 고생이 많을 듯 합니다.
3. 다음주 중으로는 샌디브릿지 2500k 물량이 풀리겠죠? 216달러이므로 26만원 이상이면 구매를 보류할 생각입니다.



※ 왕대인님처럼 한꺼번에 여러개의 이미지에 통합하려는 경우

신고

  1. 이전 댓글 더보기
  2. 서빈아빠
    2011.12.14 21:11 신고


    안녕하세요, 항상 많은 도움 받고 있습니다. 정말 감사드리고요..

    말씀하신 batch file을 이용하던 도중, 하기와 같이 unknown option 메시지가 발생을 해서 문의드립니다.

    다만, 설명하신 대로 원본 install.win은 3,593,980KB이고, 작업후의 것은 3,616,340KB로 좀 커지긴 했으나 Dos창도 정상적으로 자동종료되었습니다. 메시지 원문은 캡쳐하지 못했으나, 골자는 하기였던 것으로 기억합니다.
    -----------------------------------------------------------------------------------------------------------------
    오류 : 87
    /add-package 지원되지 않는 옵션입니다.
    -----------------------------------------------------------------------------------------------------------------

    일단 생성된 WM파일은 지우고 중급편으로 설명하신 내용을 따라 다시 해보겠습니다.

    감사합니다...수고하세요...

  3. 서빈아빠
    2011.12.14 21:13 신고

    PC설명을 안드렸네요..

    ASUS N55SF 모델로, HM65 CHIPSET/SANDY BRIDGE이고 X64 WIN7 HOME PRIMIUM입니다.

    수고하세요...감사합니다....

  4. 서빈아빠
    2011.12.14 21:31 신고


    DISM Log file확인한 결과, 하기의 Error가 발생한 이력이 있네요..

    ----------------------------------------------------------------------------------------------------------------

    2011-12-14 18:52:04, Error DISM DISM.EXE: No providers were found that support the command(add-package). HRESULT=0
    2011-12-14 18:52:04, Info DISM DISM Image Session: PID=2468 Disconnecting the provider store - CDISMImageSession::Final_OnDisconnect
    ----------------------------------------------------------------------------------------------------------------

    감사합니다...수고하세요...

  5. 서빈아빠
    2011.12.14 22:36 신고

    안녕하세요, 스누피님..
    자꾸 질문해서 귀찮게 해드리네요..죄송합니다.
    Tools\imagex.exe /mountrw install.wim %index% mount까지는 %index% 에 8을 넣어(제 경우, x64 home premium K) 따라왔습니다만, 결국 상기 질문드렸던 point에서 계속 동일하게 막히네요..
    --------------------------------------------------------
    오류 : 87
    /add-package 는 알수 없는 옵션입니다.
    -------------------------------------------------------

    감사합니다...수고하세요...

    • BlogIcon snpbox
      2011.12.14 22:47 신고
      수정 및 삭제

      dism에서 /add-package 옵션을 인식하지 못한다는건... 제가 해결할 수 있는 문제가 아니네요. MS에 문의해보세요.

  6. 부탁드립니다
    2012.01.05 11:58 신고


    64비트 환경이고 왕대인 버전으로 작업할 때 이런 메세지가 뜹니다.

    엑세스가 거부당했습니다 라고요..

    윈도우7 64비트에, 정품인증 되어있고, administrator 로 로그인해서

    '관리자 권한으로 실행' 하여 왕대인 버전 프로그램을 돌렸습니다.


    ______에러 내용↓↓↓______________________________________________________________________________


    1 중 1을(를) 처리하는 중 - Package_for_KB976932~31bf3856ad364e35~amd64~~6.1.1.1
    7514 패키지를 추가하는 중
    [=================== 33.3% ]
    Package_for_KB976932 오류가 발생했습니다. 오류: 0x80070005

    오류: 5

    액세스가 거부당했습니다.

  7. 프로파일
    2012.03.02 23:48 신고

    스누피님 ㅠ,.ㅠ 기뻐해 주세요 드디어 성공 했어요. 정말 좋은 강의 감사 드려요. 이제 윈도 설치하고 그 엄청난 업데이트 에 시간 낭비를 하지 않아도 될것같아요. 감사합니다. ㅠ,.ㅠ

  8. 태정태세문단세
    2012.08.31 22:07 신고

    스누피님..
    초반에 "데이터가 올바르지않습니다" 팝업이 뜨고 ,, 간간이 error 나는게 영~ 찝찝해서
    진행되는 와중에 창을 닫아버렸더니, mount 폴더가 삭제도 않되네요. 쩝 -.-
    함부로 따라하면 낭패보는 거였군요..

    • mount폴더삭제
      2012.11.26 19:59 신고
      수정 및 삭제

      저같은 경우에는 작업이 끝나도 마운트폴더 안지워져요ㅠ
      마운트폴더 지우려면 PE부팅해서 pushd명령어로 마운트폴더 상위 디렉토리로 이동한 후 rd /s /q mount하세요

  9. quest
    2012.09.06 16:57 신고

    2012-09-06 16:48:29, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SOFTWARE
    2012-09-06 16:48:29, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SOFTWARE, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:29, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SYSTEM
    2012-09-06 16:48:29, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SYSTEM, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:29, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SECURITY
    2012-09-06 16:48:29, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SECURITY, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:29, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SAM
    2012-09-06 16:48:29, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/SAM, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:29, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/COMPONENTS
    2012-09-06 16:48:30, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/COMPONENTS, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:30, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/DEFAULT
    2012-09-06 16:48:30, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/System32/config/DEFAULT, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:30, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Users/default/ntuser.dat
    2012-09-06 16:48:30, Info CBS Failed to unload offline registry: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Users/default/ntuser.dat, the client may still need it open. [HRESULT = 0x80070005 - E_ACCESSDENIED]
    2012-09-06 16:48:30, Info CBS Unloading offline registry hive: {bf1a281b-ad7b-4476-ac95-f47682990ce7}D:/mount/Windows/system32/smi/store/Machine/schema.dat

    요런 에러가 DISM Log에 기록되며 통합이 되지 않습니다.(작업은 끝나고 이미지를 적용하여 설치를 해보면 버전이 6.1 7600 입니다.)

  10. BlogIcon 냉면의계절
    2012.12.01 10:07 신고

    스누피님 64비트 서비스팩만 64비트에서 풀고 나머지 작업과 통합작업은 32비트에서 작업해도 됩니까?

  11. 우빈대디
    2013.05.30 08:49 신고

    초보용으로 해볼려고 하는데요 .원본시디가 엔터프라이즈 버전인데요. 목록에는 없는데 어떻게 해야 하나요

  12. 이거뭐야?
    2013.06.03 21:25 신고

    초급자인데 하라는데로 복사했구요 근데 64비트라 2번을 클릭하고 이렇게 나오네요


    통합하려는 원본의 번호를 입력해주세요.
    저정된 파일을 찾을 수 없습니다.
    번호 :

    그리고 얼티메이트 통합하려고 해서 4번을 눌렀는데 이렇게 나오네요.

    64비트 원본의 4번 이미지 통합을 시작합니다.
    시스템 성능에 따라 수십분의 시간이 걸릴 수도 있습니다.
    작업이 완료되면 이 창은 자동으로 닫힙니다.


    계속하려면 아무키나 누르십시요...



    이렇게 떠서 아무키나 눌렀는데 여러가지 막 뜨면서 창이 닫히네요
    오류 해결좀

  13. 이거뭐야?
    2013.06.03 21:25 신고

    초급자인데 하라는데로 복사했구요 근데 64비트라 2번을 클릭하고 이렇게 나오네요


    통합하려는 원본의 번호를 입력해주세요.
    저정된 파일을 찾을 수 없습니다.
    번호 :

    그리고 얼티메이트 통합하려고 해서 4번을 눌렀는데 이렇게 나오네요.

    64비트 원본의 4번 이미지 통합을 시작합니다.
    시스템 성능에 따라 수십분의 시간이 걸릴 수도 있습니다.
    작업이 완료되면 이 창은 자동으로 닫힙니다.


    계속하려면 아무키나 누르십시요...



    이렇게 떠서 아무키나 눌렀는데 여러가지 막 뜨면서 창이 닫히네요
    오류 해결좀

  14. 이거뭐야?
    2013.06.03 21:25 신고

    초급자인데 하라는데로 복사했구요 근데 64비트라 2번을 클릭하고 이렇게 나오네요


    통합하려는 원본의 번호를 입력해주세요.
    저정된 파일을 찾을 수 없습니다.
    번호 :

    그리고 얼티메이트 통합하려고 해서 4번을 눌렀는데 이렇게 나오네요.

    64비트 원본의 4번 이미지 통합을 시작합니다.
    시스템 성능에 따라 수십분의 시간이 걸릴 수도 있습니다.
    작업이 완료되면 이 창은 자동으로 닫힙니다.


    계속하려면 아무키나 누르십시요...



    이렇게 떠서 아무키나 눌렀는데 여러가지 막 뜨면서 창이 닫히네요
    오류 해결좀

  15. 손님2
    2013.08.17 14:09 신고

    너무 오래걸려서 못해요....................

  16. IOTEC
    2014.01.24 18:46 신고

    정말 정말 스누피님덕분에 행복합니다. ㅎㅎ
    22가지버전으로 멋모르고 시도했다가 2틀 꼬박 걸렸네요 ;;
    멋진 자료를 가지게 해주셔서 감사합니다.
    이젠 업데이트 통합하기로 넘어가봐야겠네용 ^^

  17. 찬솔
    2015.03.29 14:44 신고

    이거 궁금한게 있는데, 윈도우7 설치 추가기능은 어떻게 삭제하나요?

  18. BlogIcon 진일
    2015.08.21 00:27 신고

    mount 삭제해야하는데 삭재가 안되내요 그리고 한번 에러난거같해서 취소하고 다시 하려고 했는데 안되내요
    mount 삭제 어떻게 해야하나요?
    PE부팅해서 pushd명령어로 마운트폴더 상위 디렉토리로 이동한 후 rd /s /q mount하세요이해가 잘안가내요 ㅠㅠ

  19. 용이
    2016.08.19 22:32 신고

    왕대인님 버전으로 ko_windows_7_ultimate_k_x64_dvd에 SP1 통합하려는데 원본 4번 시작번호 쓰고 끝번호 1번까지 누르면 들어있는 모든 버전에 통합이 되는거죠? 그후 IE11까지 통합하려면 ei.cfg 제거후에 해야하나요? 아님 그냥 해도되는건가요?

  20. H.A.LEE
    2016.10.07 15:25 신고

    해당 방법대로 서비스팩 통합 하고 윈도우 설치를 했습니다.. 그런데 서비스팩이 적용되어 있지 않은 상태로 됩니다 이유가 매우 궁금합니다...

  21. 번개흰둥이
    2017.06.23 17:38 신고

    통합을 하는데 30분 정도 걸렸습니다 ㅠㅠ