WDS를 활용한 Linux 시스템 네트워크 설치-Kickstart

기본적으로 레드햇 리눅스 계열은  kickstart라는 네트워크 설치 프로세서를 제공한다.

대부분의 경우  tftp서버 및 nfs,http,dhcp서버등을 리눅스로 구성한 다음 네트워크 설치를 구성하지만 필자의 경우 windows 시스템과 리눅스 시스템이 혼용이 되어 있어서 간략한 시스템을 구성하기 위해 통합 작업을 하였다.  아래 포스트에 WDS와 syslinux를 이용한 네트워크 설치 서버 구성편을 읽어보고 구성이 되어 있다고 가정한다.

http://www.nuxinfo.net/wdssyslinux%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%B9%98%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0/

전체적인 작업 순서

  1. WDS에 리눅스 부팅 이미지를 적당한 곳에 위치한다. 리눅스 부팅 이미지는 설치CD/images/pxeboot/ 에  커널(vmlinux) 과 초기화램디스크 이미지(initrd.img)  두개의 파일을 이용해서 네트워크 부팅을 시작
  2. 자동설치를 위해서 kickstart  설정파일(ex. ks.cfg) 파일을 생성하고 적당한 위치에 둔다. ks파일은 http,ftp,nfs등을 이용해서 접근하도록 구성하면 된다.
    ex)  http://example.com/ks/rhel6-32bit.ks.cfg ,ftp://example.com/ks/rhel6-32bit.ks.cfg,nfs://nfsserver/ks/ks.cfg
  3. 네트워크 부팅 후 initrd 에 kickstart 설치 값을 전달한다.(WDS설치디렉토리(RemoteInstall)\Boot\x86\pxelinux.cfg\default 파일에서 설정해 준다.)
    예제)

    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

     

 

Kickstart환경설정 파일 생성

kickstart설치를 위한 환경설정 파일은 미리 만들어진 파일을 참고하여 만들어도 되고 가장 편한 방법은 레드햇 계열의 시스템을 설치하면 자동으로 생성되는 anaconda-ks.cfg(/root 디렉토리에 자동생성된다.) 를 이용하는 방법이 있다.

아래는 Centos 6 ks.cfg 예제이다.  Centos 7버전은 형식이 조금 달라졌으니 확인하기 바란다.

install #설치할 것인지 업그레이드 할 것인지 선택
text # text모드로 설치
url --url http://ftp.daumkakao.com/centos/6.8/os/x86_64 #미러서버 경로(내부에 구성했다면 내부서버경로를 잡아주자)
lang en_US.UTF-8 #설치 언어
keyboard us #키보드 설정
network --onboot no --device eth0 --bootproto dhcp --noipv6 #네트워크 설정
rootpw --iscrypted $6$bsimcTMIypuVEJKu$yeYkKkqQUSW8nwhx4HbCL8x9V6KqBC9.nMVMlTLwfO.# root사용자 비번
firewall --service=ssh #방화벽 설정
authconfig --enableshadow --passalgo=sha512 # 인증 및 암호화 알고리즘
selinux --disabled # selinux설정
timezone --utc Asia/Seoul # 시간설정
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # 부트로더 설정

clearpart --all --drives=sda #sda의 기존 파티션을 모두 삭제한다.주의할 것!

part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1

volgroup vg_lvs --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=vg_lvs --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_lvs --grow --size=1638 --maxsize=1638

%packages --nobase #설치할 패키지
@core #패키지 및 패키지 그룹을 적어준다.
%end

참고)  암호화된 rootpw 생성방법

anaconda로 생성된 ks 파일에 이미 설치할때 입력한 root패스워드를 이용하지 않고 새롭게 입력하고 한다면 아래의 방법을 사용하도록 하자. 생성된 암호를  rootpw 라인에 넣어주면 된다.

  •  암호화 알고리즘을  md5 로 설정한 경우(authconfig --enableshadow --enablemd5)

    openssl passwd -1 "사용할패스워드"
    
    grub-crypt --md5
  • 암호화 알고리즘을 sha512 로 사용하는 경우(authconfig –enableshadow –passalgo=sha512)
    grub-crypt --sha-512

 

 

 

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