Solaris 9 12/03 설치 설명서

24장 사용자 정의 JumpStart 옵션 기능 사용(작업)

이 장에서는 별도의 사용자 정의 JumpStart 설치 도구를 만드는 데 사용할 수 있는 옵션 기능에 대해 설명합니다.


주 –

이 장에서는 프로필 서버라는 사용자 정의 JumpStart 파일 제공에 사용되고 있는 SPARC 서버 또는 x86 서버에 대한 정보를 제공합니다. 프로필 서버에서 다른 플랫폼 유형에 대하여 사용자 정의 JumpStart 파일을 제공할 수 있습니다. 예를 들어, SPARC 서버는 SPARC 시스템 및 x86 시스템에 사용자 정의 JumpStart 파일을 제공할 수 있습니다.


begin 스크립트 만들기

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

다음 작업 중 하나를 수행하려면 begin 스크립트를 사용합니다.

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

begin 스크립트를 사용하여 파생된 프로필 만들기

파생된 프로필은 사용자 정의 JumpStart 설치 동안 begin 스크립트에서 동적으로 만든 프로필입니다. 파생된 프로필은 rules 파일이 특정 시스템을 프로필과 비교하도록 설정할 수 없을 때 필요합니다. 예를 들어, 서로 다른 프레임 버퍼를 갖고 있는 시스템들과 같이 상이한 하드웨어 구성 요소를 갖고 있는 동일한 시스템 모델을 위한 파생된 프로필을 사용할 필요가 있습니다.

파생된 프로필을 사용하기 위해 규칙을 설정하려면 다음 작업을 수행해야 합니다.

profile 필드의 값이 등호(=)로 설정된 규칙과 일치하면 begin 스크립트는 Solaris 소프트웨어를 시스템에 설치하는 데 사용되는 파생된 프로필을 만듭니다.

다음은 매번 동일한 파생된 프로필을 만드는 begin 스크립트의 예입니다. 규칙 평가에 따라 달라지는 서로 다른 파생된 프로필을 만들기 위해 begin 스크립트를 만들 수 있습니다.


예 24–1 파생된 프로필을 만드는 begin 스크립트

#!/bin/sh
echo "install_type        initial_install"> ${SI_PROFILE}
echo "system_type         standalone">> ${SI_PROFILE}
echo "partitioning        default">> ${SI_PROFILE}
echo "cluster             SUNWCprog">> ${SI_PROFILE}
echo "package       SUNWman     delete">> ${SI_PROFILE}
echo "package       SUNWolman   delete">> ${SI_PROFILE}
echo "package       SUNWxwman   delete">> ${SI_PROFILE}

보기에서 begin 스크립트는 파생된 프로필의 이름으로 SI_PROFILE 환경 변수를 사용해야 하며 기본적으로 /tmp/install.input으로 설정됩니다.



주 –

파생된 프로필을 만들기 위해 begin 스크립트를 사용하면 해당 스크립트에 어떠한 오류도 없음을 확인해야 합니다. 파생된 프로필은 begin 스크립트 실행 전까지는 생성되지 않기 때문에 파생된 프로필은 check 스크립트에 의해 검증되지 않습니다.


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}
  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}

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



예 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 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) 명령을 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에 표시되어 있습니다.


주 –

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



예 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 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}

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


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) 설명서 페이지를 참조하십시오.

압축된 구성 파일 만들기

add_install_client 명령을 사용하여 사용자 정의 JumpStart 구성 파일의 위치를 지정하는 대신 시스템을 부트할 때의 파일 위치를 지정할 수 있습니다. 하지만 boot 명령을 내릴 때 한 개의 파일 이름만 지정할 수 있습니다. 결과적으로 사용자 정의 JumpStart 구성 파일 모두를 하나의 파일로 압축해야 합니다. 압축된 구성 파일은 다음 유형 중 하나일 수 있습니다.

압축된 구성 파일 만들기

  1. 디렉토리를 프로필 서버의 JumpStart 디렉토리로 변경합니다.


    # cd jumpstart_dir_path
    
  2. 사용자 정의 JumpStart 구성 파일들을 하나의 파일로 압축하려면 압축 도구를 사용합니다.


    주 –

    압축된 구성 파일은 관련 경로를 포함할 수 없습니다. 사용자 정의 JumpStart 구성 파일은 압축된 파일로서 동일한 디렉토리에 있어야 합니다.


    압축된 구성 파일은 다음 파일을 포함해야 합니다.

    • 프로필

    • rules

    • rules.ok

    sysidcfg 파일도 압축된 구성 파일에 포함시킬 수 있습니다.

  3. 압축된 구성 파일을 NFS 서버, HTTP 서버 또는 로컬 하드 디스크에 저장합니다.

압축된 구성 파일의 예

다음은 tar 명령을 사용하여 config.tar라는 이름의 압축된 구성 파일을 만드는 방법을 보여주는 예입니다. 사용자 정의 JumpStart 구성 파일은 /jumpstart 디렉토리에 있습니다.


예 24–6 압축된 구성 파일 만들기


# cd /jumpstart
# tar -cvf config.tar *
a profile 1K
a rules 1K
a rules.ok 1K
a sysidcfg 1K

디스크 구성 파일 만들기

여기에서는 단일 디스크 및 다중 디스크 구성 파일을 만드는 방법에 대해 설명합니다. 디스크 구성 파일은 단일 시스템의 pfinstall(1M)을 사용하여 다른 디스크 구성에 대한 프로필을 테스트할 수 있게 합니다.

SPARC: 디스크 구성 파일을 만들기

  1. 테스트할 디스크가 있는 SPARC 시스템을 찾습니다.

  2. 수퍼유저가 되도록 합니다.

  3. prtvtoc(1M) 명령의 출력을 파일에 리디렉션하여 단일–디스크 구성 파일을 만듭니다.


    # prtvtoc /dev/rdsk/device_name>disk_config_file
    
    /dev/rdsk/device_name

    시스템 디스크의 장치 이름. device_name은 반드시 cwtxdys2 또는 cxdys2 형식이어야 합니다.

    disk_config_file

    디스크 구성 파일 이름.

  4. Solaris 소프트웨어를 여러 개의 디스크에 설치하는 것에 대한 테스트 여부를 결정합니다.

    • 테스트를 원하지 않을 경우 중지합니다. 그렇게 하면 필요한 모든 과정이 완료됩니다.

    • 테스트를 원할 경우 단일 디스크 구성 파일을 연결하고 새 파일에 출력을 저장합니다.


      # cat disk_file1 disk_file2>multi_disk_config
      

      새 파일은 다음 예에서와 같이 다중 디스크 구성 파일이 됩니다.


      # cat 104_disk2 104_disk3 104_disk5>multi_disk_test
      
  5. 디스크 장치 이름의 대상 번호가 이전 단계에서 만든 다중 디스크 구성 파일에서 고유한 이름인지 확인합니다.

    • 고유한 이름인 경우 중지합니다. 그렇게 하면 필요한 모든 과정이 완료됩니다.

    • 고유한 이름이 아닌 경우 텍스트 편집기에서 파일을 열어 대상 번호를 고유한 디스크 장치 이름으로 만듭니다.

      예를 들어, 다음과 같이 서로 다른 디스크 장치 이름에 대해 동일한 대상 번호인 t0이 파일에 포함되어 있다고 가정합니다.

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t0d0s2 partition map

      두 번째 대상 번호를 다음과 같이 t2로 변경합니다.

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t2d0s2 partition map

SPARC: 디스크 구성 파일 예

다음은 104MB 디스크가 장착된 SPARC 시스템에서 단일–디스크 구성 파일인 104_test를 만드는 방법을 보여주는 예입니다.


예 24–7 SPARC: 디스크 구성 파일 만들기

prtvtoc 명령의 출력을 104_test라는 이름의 단일–디스크 구성 파일로 리디렉션합니다.


# prtvtoc /dev/rdsk/c0t3d0s2>104_test

104_test 파일의 내용은 다음과 유사합니다.

* /dev/rdsk/c0t3d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
*      72 sectors/track
*      14 tracks/cylinder
*    1008 sectors/cylinder
*    2038 cylinders*    2036 accessible cylinders
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       1      2    00          0     164304   164303   /
       2      5    00          0    2052288  2052287  
       3      0    00     164304     823536   987839   /disk2/b298
       5      0    00     987840     614880  1602719   /install/298/sparc/work
       7      0    00    1602720     449568  2052287   /space

SPARC 기반 시스템에 대하여 디스크 구성 파일을 만들었습니다. 프로필 테스트는 디스크 구성 파일을 사용한 프로필 테스트 방법에 관한 정보를 포함하고 있습니다.


x86: 디스크 구성 파일 만들기

  1. 테스트할 디스크를 포함하는 x86 기반 시스템을 찾습니다.

  2. 수퍼유저가 되도록 합니다.

  3. fdisk(1M) 명령의 출력을 파일에 저장하여 단일 디스크 구성 파일의 일부를 만듭니다.


    # fdisk -R -W disk_config_file -h /dev/rdsk/device_name
    
    disk_config_file

    디스크 구성 파일의 이름

    /dev/rdsk/device_name

    전체 디스크의 fdisk 레이아웃의 장치 이름. device_name은 반드시 cwtxdyp0 또는 cxdyp0 형식이어야 합니다.

  4. prtvtoc(1M) 명령의 출력을 디스크 구성 파일에 추가합니다.


    # prtvtoc /dev/rdsk/device_name >>disk_config
    
    /dev/rdsk/device_name

    시스템 디스크의 장치 이름. device_name은 반드시 cwtxdys2 또는 cxdys2 형식이어야 합니다.

    disk_config

    디스크 구성 파일의 이름

  5. Solaris 소프트웨어를 여러 개의 디스크에 설치하는 것에 대한 테스트 여부를 결정합니다.

    • 테스트를 원하지 않을 경우 중지합니다. 완료되었습니다.

    • 테스트를 원할 경우 단일 디스크 구성 파일을 연결하고 새 파일에 출력을 저장합니다.


      # cat disk_file1 disk_file2>multi_disk_config
      

      새 파일은 다음 예에서와 같이 다중 디스크 구성 파일이 됩니다.


      # cat 104_disk2 104_disk3 104_disk5>multi_disk_test
      
  6. 디스크 장치 이름의 대상 번호가 이전 단계에서 만든 다중 디스크 구성 파일에서 고유한 이름인지 확인합니다.

    • 고유한 이름인 경우 중지합니다. 그렇게 하면 필요한 모든 과정이 완료됩니다.

    • 고유한 이름이 아닌 경우 텍스트 편집기에서 파일을 열어 대상 번호를 고유하게 만듭니다.

      예를 들어, 파일이 서로 다른 디스크 장치 이름에 동일한 대상 번호인 t0을 포함한다고 가정합니다.

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t0d0s2 partition map

      두 번째 대상 번호를 다음과 같이 t2로 변경합니다.

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t2d0s2 partition map

x86: 디스크 구성 파일의 예

다음은 단일 디스크 구성 파일, 500_test를 500MB 디스크를 포함하는 x86 시스템에 만드는 방법을 보여주는 예입니다.


예 24–8 x86: 디스크 구성 파일 만들기

먼저 다음과 같이 fdisk 명령의 출력을 이름이 500_test인 파일에 저장합니다.


# fdisk -R -W 500_test -h /dev/rdsk/c0t0d0p0

500_test 파일이 다음과 같습니다.

 * /dev/rdsk/c0t0d0p0 default fdisk table
* Dimensions:
*     512 bytes/sector
*      94 sectors/track
*      15 tracks/cylinder
*    1455 cylinders
*
*  HBA Dimensions:
*     512 bytes/sector
*      94 sectors/track
*      15 tracks/cylinder
*    1455 cylinders
*
* systid:
*  1:    DOSOS12
*  2:    PCIXOS
*  4:    DOSOS16
*  5:    EXTDOS
*  6:    DOSBIG
*  86:   DOSDATA
*  98:   OTHEROS
*  99:   UNIXOS
* 130:   SUNIXOS
*
* Id  Act Bhead Bsect   Bcyl  Ehead  Esect  Ecyl Rsect  Numsect
 130  128 44    3       0     46    30     1001 1410   2050140

두 번째로, prtvtoc 명령의 출력을 500_test 파일에 추가합니다.


# prtvtoc /dev/rdsk/c0t0d0s2>>500_test

이제 500_test 파일이 완전한 디스크 구성 파일입니다.

* /dev/rdsk/c0t0d0p0 default fdisk table	
* Dimensions:
*     512 bytes/sector
*      94 sectors/track
*      15 tracks/cylinder
*    1455 cylinders
*
*  HBA Dimensions:
*     512 bytes/sector
*      94 sectors/track
*      15 tracks/cylinder
*    1455 cylinders
*
* systid:
*  1:    DOSOS12
*  2:    PCIXOS
*  4:    DOSOS16
*  5:    EXTDOS
*  6:    DOSBIG
*  86:   DOSDATA
*  98:   OTHEROS
*  99:   UNIXOS
*  130:  SUNIXOS
*
* Id  Act Bhead Bsect Bcyl  Ehead  Esec  Ecyl Rsect  Numsect
 130  128 44    3     0     46    30    1001 1410   2050140
* /dev/rdsk/c0t0d0s2 partition map
*
* Dimensions:
*      512 bytes/sector
*       94 sectors/track
*       15 tracks/cylinder
*     1110 sectors/cylinder
*     1454 cylinders
*     1452 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*                          First    Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       2      5    01       1410   2045910   2047319
       7      6    00       4230   2043090   2047319  /space
       8      1    01          0      1410     1409
       9      9    01       1410      2820     422987

x86 기반 시스템에 대하여 디스크 구성 파일을 만들었습니다. 프로필 테스트는 디스크 구성 파일을 사용한 프로필 테스트 방법에 관한 정보를 포함하고 있습니다.


사이트별 설치 프로그램 사용

begin 및 finish 스크립트를 사용하여 사용자 고유의 Solaris 소프트웨어 설치 프로그램을 만들 수 있습니다.

프로필 필드에서 마이너스 기호(-)를 지정하면 프로필 및 Solaris suninstall 프로그램 대신 begin 및 finish 스크립트가 시스템에서의 Solaris 소프트웨어 설치 방법을 제어합니다.

예를 들어, 다음 규칙이 시스템에 적용되면 x_install.beg begin 스크립트 및 x_install.fin finish 스크립트는 Solaris 소프트웨어를 clover라는 이름의 시스템에 설치합니다.

hostname clover x_install.beg - x_install.fin