Solaris 9 설치 설명서

finish 스크립트 작성

finish 스크립트란 rules 파일에서 지정하는 사용자 정의 Bourne 셸 스크립트입니다. finish 스크립트는 시스템에 Solaris 소프트웨어가 설치된 뒤 시스템을 재부트하기 전에 작업을 수행합니다. finish 스크립트는 사용자 정의 JumpStart를 사용하여 Solaris를 설치할 때만 사용할 수 있습니다.

finish 스크립트를 사용하여 수행할 수 있는 작업은 다음과 같습니다.

finish 스크립트에 관한 주요 정보

finish 스크립트를 사용하여 파일 추가

finish 스크립트를 사용하여 JumpStart 디렉토리에서 이미 설치된 시스템으로 파일을 추가할 수 있습니다. JumpStart 디렉토리는 SI_CONFIG_DIR 변수에 의해 지정된 디렉토리에 마운트되므로 파일을 추가할 수 있습니다. 디렉토리는 기본적으로 /tmp/install_config로 설정됩니다.


주 –

JumpStart 디렉토리의 파일을 설치된 시스템에 이미 존재하는 파일로 복사하여 파일을 대체할 수도 있습니다.


  1. 설치된 시스템에 추가할 모든 파일을 JumpStart 디렉토리에 복사합니다.

  2. 새로 설치된 파일 시스템 계층에 복사할 각 파일을 위한 finish 스크립트에 다음 행을 삽입합니다.

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

예를 들어, 사이트의 모든 사용자를 위해 개발된 site_prog라는 특수 응용프로그램이 있다고 가정합니다. site_prog 사본을 JumpStart 디렉토리에 배치하면 finish 스크립트의 다음 행이 site_prog를 JumpStart 디렉토리에서 시스템의 /usr/bin 디렉토리로 복사합니다.

cp ${SI_CONFIG_DIR}/site_prog  /a/usr/bin

finish 스크립트를 사용하여 패키지나 패치 추가

Solaris 소프트웨어가 시스템에 설치된 뒤 자동으로 패키지나 패치를 추가하는 finish 스크립트를 작성할 수 있습니다. finish 스크립트를 사용하여 패키지를 추가함으로써 시간을 절약하고 사이트의 서로 다른 시스템들에 설치되는 패키지와 패치의 일관성을 보장할 수 있습니다.

finish 스크립트의 pkgadd(1M) 또는 patchadd(1M) 명령을 사용할 때 - R 옵션을 사용해 /a를 루트 경로로 지정하십시오.


예 24–2 finish 스크립트를 사용하여 패키지 추가

  #!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
  mount -f nfs sherlock:/export/package ${MNT}1
  cat>${ADMIN_FILE} <<DONT_ASK2
  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} SUNWxyz3 
  umount ${MNT}
  rmdir ${MNT}
  1. 설치할 패키지가 포함되어 있는 서버에 디렉토리를 마운트합니다.

  2. 임시 패키지 관리 파일인 admin을 만들어 pkgadd(1M) 명령이 패키지를 설치할 때 체크를 수행하거나 질문을 하지 않도록 하십시오. 패키지를 추가할 때 임시 패키지 관리 파일을 사용하여 자동 설치를 관리합니다.

  3. -a 옵션으로 패키지 관리 파일을 지정하고 -R 옵션으로 루트 경로를 지정하여 패키지를 추가합니다.



예 24–3 finish 스크립트를 사용하여 패치 추가

 #!/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 2.6 SPARC would turn into /foo/5.6/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) 명령을 finish 스크립트 환경에서 pkgaddpatchadd 명령과 함께 사용해야 했습니다. 드물지만 일부 패키지나 패치는 -R 옵션과 함께 작동하지 않습니다. chroot 명령을 내리기 전에 /a 루트 경로에서 임시 /etc/mnttab 파일을 작성해야 합니다.

임시 /etc/mnttab 파일을 작성하려면 다음 행을 finish 스크립트에 추가합니다.

cp /etc/mnttab /a/etc/mnttab

finish 스크립트를 사용하여 루트 환경 사용자 정의

finish 스크립트를 사용하면 이미 시스템에 설치되어 있는 파일을 사용자 정의할 수도 있습니다. 예를 들어, 예 24–4의 finish 스크립트는 루트(/) 디렉토리의 .cshrc 파일에 정보를 추가함으로써 루트 환경을 사용자 정의합니다.


예 24–4 finish 스크립트를 사용하여 루트 환경 사용자 정의

#!/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
}

finish 스크립트를 사용하여 시스템의 루트 암호 설정

Solaris 소프트웨어가 시스템에 설치된 뒤 시스템은 재부트됩니다. 부트 프로세스가 끝나기 전에 시스템은 루트 암호 입력을 요청합니다. 암호를 입력하기 전에는 시스템은 부트를 마칠 수 없습니다.

set_root_pw라는 이름의 finish 스크립트는 auto_install_sample 디렉토리에 저장됩니다. finish 스크립트는 루트 암호 입력 요청을 받지 않고 자동으로 설정하는 방법을 보여줍니다. set_root_pw예 24–5에 표시되어 있습니다.


예 24–5 finish 스크립트를 사용하여 시스템의 루트 암호 설정

	 #!/bin/sh
	 #
	 #       @(#)set_root_pw 1.4 93/12/23 SMI
	 #
	 # This is an example Bourne shell script to be run after installation.
	 # It sets the system's root password to the entry defined in PASSWD.
	 # The encrypted password is obtained from an existing root password entry
	 # in /etc/shadow from an installed machine.
 
	 echo "setting password for root"
 
	 # set the root password
 PASSWD=dKO5IBkSF42lw
	 #create a temporary input file1
 cp /a/etc/shadow /a/etc/shadow.orig2
 
	 mv /a/etc/shadow /a/etc/shadow.orig
 	nawk -F: '{
         if ( $1 == "root" )3
           printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,passwd,$3,$4,$5,$6,$7,$8,$9
      else
		        printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9
      }' passwd="$PASSWD" /a/etc/shadow.orig> /a/etc/shadow
 #remove the temporary file
 rm -f /a/etc/shadow.orig4
 # set the flag so sysidroot won't prompt for the root password
 sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE}> /tmp/state.$$5
  mv /tmp/state.$$ ${SI_SYS_STATE}
  1. 변수 PASSWD를 시스템의 /etc/shadow 파일에 있는 기존 입력 항목에서 얻어진 암호화된 루트 암호로 설정하십시오.

  2. /a/etc/shadow의 임시 입력 파일을 작성하십시오.

  3. $PASSWD를 암호 필드로 사용하여 새로 설치된 시스템의 /etc/shadow 파일에서 루트 항목을 변경합니다.

  4. 임시 /a/etc/shadow 파일을 제거하십시오.

  5. 상태 파일의 입력 항목을 0에서 1로 변경하여 사용자에게 루트 암호 입력 요청을 하지 않도록 하십시오. 상태 파일은 현재 값이 /a/etc/.sysIDtool.state인 변수 SI_SYS_STATE를 사용해 액세스합니다. 스크립트 문제를 방지하려면 값이 변경되는 경우 항상 $SI_SYS_STATE를 사용하여 이 파일을 참조하십시오. 여기에 보이는 sed 명령은 0 뒤와 1 뒤에 탭 문자가 포함되어 있습니다.



주 –

finish 스크립트를 사용하여 시스템의 루트 암호를 설정하면 사용자는 finish 스크립트의 암호화된 암호로부터 루트 암호를 찾아내려고 시도할 것입니다. 루트 암호를 파악하려고 시도하는 사용자에 대비한 보호 조치를 취해야 합니다.


finish 스크립트와 Web Start 설치 프로그램을 사용하여 소프트웨어 설치

finish 스크립트를 사용하여 Solaris 운영 환경이 설치된 뒤 추가 소프트웨어를 설치할 수 있습니다. 일부 소프트웨어 프로그램은 Solaris Web Start 프로그램에 의해 설치되며 설치 과정에서 정보 입력을 요청합니다. 자동 설치를 유지하려면 Solaris Web Start 프로그램을 -nodisplay 또는 -noconsole 옵션과 함께 실행합니다.

표 24–1 Solaris Web Start 옵션

옵션 

설명  

-nodisplay

그래픽 사용자 인터페이스 없이 설치 관리자를 실행합니다. 설치가 -locales 옵션에 의해 수정되지 않으면 기본 제품 설치를 사용합니다.

-noconsole

대화식 텍스트 콘솔 장치 없이 설치를 수행합니다. UNIX 스크립트 사용을 위해 -nodisplay와 함께 실행할 때 유용합니다.

추가 정보는 installer (1M) 설명서 페이지를 참조하십시오.