WDS를 활용한 windows 시스템 네트워크 설치-활용편2

활용편1 에서는 OS설치 이미지를 그대로 사용을 하고 unattend.xml을 이용해서 설치 자동화를 했는데 이번에는 sysprep를 이용해서 설치 이미지를 수정해서 사용해 보도록 하자.

작업 순서는 아래와 같다.

  1. 레퍼런스용 PC에 필수적으로 사용되는 프로그램들을 모두 설치한다.(office나 기타 등등)
  2. 레퍼런스용  PC를 sysprep를 이용해서 봉인 작업을 한다.
  3. 봉인된 PC를 imagex나 WDS의 capture 기능을 이용해서 WIM을 생성한다.
  4. 생성된 WIM을 WDS에 탑재하여 배포한다.

 

준비된 작업 PC에 필요한 회사에서 공통적으로 사용하는 프로그램들을 설치했다고 가정하고 sysprep를 이용해서 배포가능한 상태로 만드는 작업을 해보도록 하자. Windows 7 부터는 기본적으로 설치가 되어 있다.

가급적 레퍼런스 PC는 외장디스크나 별도의 디스크나 파티션을 준비해주시기 바랍니다.왜냐하면  이미징 작업을 하고 저장할 공간이 필요하기 때문이다. 네트워크상에 공유파일 서버가 있다면 그곳에 저장해도 된다.

c:\windows\system32\sysprep

sysprep 작업을 하면  하드웨어 정보나 SID같은 고유값을 제거한 상태로 만들어주기때문에 이렇게 해서 생성된 이미지는 어떠한 시스템에도 설치가 가능하게 된다.

일반화를 선택하고 시스템을 종료하도록 하자.(재부팅을 선택해도 되지만 안전하게 일단 종료해 두자)

* 작업전에 휴지통도 비우고 도메인에 조인되어 있다면 도메인에서 제거하도록 하자.

sysprep

확인을 누르면 일반화 작업이 진행이 되고 끝나면 종료가 된다.

이제 WIM이미지를 생성하는 작업이다.

보통 두가지 방식으로 WIM 이미지를 생성하는데 한 가지는 winpe+imagex(or gimagex 또는 ghost나 trueimage같은 이미징툴)를 이용해서 WIM을 생성하거나 다른 한가지는  WDS에 있는 캡쳐기능을 이용해서 이미지를 생성하는 방법이다. Windows 2008 버전부터는 캡쳐 이미지를 생성 기능이 추가 되어어서 복잡하게  winpe에 imagex 등을 이용해서 WIM 을 생성하지 않아도 된다.

WDS에서 캡쳐 이미지 생성하기

캡쳐 이미지 만들기를 선택하고 만들어진 캡쳐 이미지를  WDS에 추가한다.

wds_capture

wds_capture2

WDS에서 해야될 작업은  끝났다.

sysprep작업을 해서 종료된 PC를  PXE부팅을 하도록 하자.

주의) 디스크로 진입하면 다시 oobe가 진행이 되므로  sysprep 작업을 해줘야 한다.

PXE부팅하면 만들어둔 capture 를 선택하고 부팅한다.

wds_captureboot

wds_sysprep1

캡쳐할 볼륨을 선택하고 이미지 이름과 설명을 추가한다.

wds_sysprep2

WIM을 저장할 위치를 선택하고 진행한다. 완료가 되면 자동으로 재부팅이 된다.

wds_sysprep3

만들어진 custom  WIM을  WDS 서버의 설치 이미지에 추가한 다음  클라이언트를  PXE부팅하면

추가된 custom WIM목록이 보이고 선택하면 필요한 소프트웨어들이 미리 설치된 OS를 빠르게 설치할 수 있다.

WIM방식의 이미징 작업의 장점은 파일 단위로 이미지를 생성하기 때문에 파티션 레이아웃이 달라도 아무문제없이 설치가 가능하다는 것이다.

이렇게 한 번 생성해둔 이미지를 WDS서버에 올려두면 OS재설치 작업시간을 아주 많이 줄일 수 있게된다. 또한  WDS의 멀티캐스트 전송을 이용하면 다수의 클라이언트에 한꺼번에 OS설치가 가능하다.

WDS를 활용한 windows 시스템 네트워크 설치-활용편

이제 WDS가 구성이 되었으니 실제로 활용하는 과정을 살펴보도록 하자.

WDS는 기본적으로 클라이언트들이 운영체제들을 설치할 때 무인설치를 지원해준다.

따라서 사용자들은 네트워크 부팅 손쉽게 OS를 설치할 수 있게된다.

실제 업무환경에서 사용하는 방법은 보통 두가지 방법으로 사용을 한다.

  1. WDS 에 unattend.xml을 생성해서 놓아두고 무인설치를 하는 방법
  2. 필요한 프로그램이나 전사적으로 사용하는 환경을 미리 구성한 다음  sysprep로 작업한 후 이미지를 생성하고 생성된 이미지를 WDS를 통해서 배포하는 방법

첫번째의 경우에는 보통 OS만 기본적으로 설치하는 경우에 많이 사용하는 편이고 두번째의 방법이 보통 회사에서 사용하는 방법일 것이다. 기본적으로 설치할 응용프로그램들을 미리 포함하는 이미지를 생성해서 표준화 하면 시스템 관리자의 입장에서는  업무량을 꽤 많이 줄일 수 있을것이다.

더이상 회사안에서 OS설치를 위해서 CD를 들고다니거나  iodd 같은것을 들고 다니지는 말자.

 

WDS를 이용한 OS무인설치

이 과정은 OS설치 시 사용자의 입력을 최소화 하거나 전체 무인 설치하고자 하는 경우에 사용하면 된다.

필자의 경우 Windows 7 환경을 기준으로 작업하며 각자의 환경에 맞는 프로그램들을 사용하기 바란다.

필요한 것들

  • windows automated installation kit(이하 WAIK, 각 OS버전별로 다르니 사용할 OS에 따라서 다운로드 받도록 한다)
  • OS설치용  CD 또는 iso 파일
  • 작업용 PC(WAIK를 설치하고 unattend.xml를 생성하기 위한  PC,가상머신이어도 상관없다)

 

WAIK설치

작업용  PC 에  https://www.microsoft.com/ko-kr/download/details.aspx?id=5753 에서 WAIK를 다운로드 받아서 설치한다.
WAIK 에는 winpe 환경을 쉽게 꾸밀 수 있도록 해주기 때문에 나중에 시스템 복구 환경같은것을 구현할 때도 유용하게 사용이 된다.

 

무인설치파일(unattend.xml)생성하기

WAIK가 설치후  Windows 시스템 이미지 관리자를 실행한다.

waik

Windows 이미지 또는 카탈로그 파일선택에 마우스 우측클릭하여 install.wim(windows 설치CD에 있는)을 추가해 준다.

참고) wim파일을 추가하게 되면 카탈로그 파일을 만들겠냐고 물어보는데 카탈로그 파일이 생성이 잘 안된다면 그냥 CD에 있는  clg파일을 추가해주면 된다. 어차피 이미지수정이 필요한것이 아니고 응답파일을 생성하는게 목적이니까..

wsim이미지를 추가했으면 새응답파일을 생성하도록 한다.

answerfile

새 응답파일에 이제 필요한 컴포넌트들을 추가해서 무인 설치가 가능하도록 해보자. 컴포넌트를 선택하고 마우스 우측을 클릭하면 원하는 위치에 가져다 놓을 수 있고  본인이 원하는 값으로 미리 값들을 지정할 수 있다.

실제로 컴포넌트들은 너무 많고 필자도 모두 테스트 해본적이 없어서 전체적인 설명은 어렵다. 컴포넌트 선택후 F1  을 입력하면 메뉴얼이 나오니 참고해서 셋업해보도록 하자.

기본적으로 디스크 파티션닝 및 사용자추가,회사명등등 공통적으로 사용하는 것들을 추가해주면 된다.

아래예제를 참고해 보도록 하자.

component

 

이렇게 만들어진 파일(unattend.xml)을  WDS 설치 디렉토리(c:\RemoteInstall\WdsClientUnattend) 에 복사한 다음 WDS 설정에서 무인설치를 설정해준다.

set_unattend

 

이제 모든 준비는 끝났고 OS를 설치할 PC를 PXE부팅을 하고 F12를 눌러서 진행하면 사용자 입력없이 OS를 설치할 수 있다. 심지어는 AD에 Join하는 것도 자동화 시킬 수 있으나 개인적으로는  AD  Join 과정은 메뉴얼로 진행하는 편이다. 필자의 경우에는 사내 정책으로 컴퓨터 이름도 표준화 시키고 있어서 자동생성된 컴퓨터 이름을 사용하지 않기 때문이다.

응답파일을 잘 만들어 두면 OS설치 작업이 한결 수월해지게 된다.

완벽하게 자동화 시키기 위해서는 꽤 많은 테스트 과정을 거쳐야 원하는 구성을 할 수 있을 것이다.

 

 

WDS,syslinux를 이용한 네트워크 설치서버 구축하기

언제나 그렇듯이 경어는 생략합니다. 글에 대한 의견이나 반론은 stone@nuxinfo.net으로 메일 주시면 됩니다. 아니면 코맨트 남겨주시면 제가 확인하도록 하겠습니다.

시스템 관리자의 업무 중 에서 꽤 많은 비중을 차지하는 시스템 설치 작업을  좀더 편하고 쉽게 하기 위한 방법에 대해서 기술해보고자 한다.

네트워크를 통한 OS설치 작업은 그 역사가 꽤 깊다. 솔라리스의 jumpstart,리눅스의 kickstart,윈도우즈의  RIS(현재는 WDS로 변경됨) 등등이 그 종류이다.

현재 출시되는 대부분의 PC,Laptop,Server등은 모두 네트워크 부팅을 지원하며 심지어는 가상화 시스템도 네트워크 부팅을 지원하므로 통합설치서버를 구성해두면 대부분의 시스템을 CD나 플로피등을 이용하지 않고도 손쉽고 빠르게 OS설치 및 펌웨어 업그레이드 등을 진행할 수 있게 된다.

아래는 구성된 설치 서버의 예제화면이다.  WDS와 syslinux를 조합해서 Windows 시스템 설치 및 리눅스 설치, 각종 펌웨어 업그레이드를 위한 DOS부팅등등을 지원하도록 해두었다.

pxebootmenu

이 강좌는 기본적으로  Windows Deployment Service(이하 WDS)를 구성해본 경험이 있고 여러 운영체제가 운영되는 환경에 초점을 맞춰  설명을 진행할 것이다.

구성에 필요한 준비물

  1. WDS
  2. syslinux(http://www.syslinux.org 에서 최신버전으로 다운로드 받는다)
  3. 설치가 필요한 운영체제들의 ISO파일이나 기타 이미지파일
  4. FTP Server 또는 HTTP server

기본 작업

기존에 WDS가 설치되어 있는 상태에서 아래와 같이 작업을 진행하도록 하자.

먼저 다운로드(https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip) 받은 syslinux을 적당한곳에 압축을 해제하고 필요한 파일들을 WDS설치 디렉토리(보통은 c:\RemoteInstall 이다)에 복사한다.

  • syslinux-6.03\core\pxelinux.0 파일을 RemoteInstall\Boot\x86 폴더로 복사
  • syslinux-6.03\bios\com32\menu\menu.c32 파일을 RemoteInstall\Boot\x86 폴더로 복사
  • syslinux-6.03\bios\com32\libutil\libutil.c32 파일을 RemoteInstall\Boot\x86 폴더로 복사
  • syslinux-6.03\bios\com32\elflink\ldlinux\ldlinux.c32 파일을 RemoteInstall\Boot\x86 폴더로 복사
  • syslinux-6.03\bios\memdisk\memdisk 파일을 RemoteInstall\Boot\x86 폴더로 복사
  • RemoteInstall\Boot\x86\pxeboot.n12 파일을 RemoteInstall\Boot\x86\pxeboot.0  으로 복사
  • RemoteInstall\Boot\x86\abortpxe.com 파일을 RemoteInstall\Boot\x86\abortpxe.0  으로 복사

위의 기본 작업이 끝나면 이제 pxeboot 메뉴 작업을 하도록 한다. 이 파일이 첫째장에서 보여준 메뉴 항목을 구성하는 파일이다.

  1. RemoteInstall\Boot\x86\pxelinux.cfg  폴더 생성
  2. 생성된 폴더(pxelinux.cfg)에   메모장이나 기타 유틸로   default 파일 생성

default파일의 sample예제이니 참고 하기 바란다. pxeboot.0  을 호출하면 기존의  WDS로 부팅되며 리눅스는 미리 구성된  ks파일을 호출해서 자동으로 설치를 진행한다. 또한 iso이미지를 직접 로딩해서 부팅하도록  memdisk를 사용했다.

필자의 경우 RemoteInstall\Boot\x86\Linux,ISO 폴더를 구성하고 각각의 버전에 맞는 커널과 램디스크 이미지를 배치했다.

kickstart파일을 생성하는 방법은 직접 찾아보도록 하자. 래드햇 계열이면 모두 적용가능하다. centos 7은 centos 6 버전과  ks파일 포맷이 조금 다르니 주의하도록 하자.

# Default boot option to use
DEFAULT menu.c32
TIMEOUT 50
# Prompt user for selection
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE PXE Boot Menu

# Menus

# WDS
LABEL WDS
MENU LABEL Windows Deployment Server
KERNEL pxeboot.0

LABEL CentOS 6.8(64bit)
MENU LABEL CentOS 6.8 64bit
KERNEL /Linux/CentOS/6.8/x86_64/vmlinuz
APPEND initrd=/Linux/CentOS/6.8/x86_64/initrd.img ks=ftp://192.168.30.100/ks/cent6-ks.cfg

LABEL CentOS 6.8(32bit)
MENU LABEL CentOS 6.8 32bit
KERNEL /Linux/CentOS/6.8/x86/vmlinuz
APPEND initrd=/Linux/CentOS/6.8/x86/initrd.img


LABEL AcronisTrueImage
MENU LABEL AcronisBootableMedia
KERNEL memdisk
INITRD iso/AcronisBootableMedia.iso
APPEND iso raw

LABEL ESXi6
MENU LABEL ESXi6.0 Installer
KERNEL memdisk
INITRD iso/VMware-VMvisor-Installer-6.0.0.update02-3620759.x86_64.iso
APPEND iso raw

LABEL MSDOS
MENU LABEL MSDOS
KERNEL memdisk
INITRD iso/dos.iso
APPEND iso raw

# Exit
LABEL Exit
MENU LABEL Exit
KERNEL abortpxe.0

이제 모든 준비는 끝났고  WDS가 pxelinux.0을 기본적으로 로딩하도록 설정을 변경한다.

결국은 WDS가 사용하는 pxeboot를 syslinux의  pxelinux로 교체하여 구성하는 방법인 것이다.

기존의 WDS는 클라이언트—pxeboot—WDS 였다면 위의 구성은 클라이언트—pxelinux—pxeboot–WDS구성인 셈이다.

WDS서버의 cmd창을 열어서 아래와 같이 입력한다.

  • wdsutil /set-server /bootprogram:boot\x86\pxelinux.0 /Architecture:x86 
  • wdsutil /set-server /bootprogram:boot\x86\pxelinux.0 /Architecture:x64
  • wdsutil /set-server /N12bootprogram:boot\x86\pxelinux.0 /Architecture:x86 
  • wdsutil /set-server /N12bootprogram:boot\x86\pxelinux.0 /Architecture:x64

 

모든 설정이 끝났다면 설치를 원하는 서버나 PC의 bios에서 pxe부팅을 활성화 시킨 후 부팅하면 아래와 같은 화면이 나오면 정상적으로 구성한 것이다. default파일에 필요한 구성을 추가하면 된다. DOS환경이 기본인 펌웨어 업데이트 작업도 ISO파일을 수정해서 올려놓으면 네트워크 부팅을 통해서 펌웨어를 업데이트 할 수도 있을 것이다.

pxebootmenu