공룡호가 사는 세상 이야기

협력사 대상으로 솔라리스 Jumpstart 구성 방법을 강의하고, 필요한 내용을 요약 해 둔다.
강의 내용은 자사 플랫폼만을 대상으로 하였으나, 일부 범용적으로도 사용할 수 있도록 수정.
아래 예제는 서버 1대에 클라이언트 1대를 대상으로 함.

1. 인스톨서버에 디렉토리 작성 후 CD로 부터 OS Image 생성
# mkdir -p /export/install/Sol10
# cd /cdrom/cdrom0/s0/Solaris_10/Tools
# ./setup_install_server /export/install/Sol10
(시간이 꽤 걸림) <- 여기서 생성된 /export/install/Sol10 디렉토리 내용을 iso로 묶어 두면, 재사용 가능

2. 미니루트 작업용 디렉토리 작성 후 복사, unpack중 에러발생할 경우, 가볍게 무시
# mkdir /tmp/work
# /boot/solaris/bin/root_archive unpackmedia /export/install/Sol10 /tmp/work
# rm /tmp/work/tmp/AdDrEm.lck

3. 드라이버 설치
Jumpstart는 네트웍을 통해 설치를 하므로, 해당 네트웍 인터페이스에 대한 드라이버가 없다면, 해당 드라이버를 설치한다.
아래 드라이버는 Fujitsu용 Giga-Ethernet 드라이버와 Ultra-SCSI 드라이버 설치과정이다.

3.1. 미니루트에 FJSVgid 설치
# cd /cdrom/cdrom0/FJSVgid_4.0/10
# pkgadd -R /tmp/work -d . FJSVgid.u
# pkgadd -R /tmp/work -d . FJSVgid.v

3.2. 미니루트에 Ultra SCSI 설치
# cd /cdrom/cdrom0/ultra_lvd_driver/10
# pkgadd -R /tmp/work -d . FJSVulsa.u
# pkgadd -R /tmp/work -d . FJSVulsa.v
# patchadd -C /tmp/work 914572-01(?) - 그냥 들어있는 패치하면 됨

4. 미니루트를 재포장 후 적용
# mkdir -p /tmp/media/Solaris_10
# /boot/solaris/bin/root_archive packmedia /tmp/media /tmp/work
# cd /tmp/media
# find boot Solaris_10/Tools/Boot | cpio -pdum /export/install/Sol10
# df -k 확인
# umount -f /dev/lofi/1
# lofiadm -d /dev/lofi/1

5. 커스텀 jumpstart 디렉토리 작성, 드라이버, 샘플 복사
# mkdir /jumpstart
# echo "share -F nfs -o ro,anon=0 /jumpstart" >> /etc/dfs/dfstab
# shareall

(Giga-Ethernet)
# mkdir /jumpstart/fjgi
# cp -p /cdrom/cdrom0/install_v4 /jumpstart/fjgi/.
# cp -p /cdrom/cdrom0/admin /jumpstart/fjgi/.
# cp -pr /cdrom/cdrom0/FJSVgid_4.0/10/* /jumpstart/fjgi/.
(Ultra-SCSI)
# mkdir /jumpstart/fjulsa
# cp -p /cdrom/cdrom0/install /jumpstart/fjulsa/.
# cp -p /cdrom/cdrom0/admin /jumpstart/fjulsa/.
# cp -pr /cdrom/cdrom0/ultra_lvd_driver/10/* /jumpstart/fjulsa/.

# cp -r /export/install/Sol10/Solaris_10/Misc/jumpstart_sample/* /jumpstart

6. nfs서버 가동중 확인, disable이면 enable
# svcs -av | grep nfs
# svcadm enable (기동시킬 서비스)

7. profile 작성 (설치 기본정보를 기록한다-아래 형식에 주의)
# vi /jumpstart/profile
 install_type initial_install
 system_type server
 partitioning explicit
 cluster SUNWCXall
 filesys c0t0d0s0 51200 /
 filesys c0t0d0s1 24576 swap
 geo             Asia
 locale          ko

8. finish 작성
# vi /jumpstart/finish
 #!/bin/sh
 BASE=/a
 JUMPSTART=/a/mnt
 mount -F nfs 인스톨서버IP:/jumpstart ${JUMPSTART}
 ${JUMPSTART}/fjgi/install_v4 -R ${BASE} -d ${JUMPSTART}/fjgi -p sun4u
 ${JUMPSTART}/fjulsa/install -R ${BASE} -d ${JUMPSTART}/fjulsa -p sun4u
 umount ${JUMPSTART}
 exit 0

9. rules 작성
# vi /jumpstart/rules의 가운데 쯤, 클라이언트 호스트 정보 입력
 hostname 클라이언트호스트명 - profile finish

10. rules 체크 (ok가 떨어질 때 까지 위 내용 확인)
# cd /jumpstart
# ./check -p /tmp/media -r rules

11. 인스톨서버에 클라이언트 서버정보 추가
# vi /etc/hosts
클라이언트IP[탭]hostname(클라이언트)[탭]loghost

12. 클라이언트의 맥어드레스 확인
클라이언트 PROM(ok-mode까지 부팅)
{ok} show-nets
jumpstart에 사용될 ethernet-port 선택
{ok} cd ethernet-port 주소
{ok} .properties
mac 부분에서 해당 MAC Address 확인

13. 클라이언트 서버 맥 등록
# vi /etc/ethers
맥어드레스 hostname(클라이언트)

14. bootparams 생성
# /export/install/Sol10/Solaris_10/Tools/add_install_client -c 서버호스트명:/jumpstart 클라이언트호스트명 sun4u  <== 호스트명은 꼭 /etc/hosts에 들어가 있어야하며(IP안됨) 서버호스트명은 loghost명 이어야 됨
# cat /etc/bootparams 확인하여 올바로 값이 입력되었는지 확인

15. 인스톨
{ok} boot net - install
위 방법이 안될경우, net의 alias 를 확인하거나
{ok} boot 자신의 네트웍 물리주소 - install

패키지를 깔려고 하는데 이상한 에러가 발생한다. 왠 황당한 경우인지?
기본적으로 패키지를 설치하기 위해서는 /var/sadm/install/admin/default 파일이 존재해야 한다. 이 파일은 패키지 설치에 관련된 파라미터들이 기술되어 있는 파일인데, 이 파일이 없거나 손상되었을 경우, 패키지가 올바로 설치될 수 없어서 오류가 발생한다.

해결은 간단하다. 위 경로에 default 파일을 생성하고 다음 내용을 복사해서 붙여넣자. 그리고 다시 pkgadd ~~~
확인결과 solaris9/10은 파일 내용이 동일하다. 상관 없다.

#
# Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident  "@(#)default    1.5     03/06/11 SMI"
#
mail=
instance=unique
partial=ask
runlevel=ask
idepend=ask
rdepend=ask
space=ask
setuid=ask
conflict=ask
action=ask
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
basedir=default

덧붙여 여기까지 본 김에 한가지 을 배워보자.
자세히 보면, 이 default 라는 파일은 package를 install 할 때의 파라미터들이라고 앞서 설명했다.
눈치 빠르신 분들은 대충 아시겠지만, 각종 파라미터들이 ask로 되어 있는 것을 보아하니, 패키지를 설치하다 충돌이 나거나 하는 기타 여러가지 사항에 대해서 interactive하게 설치를 하기 위함을 알 수 있다.
그럼, ask 를 뭔가로 대신하면 package를 원샷에 설치할 수 있다는 말이 된다.
ask를 모두 nocheck로 변경한다. basedir은 package의 설치 위치를 변경해 줄 수 있다. 그럼, 원샷에 설치할 수 있는 준비가 모두 되었다.

그런데, 여기서 또 하나 문제가 있다. Non-Interactive하게 설치하도록 변경하였는데, Interactive하게 설치해야 하는 상황이 되면, 그 때 마다, nocheck를 ask로 변경해야 한단 말인가? -_-
솔라리스가 그렇게 허접할리가 없다. 위에서 편집한 파일을 저장을 default로 하지 말고 non으로 하여 저장하자.(반드시 non일 필요는 없다.)
그리고 다음과 같이 명령어에 옵션을 주자.

# pkgadd -na non -d pkgfile [pkgname]
ex) # pkgadd -na ./non -d beautifulpkg all

조금 전에 nocheck로 설정한 파일을 이용하여 패키지를 설치하는 것을 확인할 수 있다.
검색해서 이 문서를 보신 분들은, 문제도 해결하고, 패키지도 잘 설치하셨을 것이고, 팁도 하나 배우셨고. ~~
오늘은 그만하고 퇴근들 하십쇼~ ^^




'유닉스' 카테고리의 다른 글

ZFS manual  (0) 2009.01.05
Solaris Disksuite simple manual  (0) 2008.11.24
SSH setting for solaris8  (0) 2008.08.26
Fixing read-only file system error  (0) 2008.08.13
Solaris10 sd.conf 동적으로 다시 읽기  (0) 2008.05.26