2009. 2. 17. 11:28

x86/x64 플랫폼의 솔라리스10에서 점프스타트 사용하기

요약

썬 마이크로시스템즈의 솔라리스 점프스타트(JumpStart) 기술은 솔라리스 운영체재와 다른 연관 소프트웨어들을 여러개의 네트워크 노드들에 자동으로 설치하는데 사용 되는 기술 입니다.

x86/x64 플랫폼의 솔라리스10 에서 점프스타트 소프트웨어는 SPARC 플랫폼의 솔라리스10 에서와 기본적으로 동일합니다. 그러나 정확한 작업을 위해서는 몇가지 미세한 차이에 대해 언급할 필요가 있습니다.

이 글은 썬의 x86/x64 머신에서 솔라리스10을 위한 점프스타트 서버를 설정하는데 필요한 단계들과 설명들을 제공하고 2 개 혹은 그 이상의 클라이언트를 위한 점프스타트 구성도 직접 해 봅니다.

범용의 참고서로써 썬의 온라인 문서인 Using Custom JumpStart 를 참고하시기 바랍니다.


 

소개

이 글은 x86/x64 플랫폼의 솔라리스10 을 이용해서 점프스타트 서버를 생성하는 단계별 과정을 제공하고 있습니다. 솔라리스10은 서버와 점프스타트 설치 서버에서 모두 동일한 버전을 사용하고 있습니다. AMD 옵테론과 인텔 프로세서 기반의 머신들이 서버와 클라이언트로 사용되었고 각각에 어떠한 프로세서 타입들이 사용되도록 사용되었고 클라이언트들은 각각 어떠한 프로세서 타입이 사용 되도록 선호도를 주지 않았습니다.

아래와 같은 작업을 하는 명령어들이 제공 됩니다:

  • 점프스타트 설치 서버 생성하기
  • 클라이언트 설정 파일 생성하기
  • 설치, 설정 디렉토리들을 공유하기
  • 클라이언트 tftpboot 파일 생성하기
  • DHCP 서버 설정 및 실행하기
  • 간섭이 필요 없는 점프스타트 설치 시작하기

Pre-boot Execution Environment (PXE) 가 네트워크를 통해 부팅 되기위해 활성화 되어 있어야 합니다. 몇몇 클라이언트들에서 PXE는 BIOS에서 활성화될 필요가 있습니다.

클라이언트 부트 파일을 생성할때의 버그는 마지막 정리작업 섹션에 기재했습니다.


 

솔라리스 점프스타트 과정

두개의 클라이언트에 x86/x64 플랫폼의 솔라리스10을 설치하기 위해서 점프스타트 설치 서버를 설정하는 명령들이 아래에 나와 있습니다.

이 연습 과정에서 점프스타트 서버의 노드 이름은 stinger2 이고 IP 주소는 172.16.64.194 니다. 기본 라우터의 IP 주소는 172.16.64.1 입니다. 점프스타트 서버가 위치하고 있는 네트워크 주소는 172.16.64.0 입니다.

만약 필요하다면 솔라리스10을 다운로드 받으실 수 있습니다.

1. 점프 스타트 설치 서버 생성하기

a. 서버에 설치 디렉토리를 생성합니다

# mkdir -p /export/install

b. x86/64 플랫폼의 솔라리스10 DVD를 서버의 DVD 플레이어에 집어 넣습니다. DVD의 Solaris_10/Tools 디렉토리로 이동하여 setup_install_server 커맨드를 실행시킴으로써 인스톨 서버를 생성합니다. 솔라리스 소프트웨어는 새롭게 생덩된 디렉토리로 복사 됩니다. 절대 경로명을 매개변수로 지정해 줍니다.

# cd /cdrom/cdrom0/Solaris_10/Tools
# ./setup_install_server /export/install

Verifying target directory...
Calculating the required disk space for the Solaris_10 product
\|/-\|/-
Calculating space required for the installation boot image
\|/-\|/-
Copying the CD image to disk...
\|/-\|/-
Copying Install Boot Image hierarchy...
\|/-\|/-
Copying /boot x86 netboot hierarchy...
\|/-\|/-
Install Server setup complete
#

c. install 디렉토리가 제대로 생성이 됐는지 확인합니다.

  # du -sk /export/install

3083278 /export/install

d. DVD를 DVD 플레이어에서 꺼냅니다.

  # cd /;eject

클라이언트 설정 파일 생성하기

클라이언트 설정 파일들은 일반적인 점프스타트 설치를 제어하는데 사용됩니다.

a. 파일들이 위치할 설정 디렉토리를 생성합니다.

  # mkdir /export/config

b. sysidcfg 파일을 생성합니다:

제일 처음 생성할 파일은 sysidcfg 파일 입니다. 이 파일은 반드시 올바른 정보로 올바르게 포맷되어져 있어야 합니다. 그렇지 않을 경우 파일은 무시 되고 간섭이 필요 없는 점프스타트 설치는 종료 됩니다. 후에 설치 과정은 표준 솔라리스 설치 방식으로 전환됩니다.

점프스타트 클라이언트는 OS 설치를 시작하기 전에 sysidcfg 파일을 찾습니다. 이 파일은 반드시 "sysidcfg" 라는 이름을 가져야 합니다. 그러므로 만약 복수개 버젼의 파일을 가지고 있어야 한다면 각 sysidcfg 파일은 반드시 분리된 디렉토리에 존재해야 합니다. 각 클라이언트는 그들의 고유 sysidcfg 파일을 가질 수 있습니다. 혹은 복수개의 클라이언트가 동일한 sysidcfg 파일을 사용할 수도 있습니다. sysidcfg 파일은 add_install_client 커맨드를 통해서 클라이언트에 지정 됩니다. 다음은 두개의 sysidcfg 파일 생성을 보여 줍니다:

  # cd /export/config
# mkdir sysidcfg1
# cd sysidcfg1
# vi sysidcfg


system_locale=en_US.ISO8859-1
timezone=US/Pacific
timeserver=localhost
terminal=vt100
name_service=NONE
security_policy=NONE
root_password=<encrypted from /etc/shadow>
network_interface=bge0 {hostname=client1
netmask=255.255.255.0
protocol_ipv6=no
default_route=172.16.64.1}

:wq

# cd ../
# mkdir sysidcfg2
# cd sysidcfg2
# vi sysidcfg


system_locale=en_US.ISO8859-1
timezone=US/Pacific
timeserver=localhost
terminal=vt100
name_service=NONE
security_policy=NONE
root_password=<encrypted from /etc/shadow>
network_interface=bge0 {hostname=client2
netmask=255.255.255.0
protocol_ipv6=no
default_route=172.16.64.1}

:wq

c. rules 파일 생성하기:

다음으로 생성해야할 파일은 rules 파일입니다. 이것은 텍스트 파일로써 솔라리스가 설치될 각 클라이언트 혹은 클라이언트 그룹을 위한 규칙을 포함하고 있습니다. rules 파일의 각 클라이언트 혹은 클라이언트의 그룹에 어떠한 begin, profile, 그리고 finish 파일을 사용해야 할지 알려 줍니다.

오직 하나의 rules 파일 만이 존재 합니다. 이것은 몇개의 유일한 설정들이 존재하느냐에 따라서 여러개의 라인을 가질 수 있습니다. 아래에는 두개의 분리된 클라이언트 정보를 포함하고 있는 rules 파일의 내용 입니다:

  # cd /export/config
# vi rules


hostname client1 begin1 profile1 finish1
hostname client2 begin2 profile2 finish2

:wq

rules 파일은 체크 스크립트가 rules.ok 파일을 만들때 사용됩니다 일반적인 점프스타트 설치를 위해서는 rules.ok 파일의 성공적인 생성이 필요합니다.

d. begin 파일 생성하기:

begin 파일은 유저가 정의한 Bourne 쉘 스크립트로써 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 일반적인 작업은 파생된 프로파일을 생성하고 업그레이드 전에 파일을 백업하는 것을 포함합니다.

원하다면 복수개의 begin 파일을 사용할 수 있습니다. 다음은 두개의 begin 파일을 생성한 예제입니다:

  # cd /export/config
# vi begin1


#!/bin/sh
echo "Begin Script for JumpStart client1..."

:wq

# vi begin2

#!/bin/sh
echo "Begin Script for JumpStart client2..."

:wq

# chmod 755 begin*

클라리언트에서의 설치 동안 begin 파일의 출력은 /tmp/begin.log 에 쓰여 집니다. 설치가 완료 되면 로그 파일은 /var/sadm/system/logs/begin.log 위치에서 찾을 수 있습니다.

Solaris 10 Installation GuideCustom JumpStart Environment Variables 섹션에 begin 스크립트에서 사용할 수 있는 변수들을 설명하고 있습니다.

e. finish 파일 생성하기:

finish 파일은 유저가 정의한 Bourne 쉘 스크립트로써 솔라리스의 설치가 끝난 다음에 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 이 스크립트는 일반적으로 추가적인 파일, 패키지 혹은 패치의 설치, 루트 환경 커스터마이즈, 추가 소프트웨어 설치 같은 작업을 하는데 사용 됩니다.

원하다면 복수개의 finish 파일을 사용할 수 있습니다. 다음은 두개의finish파일을 생성한 예제입니다:

  # cd /export/config
# vi finish1


#!/bin/sh
echo "Finish Script for JumpStart client1..."
echo "Get rid of the nfs prompt during the initial boot"
touch /a/etc/.NFS4inst_state.domain

:wq

# vi finish2

#!/bin/sh
echo "Finish Script for JumpStart client2..."
echo "Get rid of the nfs prompt during the initial boot"
touch /a/etc/.NFS4inst_state.domain

:wq

# chmod 755 finish*

솔라리스 설치 프로그램은 클라인터 파일 시스템을 /a 에 마운트 시킵니다. finish 스크립트는 /a 를 존중하여 파일의 추가 변경 혹은 삭제를 하는데 사용 됩니다. 이러한 파일 시스템은 초기 시스템 재부팅시 까지 /a 에 마운팅 되어 남아 있게 됩니다.

점프스타트 디렉토리 /export/installSI_CONFIG_DIR 변수에 지정된 디렉토리에 마운트 됩니다. 디렉토리는 기본적으로 /tmp/install_config 로 지정 됩니다. 파일들은 점프스타트 디렉토리에서 클라이언트로 finish 스크립트에서 실행되는 명령을 통해 가능합니다. 설치된 시스템에 추가될 파일들은 점프스타트 디렉토리에 위치하게 되고 그 다음에 클라이언트에 의해 접근이 가능합니다.

finish 스크립트의 다음의 라인은 설치된 클라이언트의 파일 시스템에 파일을 복사 합니다:

  cp /tmp/install_config/<file_name> /a/<path_name>/

f. profile 파일 생성하기:

profile 파일은 텍스트 파일로 솔라리스 클라리언트에 어떻게 설치될지 지정합니다.

복수개의 profile 파일이 생성될 수 있습니다. 여러개의 클라이언트들이 동일한 profile 파일을 사용할 수 있습니다. 혹은 각 클라이언트들은 고유의 profile 파일을 가질 수도 있습니다. 다음은 두개의 profile 파일 생성을 보여 줍니다:

  # cd /export/config
# vi profile1


# install_type MUST be first
install_type initial_install

# start with the minimal required number of packages
cluster SUNWCXall
cluster SUNWCapache delete
cluster SUNWCpcmc delete
cluster SUNWCpcmcx delete
cluster SUNWCthai delete
cluster SUNWClp delete
cluster SUNWCnis delete
cluster SUNWCppp delete

# format the entire disk for Solaris
fdisk all solaris all

# define how the disk is partitioned
partitioning explicit
filesys rootdisk.s0 6144 /
filesys rootdisk.s1 1024 swap
filesys rootdisk.s7 free /state/partition1

# install systems as standalone
system_type standalone

# specify patches to install
patch 119281-06 nfs 172.16.64.194:/export/patches

# specify packages to install
package SPROcc add nfs 172.16.64.194:/export/packages

:wq

# vi profile2

# install_type MUST be first
install_type initial_install

# start with the minimal required number of packages
cluster SUNWCXall
cluster SUNWCapache delete
cluster SUNWCpcmc delete
cluster SUNWCpcmcx delete
cluster SUNWCthai delete
cluster SUNWClp delete
cluster SUNWCnis delete
cluster SUNWCppp delete

# format the entire disk for Solaris
fdisk all solaris all

# define how the disk is partitioned
partitioning explicit
filesys rootdisk.s0 6144 /
filesys rootdisk.s1 4096 swap
filesys rootdisk.s7 free /state/partition1

# install systems as standalone
system_type standalone

# specify patches to install
patch 119281-06 nfs 172.16.64.194:/export/patches

# specify packages to install
package SPROcc add nfs 172.16.64.194:/export/packages

:wq

g. check 스크립트 생성하기:

check 스크립트는 rulesprofile 파일들이 올바르게 설정되었는지 확인할때 사용 됩니다. 첫째로 check 스크립트를 아래와 같이 로컬 디렉토리 /export/config 에 복사 합니다:

  # cd /export/config
# cp /export/install/Solaris_10/Misc/jumpstart_sample/check .

h. check 스크립트 실행하기:

  # ./check
Validating rules...
Validating profile profile1...
Validating profile profile2...
The custom JumpStart configuration is ok.

어떠한 오류도 발견되지 않았다면 rules.ok 파일이 생성됩니다. 이 파일은 rules 파일과 동일합니다. 그러나 커멘트와 빈줄은 모두 제거 됩니다. check 스크립트는 다음과 같은 커멘트를 rules.ok 파일의 끝에 추가 시킵니다:

  # version=2 checksum=<num>

3. 설치와 설정 디렉토리 공유하기

a. dfstab 을 수정하여 점프스타트 디렉토리들을 공유 시킵니다.

b. /etc/dfs/dfstab 파일을 수정합니다:

  # vi /etc/dfs/dfstab

# Place share(1M) commands here for automatic execution
# on entering init state 3.
#
# Issue the command 'svcadm enable network/nfs/server' to
# run the NFS daemon processes and the share commands, after
# adding the very first entry to this file.
#
# share [-F fstype] [ -o options] [-d "<text>"] <pathname>
# [resource]
# for example,
# share -F nfs -o rw=engineering -d "home dirs" /export/home2

share -F nfs -o ro,anon=0 /export/install
share -F nfs -o ro,anon=0 /export/config
share -F nfs -o ro,anon=0 /export/patches
share -F nfs -o ro,anon=0 /export/packages

:wq

c. NFS 서버를 시작시킵니다.

  # /etc/init.d/nfs.server start

d. 디렉토리들을 공유합니다.

  # shareall
# share

- /export/install ro,anon=0 ""
- /export/config ro,anon=0 ""
- /export/patches ro,anon=0 ""
- /export/packages ro,anon=0 ""

e. 파일 공유를 확인합니다.

  # showmount -e localhost
export list for localhost:
/export/install (everyone)
/export/config (everyone)
/export/patches (everyone)
/export/packages (everyone)

4. 클라이언트 tftpboot 파일 생성하기

a. add_install_client 스크립트를 각 클라이언트 마다 실행시킵니다.

b. add_install_client 스크립트 저장 위치로 이동합니다:

  # cd /export/install/Solaris_10/Tools

c. add_install_client 스크립트를 점프스타트 설치를 진행할 네트워크 상의 각 클라이언트에서 실행합니다. -e 변수는 클라이언트의 MAC 어드레스이고 -p 변수는 클아이언트에 의해 이용될 sysidcfg 파일의 디렉토리 이름을 보여 줍니다. 아래에는 두 분리된 클라이언트 들에서 add_install_client 를 실행하는 것을 보여 줍니다:

  # ./add_install_client \
-d \
-e 00:0a:e4:37:16:4d \
-s 172.16.64.194:/export/install \
-c 172.16.64.194:/export/config \
-p 172.16.64.194:/export/config/sysidcfg1 i86pc


enabling tftp in /etc/inetd.conf
Converting /etc/inetd.conf
enabling network/tftp/udp6 service
copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

If not already configured, enable PXE boot by creating
a macro named 01000AE429C1FD with:
Boot server IP (BootSrvA) : 172.16.64.194
Boot file (BootFile) : 01000AE429C1FD

# ./add_install_client \
-d \
-e 00:0a:e4:2a:33:f8 \
-s 172.16.64.194:/export/install \
-c 172.16.64.194:/export/config \
-p 172.16.64.194:/export/config/sysidcfg2 i86pc


enabling tftp in /etc/inetd.conf
Converting /etc/inetd.conf
enabling network/tftp/udp6 service
copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

If not already configured, enable PXE boot by creating
a macro named 01000AE42A33F8 with:
Boot server IP (BootSrvA) : 172.16.64.194
Boot file (BootFile) : 01000AE42A33F8

부트 서버 IP 와 부트 파일 값들은 후에 dhcpmgr 가 실행중인 동안에 매크로가 생성될때 사용됩니다.

5. DHCP 서버를 설정하고 실행시키기

a. dhcpmgr 를 실행시키기:

  # /usr/sadm/admin/bin/dhcpmgr
Java Accessibility Bridge for GNOME loaded.

첫번째 스크린이 나타 남:
(확대 해서 보려면 이미지를 클릭하세요)

b. "Configure as a DHCP Server" 선택후 OK 를 클릭.

DHCP 설정 마법사가 나타납니다:

c. "Text Files" 선택 후 Next 클릭.

d. 저장 경로를 확인한 후 Next 클릭.

e. 네임서비스를 선택 한 후에 Next 를 클릭.

f. 임대 정보를 확인한 후에 Next 를 클릭.

g. DNS 도메인 정보를 확인 한 후 Next 를 클릭.

h. 네트워크 정보를 확인한 후 Next 를 클릭.

i. 네트워크 타입과 라우팅 옵션을 선택한 후 Next 를 클릭.

j. NIS 도메인 정보를 확인한 후에 Next 를 클릭.

k. NIS+ 도메인 정보를 확인한 후 Next 를 클릭.

l. 설정값을 다시 확인 한 후에 Finish 를 클릭.

DHCP 메니저가 나타나고 주소 마법사를 시작하도록 요구 받습니다:

m. Yes 를 클릭.

주소 마법사가 나타납니다:

n. IP 주소의 숫자를 입력한 후에 Next 를 클릭.

o. 서버 정보를 확인한 후에 Next 를 클릭.

p. IP 주소를 확인한 후에 Next 를 클릭.

q. 클라이언트 설정 정보를 확인한 후에 Next 를 클릭.

r. 임대(lease) 타입을 선택한 후 Next 를 클릭.

s. 설정을 확인한 후에 Finish 를 클릭.

dhcpmgr 아직 실행중인 상태에서 BootFileBootSrvA 매크로를 생성합니다. Create Macro 폼에 접근하기 위해 일단 DHCP Manager 폼에 Macros 탭을 선택합니다. 그 다음에 상단 메뉴에서 Edit->Create 을 선택합니다.

Create Macro 폼이 나타납니다:

t. 첫번째 클라이언트를 위해 add_install_client 를 실행함으로써 얻어 졌던 이름을 Name 필드에 적어 넣음으로써 매크로의 BootFile 부분을 생성함. 이 이름은 Option Value 필드에서 또한 사용 됩니다. 정보를 입력한 후에 Add 를 클릭함.

u. Opntion Value 필드에 점프스타트 서버의 네트워크 IP 주소를 적음으로써 매크로의 BootSrvA 부분을 생성함. 정보를 입력한 후에 Add 를 클릭함. 그리고나서 OK 를 클릭해서 첫번째 매크로의 생성을 완료함.

v. 두번째 매크로에 동일한 과정을 반복.

x. Add 를 클릭.

y. Add 를 클릭한 다음 OK 를 클릭함.

z. 두번째 매크로를 생성한 다음 DHCP 메니저 윈도우의 File->Exit 을 선택하여 dhcpmgr 유틸리티를 종료 시킴.

마지막 정리 작업

여러분이 add_install_client 스크립트를 실행시켰을때 스크립트는 a menu.lst<filename> 파일을 각 클라이언트 를 위해 생성하였습니다.

/tftpboot/menu.lst<BootFile: Name> 파일 생성의 버그로 인해, 여러분은 반드시 다음의 부분들을 kernel/unix 의 4번째 줄에 추가시켜야 합니다:

- install dhcp

그런후에 파일의 내용을 아래의 내용에서:

default=0
timeout=30
title Solaris_10 Jumpstart
kernel /I86PC.Solaris_10-1/multiboot kernel/unix -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
module /I86PC.Solaris_10-1/x86.miniroot

아래의 내용으로 바꿉니다:

default=0
timeout=4
title Solaris_10 Jumpstart
kernel /I86PC.Solaris_10-1/multiboot kernel/unix - install dhcp -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
module /I86PC.Solaris_10-1/x86.miniroot

간섭이 필요 없는 점프스타트 설치 수행하기

    클라이언트를 부팅시킵니다.

    프롬프트가 나타난 후에 F12 를 클라이언트의 키보드로 입력합니다.

    Network Boot Request....

    CLIENT MAC ADDR: 00 0A E4 2A 33 F8 GUID: 11223344 556 7788 99AA \
    BBCCDDEEFF00

    DHCP....\|/-\|/-

    만약 모든 셋팅이 정상적이라면 설치는 완료될 것입니다. 만약 문제가 발생한다면 인스톨러는 종료 되고 쉘로 떨어질 것입니다. 에러의 원인은 install_log 파일에 기록됩니다.


 

설치 후 작업

다음의 파일들이 점프스타트의 설치 로그파일들입니다.:

  /var/sadm/system/logs/install_log
begin_log
finish_log
sysidtool.log


 

저자에 관하여

Craig Winter 와 Dale Layfield 는 썬의 마켓 개발 엔지니이렁팀의 staff 엔지니어들 입니다.


출처 : http://blog.sdnkorea.com/


Trackback 0 Comment 0