종료 스크립트는 rules 파일에 지정하는 사용자 정의 Bourne 쉘 스크립트입니다. 종료 스크립트는 시스템에 Solaris 소프트웨어가 설치된 뒤 시스템을 재부트하기 전에 작업을 수행합니다. 종료 스크립트는 사용자 정의 JumpStart를 사용하여 Solaris를 설치할 때만 사용할 수 있습니다.
종료 스크립트를 사용하여 수행할 수 있는 작업은 다음과 같습니다.
파일 추가
특정 소프트웨어 그룹에서 설치된 것 이외의 개별 패키지나 패치 추가
루트 환경 사용자 정의
추가 소프트웨어 설치
Solaris 설치 프로그램은 시스템의 파일 시스템을 /a로 마운트합니다. 파일 시스템은 시스템을 재부트할 때까지 /a에 마운트된 채로 남게 됩니다. 새로 설치된 파일 시스템 계층에서 /a와 관련된 파일 시스템을 수정함으로써 파일을 추가, 변경 또는 제거하기 위해 종료 스크립트를 사용할 수 있습니다.
설치하는 동안 종료 스크립트의 출력은 /tmp/finish.log에 배치됩니다. 설치가 끝나면 로그 파일은 /var/sadm/system/logs/finish.log로 리디렉션됩니다.
사용자 정의 JumpStart 환경 변수를 종료 스크립트에서 사용할 수 있습니다. 환경 변수의 목록은 사용자 정의 JumpStart 환경 변수를 참조하십시오.
종료 스크립트를 JumpStart 디렉토리에 저장합니다.
 종료 스크립트를 사용하여 파일 추가
종료 스크립트를 사용하여 파일 추가종료 스크립트를 통해 JumpStart 디렉토리의 파일을 이미 설치된 시스템에 추가할 수 있습니다. JumpStart 디렉토리는 SI_CONFIG_DIR 변수에 의해 지정된 디렉토리에 마운트되므로 파일을 추가할 수 있습니다. 디렉토리는 기본적으로 /tmp/install_config로 설정됩니다.
종료 스크립트 JumpStart 디렉토리의 파일을 설치된 시스템에 이미 존재하는 파일로 복사하여 파일을 대체할 수도 있습니다.
예를 들어, 사이트의 모든 사용자를 위해 개발된 site_prog라는 특수 응용 프로그램이 있다고 가정합니다. site_prog 사본을 JumpStart 디렉토리에 배치하면 종료 스크립트의 다음 행이 site_prog를 JumpStart 디렉토리에서 시스템의 /usr/bin 디렉토리로 복사합니다.
| cp ${SI_CONFIG_DIR}/site_prog  /a/usr/bin | 
Solaris 소프트웨어가 시스템에 설치된 뒤 자동으로 패키지나 패치를 추가하는 종료 스크립트를 만들 수 있습니다. 종료 스크립트를 사용하여 패키지를 추가함으로써 시간을 절약하고 사이트의 서로 다른 시스템들에 설치되는 패키지와 패치의 일관성을 보장할 수 있습니다.
pkgadd(1M) 또는 patchadd(1M) 명령을 종료 스크립트에 사용하는 경우 -R 옵션을 사용하여 /a를 루트 경로로 지정합니다.
|   #!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
  mount -f nfs sherlock:/export/package ${MNT}
  cat >${ADMIN_FILE} <<DONT_ASK
  mail=root
  instance=overwrite
  partial=nocheck
  runlevel=nocheck
  idepend=nocheck
  rdepend=nocheck
  space=ask
  setuid=nocheck
  conflict=nocheck
  action=nocheck
  basedir=default
  DONT_ASK
 
  /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz 
  umount ${MNT}
  rmdir ${MNT} | 
다음에서는 이 예의 일부 명령어에 대해 설명합니다.
다음 명령어는 설치할 패키지가 포함되어 있는 서버에 디렉토리를 마운트합니다.
| mount -f nfs sherlock:/export/package ${MNT} | 
다음 명령어는 임시 패키지 관리 파일인 admin을 만들어 pkgadd(1M) 명령어가 패키지를 설치할 때 확인을 수행하거나 질문을 하지 않도록 합니다. 패키지를 추가할 때 임시 패키지 관리 파일을 사용하여 자동 설치를 관리합니다.
| cat >${ADMIN_FILE} <<DONT_ASK | 
다음의 pkgadd 명령어는 -a 옵션(패키지 관리 파일 지정)과 -R 옵션(루트 경로 지정)을 사용하여 패키지를 추가합니다.
| /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz | 
| #!/bin/sh ######## # # USER-CONFIGURABLE OPTIONS # ######## # The location of the patches to add to the system after it's installed. # The OS rev (5.x) and the architecture (`mach`) will be added to the # root. For example, /foo on a 8 SPARC would turn into /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # NO USER-SERVICEABLE PARTS PAST THIS POINT # ######### BASEDIR=/a # Figure out the source and target OS versions echo Determining OS revisions... SRCREV=`uname -r` echo Source $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Add the patches needed # echo Adding OS patches mount $LUPATCHHOST:$LUPATCHPATH /mnt >/dev/null 2>&1 if [ $? = 0 ] ; then for patch in `cat /mnt/*Recommended/patch_order` ; do (cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .) done cd /tmp umount /mnt else echo "No patches found" if | 
과거에는 chroot(1M) 종료 스크립트 환경에서 pkgadd 및 patchadd 명령어와 함께 사용되었습니다. 드물지만 일부 패키지나 패치는 -R 옵션과 함께 작동하지 않습니다. chroot 명령을 내리기 전에 /a 루트 경로에서 임시 /etc/mnttab 파일을 작성해야 합니다.
임시 /etc/mnttab 파일을 만들려면 종료 스크립트에 다음 행을 추가합니다.
cp /etc/mnttab /a/etc/mnttab
종료 스크립트를 사용하여 시스템에 이미 설치된 파일을 사용자 정의할 수도 있습니다. 예를 들어 예 4–7의 종료 스크립트는 루트(/) 디렉토리의 .cshrc 파일에 정보를 추가하여 루트 환경을 사용자 정의합니다.
| #!/bin/sh
#
# Customize root's environment
#
echo "***adding customizations in /.cshrc"
test -f a/.cshrc || {
cat >> a/.cshrc <<EOF
set history=100 savehist=200 filec ignoreeof prompt="\$user@`uname -n`> "
alias cp cp -i
alias mv mv -i
alias rm rm -i
alias ls ls -FC
alias h history
alias c clear
unset autologout
EOF
} | 
종료 스크립트를 사용하여 Solaris OS가 설치된 뒤 추가 소프트웨어를 설치할 수 있습니다. Solaris 설치 프로그램 은 설치하는 동안 정보를 입력하라는 메시지를 표시합니다. 자동 설치를 유지하려면 Solaris 설치 프로그램 를 -nodisplay 또는 -noconsole 옵션과 함께 실행하면 됩니다.
표 4–1 Solaris 설치 옵션| 옵션 | 설명 | 
|---|---|
| -nodisplay | 그래픽 사용자 인터페이스 없이 설치 프로그램을 실행합니다. 설치가 -locales 옵션에 의해 수정되지 않으면 기본 제품 설치를 사용합니다. | 
| -noconsole | 대화식 텍스트 콘솔 장치 없이 설치를 수행합니다. UNIX 스크립트 사용을 위해 -nodisplay와 함께 실행할 때 유용합니다. | 
추가 정보는 installer(1M) 매뉴얼 페이지를 참조하십시오.