60.Unix2008. 11. 3. 13:34
반응형
필자가 가지고 있던 장비는 썬 엔터프라이즈 3500 서버로 솔라리스10 에 ZFS 를 운용중이었고 하나의 클라이언트 머신 (썬 Netra X1 서버) 을 가지고 있었습니다. 필자의 회사의 새로운 프로젝트를 위해서 솔라리스10을 클라이언트 머신에 설치해야 했습니다.

필자가 경험한 과정들이 비슷한 작업이 필요한 사람들에게 도움이 되길 바랍니다.

참고: 이 글에서는 솔라리스10 08/07 버전을 사용했지만 03/05 이전의 버전에서도 별 무리 없이 동작할 것입니다.

필요 조건

root 혹은 시스템 관리자로 로그인 하시기 바랍니다.

또한 여러분의 부트 서버를 DHCP 서버로 설정하시기 바랍니다. 필자의 머신의 경우는 DHCP 를 다른 서버에서 얻어오긴 했지만 고정 IP 들을 등록했기 때문에 이러한 과정은 필요치 않았습니다.

또한 tftpnfs 서비스를 실행해야 합니다. 솔라리스10을 설치할때 시작 초기에 NFS 를 활성화 하였지만 tftp 는 서비스를 생성해 주어야 했습니다. 다행이도 이것은 매우 쉽습니다. 왜냐하면 거의 설정이 되어 있기 때문입니다. 여러분이 해야 할일은 단지 아래와 몇가지 변경 만을 수행하는 것입니다:

1. inetd.conf 파일을 수정합니다. 만약 vi 에 익숙하다면 그것을 사용하시기 바랍니다. 그렇지 않다면 다른 텍스트 에디터를 사용하셔도 됩니다. 필자의 머신은 모니터 혹은 키보드가 꼽혀 있지 않았기 때문에 SSH 터미널을 이용해서 수행 하였습니다.

# cd /etc
# vi inetd.conf

2. 파일의 아래쪽으로 스크롤을 내리면 다음과 같은 라인을 발견하실 수 있습니다:

# TFTPD - tftp server (primarily used for booting)
# tftp dgram  udp6  wait root  /usr/sbin/in.tftpd  in.tftpd -s
/tftpboot

3. 마지막줄의 커멘트를 제거 함으로써 다음과 같이 문서를 저장합니다:

tftp  dgram  udp6  wait root /usr/sbin/in.tftpd  in.tftpd -s
/tftpboot

4. :wq 를 입력한 후에 파일을 저장하고 vi 를 종료시킵니다.

5. inetconv 를 실행하여 서비스를 SMF 에 등록시킵니다:

# inetconv

6. 그다음에 svcadm 을 실행하여 서비스를 활성화 시킵니다. 이제 준비가 다 되었습니다:

# svcadm enable tftpd

이제 ZFS 스토리지 풀을 설정하고, 파일을 복사 한다읍에 설정 파일들을 설정하는 작업들이 남았습니다.

ZFS 스토리지 풀 설정하기

솔라리스 점프스타트 서버에 새로운 풀을 생성하였습니다:

# zpool create install c1t7d0

서버에 몇몇 사용하지 않는 예비 디스크들이 있었습니다. 그래서 이것을 솔라리스 점프스타트 서버 풀로 만들었고 그 다음에 share 들을 만들었습니다.

# zfs create install/config
# zfs create install/boot
# zfs set sharenfs=ro,anon=0 install
# zfs set sharenfs=ro,anon=0 install/config
# zfs set sharenfs=ro,anon=0 install/boot

다음으로 모든 디렉토리들이 존재 하는지 그리고 모든 것들이 정확하게 공유 되고 있는지 확인하였습니다:

# cd /install
# ls -l
drwxr-xr-x   4 root     sys       5 Jan  8 10:25 boot
drwxr-xr-x   2 root     sys       9 Jan  8 10:16 config
#
# share
-               /install   ro,anon=0   ""

-               /install/config   ro,anon=0   ""
-               /install/boot   ro,anon=0   ""

파일 복사하기

이제 솔라리스 HW807 SPARC 의 첫번째 CD 를 썬 엔터프라이즈 3500 서버에 집어 넣었습니다. cdrom 디렉토리로 이동한 다음에 setup_install_server 스크립트를 수행하였습니다:

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

스크립트가 실행되었고 필요한 파일들을 /install 디렉토리로 복사 하였습니다. 완료 후에는 루트 디렉토리로 이동 한 다음에 CD 를 배출 시켰습니다:

# cd /
# eject cdrom

이제 두번째 CD 를 CD-ROM 에 넣고 Tools 디렉토리로 이동 해서 add_to_install_server 스크립트를 수행하였습니다:

# cd /cdrom/cdrom0/Solaris_10/Tools
# ./add_to_install_server /install

5개의 CD 에 모든 파일들을 복사할때 까지 유사한 단계들을 진행하였고 언어 CD 또한 /install 디렉토리에 복사 되었습니다.

다시 디스크 1번을 Cd-ROM 에 집어 넣은 다음에 Misc 디렉토리로 이동하였습니다. 그다음 이후 단계에서 생성할 profilerules 파일들을 체크하기 위해서 체크 스크립트를 복사 하였습니다:

# cd /cdrom/cdrom0/s0/Solaris_10/Misc/jumpstart_sample
# cp check /install/config
# cd /install/config

설정 파일들 설정하기

이제 부터가 재미있는 부분으로써 실질적으로 솔라리스 점프스타트에 필요한 파일들을 작성하는 시간입니다.

여러분은 디스크에서 샘플들을 복사해서 여러분에게 맞게 수정할 수 있습니다. 필자는 필자의 시스템의 용도를 알고 있기 때문에 고유의 파일들을 작성하였고 해당 파일들을 검사하고 rules.ok 파일을 생성하기 위해 체크 스크립트를 수행 하였습니다.

제일 처음 생성한 파일은 sysidcfg 입니다. 이 파일은 클라이언트가 초기 부팅 후에 어떠한 셋팅을 가질 지를 알려 줍니다. 만약 이 파일에 정보를 추가하지 않는다면 시스템은 모든 필요한 정보를 여러분에게 요청하게 됩니다. 필자는 vi 를 이용하여 /install/config 에 파일을 생성하였습니다:

# vi sysidcfg
system_locale=en_US.ISO8859-1
timezone=US/Pacific
timeserver=localhost
terminal=vt100
name_service=NONE
security_policy=NONE
root_password=<encrypted password from /etc/shadow>
network_interface=dmfe0 {hostname=<hostname of client>
                         netmask=<your network's netmask>
                         protocol_ipv6=no
                         default_route=<your gateway>}

:wq

그 다음은 rules 파일 입니다. 이 파일은 필자의 설정에서는 아주 간단합니다. 왜냐하면 오직 하나의 서버를 설정하기 때문입니다. rules 파일로 여러가지 작업들을 할 수 있습니다. 만약 솔라리스 CD에 포함되어 있는 샘플 rules 파일을 보신다면 이것을 어떻게 활용할 수 있을지 아이디어를 얻으실 수 있을 것입니다. 다음은 필자가 사용한 설정 입니다.

# vi rules
hostname <hostname of client> - profile -

:wq

begin 스크립트와 finish 스크립트를 사용하지 않는 이상 두개의 "-" 심볼은 반드시 위의 코드에 존재해야 합니다. 만약 사용하는 경우에는 "-" 심볼의 위치에 해당 스크립트들의 이름을 입력 합니다.

클라이언트를 부팅 하기 전에 여러분의 스크립트의 퍼미션을 확인 한 후에 chmod 755 를 수행 하시기 바랍니다. 이에 대한 좀 더 자세한 정보는 솔라리스 CD 의 /Solaris_10/Misc/jumpstart_samples 아래에서 샘플 rules 스크립트를 통해서 좀 더 얻으실 수 있습니다.

그 다음에 여러분은 rules 파일에 여러분이 정의한 대로 여러분의 profile 파일을 생성해야 합니다. 여러분은 rules 파일에 정의한 그대로 profile 파일의 이름을 사용해야 합니다. 필자는 profile 을 rules 파일에 지정했었기 때문에 파일의 이름은 profile 입니다. 필자의 profile 파일은 클라이언트의 파티션 사이즈, 설치 타입 및 클라이언트 타입까지 설정이 되어 있습니다.

다시 한번 vi 를 이용해서 파일을 생성하였습니다. 그러나 솔라리스 CD 안에는 여러가지 샘플들이 존재 함으로 여러분들은 필요에 맞게 수정해서 사용하실 수 있습니다. 중요한 것은 정확한 설치 타입을 아는 것입니다.

cluster 옵션은 소프트웨어 그룹에 따른 설치 타입을 지정 합니다. 다음의 테이블은 사용 가능한 값들을 나타내고 있습니다.

표 1: 소프트웨어 그룹과 그룹 이름들의 값

Reduced Network Support Software Group
SUNWCrnet
Core System Support Software Group
SUNWCreq
End User Solaris Software Group
SUNWCuser
Developer Solaris Software Group
SUNWCprog
Entire Solaris Software Group
SUNWCall
Entire Solaris Software Group Plus OEM Support
SUNWCXall

필자는 다음과 같이 설정 하였습니다:

# vi profile
install_type      initial_install
cluster           SUNWCXall
partitioning      explicit
filesys           c0t0d0s0 14000 /
filesys           c0t0d0s1 2048 /var
filesys           c0t0d0s3 1024 swap
filesys           c0t0d0s7 19500 /export/home
system_type       standalone

:wq

다음 단계는 파일들에 어떠한 실수도 존재하지 않는지 확인 하는 것입니다. 확인을 위해 check 스크립트를 수행 하였습니다.

# ./check

만약 아무런 이상이 없다면 여러분은 /install/config 디렉토리에 rules.ok 라 불리는 파일을 가지게 될 것입니다.

# ls -l
-rwxr-xr-x   1 root     root   59701 Jan  8 10:16 check
-rw-r--r--   1 root     root     232 Jan  8 10:14 profile
-rw-r--r--   1 root     root      32 Jan  8 10:15 rules
-rw-r--r--   1 root     root      57 Jan  8 10:16 rules.ok
-rw-r--r--   1 root     root     278 Jan  8 09:33 sysidcfg

올바르게 부팅 되도록 서버 설정하기

이제 실제로 부팅될 서버를 실제로 설정하는 재미있는 작업을 수행 합니다. 여러분은 클라이언트의 MAC 주소를 얻어와야 합니다. 여기에는 두가지 방법이 존재 합니다: 클라이언트에서 ifconfig -a 를 실행하거나 openboot 프롬프트에서 얻어오는 두가지 방법이 존재 합니다.

MAC 주소를 얻어온 다음 해당 정보를 여러분의 /etc/ethers 파일에 추가시켜 줍니다. 만약 이 파일을 가지고 있지 않다면 생성해 줍니다:

# cd /etc
# vi ethers
0a:3b:ba:f5:d1:e6 <client hostname>

:wq

그다음 여러분의 클라이언트를 /etc/hosts 파일에 추가 시켜 줍니다:

# vi hosts
<ip.address.for.client> <client hostname>

:wq

이제 부트 서버를 생성해야 합니다. CD-ROM 에 솔라리스10 디스크 1번을 집어 넣은 다음에 setup_install_server 를 다시 실행 합니다. 이번엔 -b 옵션과 /install/boot 디렉토리 옵션을 줍니다:

# cd /cdrom/cdrom0/s0/Solaris_10/Tools
# ./setup_install_server -b /install/boot

위의 작업이 완료 되면 CD 를 배출 합니다:

# cd /
# eject cdrom

클라이언트 설정하기

이제 클라이언트를 설정할 시간입니다. 아래와 같은 커맨드를 수행 하였습니다. 필자는 CD를 복사한 /install 디렉토리에서 직접적으로 실행 하였습니다.

주의: 아래의 작업은 CD 에서가 아닌 설치 이미지에서 반드시 수행 해야 합니다. 여러분이 커맨드를 실행한 위치가 클라이언트가 부트 이미지를 찾을 위치이기 때문입니다. 만약 CD 에서 설치 한다면 클라이언트는 CD 에서 부트 이미지를 찾을 것이고 여러분이 NFS 를 통해서 CD-ROM 을 공유하고 있지 한다면 커맨드는 실패할 것입니다.

# cd /install/Solaris_10/Tools
# ./add_install_client -e 0a:3b:ba:f5:d1:e6 -s

<server hostname>:/install -c
<server hostname>:/install/config -p
<server hostname>:/install/config <client hostname>
sun4u

이전의 커맨드들은 필요한 모든 파일들을 생성하였습니다. 그러므로 클라이언트는 부팅이 가능하고 솔라리스 설치를 시작하는데에 필요한 모든 것들을 찾을 수 있습니다. 아래는 플래그가 의미하는 바를 정리한 것입니다:

  • -e 는 클라이언트의 MAC 주소를 지정합니다.
  • -s 는 서버 설치 파일들의 위치를 지정합니다.
  • -c 는 솔라리스 점프스타트 설정 장소를 지정합니다.
  • -psysidcfg 파일의 위치를 지정합니다.
  • sun4u 는 클라이언트의 아키텍쳐를 지정합니다.

클라이언트 부팅하기

이제 클라이언트를 부팅할 준비가 되었습니다.

주의: 필자의 썬 Netra X1 서버에서 필자는 lights on management (LOM) 콘솔을 # 을 눌러서 들어갈 수 있었습니다. 그리고 breakLOM> 프롬프트에 입력하였습니다. OpenBoot 프롬프트로 들어가기 위해 필요한 어떤 작업이라도 수행하시기 바랍니다.

클라이언트에서 OpenBoot OK 프롬프트로 들어간 다음에 다음의 커맨드를 수행 합니다:

ok> boot net - install

필자가 해당 커맨드를 실행하였을때 클라이언트는 서버에 접속하였고 OS 를 다운로드한 다음에 설치 하였습니다. 필자가 해야할 일은 단지 기본 IPv4 설정을 사용하도록 알려 주는 것 뿐이었고 나머지는 알아서 수행 되었습니다.

저자에 관하여

Lucas Williams 는 UNIX 와 마이크로소프트 윈도우즈 시스템 관리자로 15년 이상 일해 왔습니다. 그는 리눅스, 솔라리스(2.6 부터 10 까지), 노벨 네트워킹, 마이크로 소프트 윈도우즈 NT 3.51 부터 서버 2008 까지의 다양한 경험이 있습니다. 스크립트 작성이 가능하고 프로덕션 환경에 배치하기전에 신기술들의 베타 테스트를 수행 합니다. 현재 그는 프로덕션 환경에서 서버를 배치할때 사용될 다양한 가상화 기술에 대해 연구하고 있습니다.


이 글의 영문 원본은
Setting Up JumpStart With Solaris 10 OS for SPARC Platforms and ZFS
에서 보실 수 있습니다.

"관리자코너" 카테고리의 다른 글

Posted by 1010