이 글은 윈도우 비스타, 7, 서버 2008, 2008 R2 모두에 해당되는 내용입니다.

Sysprep 이라는 말을 들으면 뭐가 떠오르시나요? 대게 만능고스트라는 단어를 떠올리시지 않을까 싶습니다. Sysprep으로 일반화 봉인을 해두면, 하드웨어 정보를 싹 날리고 윈도우를 새로 셋팅하기 때문에 흔히들 말하는 만능고스트용 이미지 배포에 이 Sysprep이 자주 쓰이고 있습니다.

대기업 PC나 노트북 구매해보셨나요? 처음에 구매하자마자 전원을 켜면 아마 아래와 비슷한 화면을 만나보실 것입니다.


그 이유는 대기업에서 브랜드 컴퓨터를 출고할 때 드라이버와 일부 불필요한(?) 프로그램들을 미리 설치해두고 Sysprep 일반화 봉인을 해서 출고하기 때문입니다. 위 그림은 서버 2008 R2라서 조금 낯설게 느껴지실 텐데, 아무튼 윈도우 7의 경우 처음 구동하면 사용자 계정을 생성하고 패스워드를 설정하고 네트워크를 설정하는 등의 OOBE 라는 과정이 진행되게 됩니다.

대기업에서 동일 기종의 PC를 수천대 이상은 찍어낼 것인데, 일일이 윈도우를 수천번 설치할 것이라고는 생각하지 않으시겠죠? 마스터 컴퓨터 1대에 윈도우를 설치하고 각종 드라이버 및 프로그램 설치를 마친 다음 Sysprep 일반화 봉인을 해놓고 그 하드를 마스터 이미지로 잡아서 수천대의 컴퓨터에 대량복제해서 출고하는 방식을 사용합니다.


이 Sysprep은 대기업 PC에만 사용되는 것이 아닙니다. 제가 일하고 있는 클라우드 가상화 환경에서도 필수적인 요소입니다. 수천대의 VM을 생성한다고 가정해봅시다. 윈도우를 수천번 반복해서 설치하는건 좀 그렇죠? 그래서 마스터 이미지를 하나 생성한 다음 그걸 템플릿으로 해서 복제를 뜨는 방식이 사용되는데, 리눅스의 경우 그냥 복제를 해도 별다른 문제가 없지만 윈도우의 경우 반드시 Sysprep 일반화 봉인 과정을 진행해야 합니다. 왜냐하면... 일반적인 경우에는 문제가 없지만 Active Directory 환경에서는 문제가 되기 때문입니다. 바로 컴퓨터의 SID가 동일하기 때문에 문제가 발생하는데... 이 Sysprep 일반화를 해주면 하드웨어 드라이버 뿐 아니라 SID까지 새로 생성해주기 때문에 윈도우 대량배포 환경에서는 필수 요소라 볼 수 있습니다.


그런데 문제가 하나 있습니다. 윈도우 비스타부터 도입된 소프트웨어 라이선스 방식에 Rearm 이라는 개념이 있는데, 아마 몇몇 분들은 들어보셨을 것입니다. 소프트웨어 라이선스 상태를 초기화 하는 것입니다. 순수 이미지로 설치하면 보통 초기화 횟수가 3회 제공됩니다.


문제는 Sysprep 일반화 과정을 거치면 이 Rearm 과정이 자동으로 진행된다는 것입니다. 그래서 Sysprep 일반화를 3회 해버리면 더이상 Sysprep 일반화를 사용할 수 없는 상태가 됩니다. 왜냐하면 남은 Rearm 횟수가 0이기 때문이죠.


http://support.microsoft.com/kb/929828/en-us

이 문제를 해결하려면 위 MS 기술문서에 나온 내용처럼 Sysprep 응답파일을 작성해서 Rearm 과정을 Skip 시켜주면 됩니다. 그러면 Sysprep 일반화 봉인을 해도 Rearm 카운트가 깎이지 않습니다.

그런데 WAIK를 설치해서 응답파일을 작성하는게 초보(?) 분들에겐 어려울 수 있습니다. 아래 파일은 제가 윈도우 서버 2008 R2 엔터프라이즈 버전을 위해 작성한 응답파일입니다. 참고만 하시구요...


<?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
        <settings pass="generalize">
            <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <SkipRearm>1</SkipRearm>
            </component>
        </settings>
    <cpi:offlineImage cpi:source="catalog:d:/install_windows server 2008 r2 serverenterprise.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>


위 응답파일을 사용하는 방법은 Sysprep 뒤에 /unattend:파일경로 해주시면 됩니다. 아래는 C 드라이브 루트에 응답파일이 있는 경우 예제입니다.

예제) sysprep /generalize /oobe /shutdown /unattend:c:\unattend.xml



위 방법이 매우 복잡하게 느껴지시죠? 사실 복잡하다기 보다는 귀찮다고 표현하는게 맞을 것 같습니다. 그래서 다른 방법을 알려드리겠습니다. 굳이 응답파일을 작성하지 않아도 됩니다. 간단히 레지스트리 수정만 해주면 문제가 해결됩니다.

Sysprep 일반화 봉인할 때 Rearm 과정을 Skip 하는 간단한 방법

레지스트리 에디터를 열고 아래 경로를 찾아갑니다.

윈도우 7, 서버 2008 R2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform

윈도우 비스타, 서버 2008
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL

그리고 SkipRearm 값을 1로 수정해주시면 됩니다.


일일이 찾아가기 귀찮으시죠? 제가 레지스트리 파일로 올려드립니다.


물론 커맨드로 처리해도 되겠죠? 배치파일 하나 만들어서 올려드립니다.


위 파일을 실행하시면 SkipRearm 레지스트리 값을 1로 변경해줍니다. Sysprep 자주 돌리시는 분들에게 유용하게 쓰이길 바라며 이 글을 마칩니다. 감사합니다.