Solaris 10 6/06 설치 설명서: 사용자 정의 JumpStart 및 고급 설치

종료 스크립트 만들기

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

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

종료 스크립트에 관한 주요 정보

Procedure종료 스크립트를 사용하여 파일 추가

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


주 –

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


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

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

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

예 7–2 종료 스크립트를 사용하여 파일 추가

예를 들어, 사이트의 모든 사용자를 위해 개발된 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를 루트 경로로 지정합니다.


예 7–3 종료 스크립트를 사용하여 패키지 추가

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

다음에서는 이 예의 일부 명령어에 대해 설명합니다.



예 7–4 종료 스크립트를 사용하여 패치 추가

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

가상 /etc/mnttab 파일을 만들려면 종료 스크립트에 다음 행을 추가합니다.

cp /etc/mnttab /a/etc/mnttab

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

종료 스크립트를 사용하여 이미 시스템에 설치된 파일을 사용자 정의할 수도 있습니다. 예를 들어 예 7–5의 종료 스크립트는 루트(/) 디렉토리의 .cshrc 파일에 정보를 추가하여 루트 환경을 사용자 정의합니다.


예 7–5 종료 스크립트를 사용하여 루트 환경 사용자 정의

#!/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 소프트웨어가 시스템에 설치된 후 시스템이 재부트됩니다. 부트 프로세스가 끝나기 전에 시스템은 루트 비밀번호 입력을 요청합니다. 비밀번호를 입력하기 전에는 시스템은 부트를 마칠 수 없습니다.

set_root_pw라는 이름의 종료 스크립트는 auto_install_sample 디렉토리에 저장됩니다. 종료 스크립트는 루트 비밀번호 입력 요청을 받지 않고 자동으로 설정하는 방법을 보여 줍니다. set_root_pw예 7–6에 나와 있습니다.


주 –

종료 스크립트를 사용하여 시스템의 루트 비밀번호를 설정한 경우 사용자가 종료 스크립트에 있는 암호화된 비밀번호에서 루트 비밀번호를 알아내려 할 수 있습니다. 루트 비밀번호를 파악하려고 시도하는 사용자에 대비한 보호 조치를 취해야 합니다.



예 7–6 종료 스크립트를 사용하여 시스템의 루트 비밀번호 설정

	 #!/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 file
 cp /a/etc/shadow /a/etc/shadow.orig
 
	 mv /a/etc/shadow /a/etc/shadow.orig
 	nawk -F: '{
         if ( $1 == "root" )
           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.orig
 # set the flag so sysidroot won't prompt for the root password
 sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$
  mv /tmp/state.$$ ${SI_SYS_STATE}

다음은 이 예의 일부 명령어에 대해 설명합니다.


종료 스크립트를 사용하여 비대화식 설치

종료 스크립트를 사용하여 Solaris OS가 설치된 뒤 추가 소프트웨어를 설치할 수 있습니다. Solaris 설치 프로그램 은 설치하는 동안 정보를 입력하라는 메시지를 표시합니다. 자동 설치를 유지하려면 Solaris 설치 프로그램 를 -nodisplay 또는 -noconsole 옵션과 함께 실행하면 됩니다.

표 7–1 Solaris 설치 옵션

옵션 

설명 

-nodisplay

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

-noconsole

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

추가 정보는 installer(1M)매뉴얼 페이지를 참조하십시오.