Oracle® Solaris 11.2 시스템 설치

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

처음 부트 시 실행할 스크립트 만들기

스크립트에 사용할 수 있는 소스를 알려면 처음 부트 시 클라이언트 시스템에 설치된 도구를 알아야 합니다. solaris-large-server 패키지가 기본적으로 설치됩니다. 해당 그룹 패키지를 설치한 경우 Python, bash, ksh 및 기타 처음 부트 시 사용 가능한 도구가 제공됩니다. solaris-large-server 그룹 패키지에 포함된 전체 패키지 목록을 보려면 Oracle Solaris 11.2의 소프트웨어 추가 및 업데이트 의 그룹 패키지의 설치 가능한 모든 패키지 나열에 설명된 대로 pkg contents 명령을 사용하십시오. solaris-large-server 패키지에 제공되지 않은 스크립트의 소스를 사용하려면 필요한 패키지를 식별하고 AI 매니페스트에 지정하십시오. 설치할 다른 패키지의 이름을 찾는 방법은 Oracle Solaris 11.2의 소프트웨어 추가 및 업데이트 를 참조하십시오.


팁  - 
  • 여러 스크립트의 여러 명령이 서로 충돌하는 것을 피하려면 처음 부트 스크립트를 하나만 사용하십시오.
  • 처음 부트 스크립트로 재부트하지 마십시오.

예 13-1  템플리트 처음 부트 스크립트

    이 예는 처음 부트 스크립트에서 수행할 작업을 보여줍니다.

  • SMF 메소드 종료 코드와 같은 정의를 사용하려면 처음 부트 스크립트가 /lib/svc/share/smf_include.sh를 로드해야 합니다.

  • 스크립트가 이전 부트 시 이미 실행되었는지 여부를 테스트해야 합니다. completed 등록 정보가 이미 true로 설정된 경우 start 메소드를 종료하고 서비스를 일시적으로 사용 안함으로 설정합니다.

    스크립트의 다음 라인은 site/first-boot-script-svc:default 서비스 인스턴스에서 config 등록 정보 그룹의 completed 등록 정보 값을 가져와서 로컬 completed 변수에 지정합니다.

    completed=`svcprop -p config/completed site/first-boot-script-svc:default`

    스크립트의 다음 라인은 SMF_EXIT_TEMP_DISABLE 종료 코드를 서비스 start 메소드로 보냅니다. 단문 종료 이유로 method_completed, 장문 종료 이유로 "Configuration completed"를 함께 사용합니다.

    smf_method_exit $SMF_EXIT_TEMP_DISABLE script_completed "Configuration completed"
  • 처음 부트 스크립트가 방금 AI 설치에서 만든 부트 환경(BE)의 복사본을 저장해야 합니다. 처음 부트 스크립트를 수정하기 전에 BE의 복사본을 저장하면, 저장된 BE로 부트하면서 스크립트에서 소개된 문제를 쉽게 복구할 수 있습니다.

  • 스크립트가 작업을 마치면 completed 등록 정보 값을 true로 설정하고, 새 등록 정보 값으로 서비스를 새로 고치고, start 메소드를 종료하고, 서비스를 일시적으로 사용 안함으로 설정해야 합니다. svccfg 명령을 사용하여 completed 등록 정보를 true로 설정하고 svcadm 명령을 사용하여 서비스를 새로 고칩니다.

기본적으로 shksh93임을 잊지 마십시오.

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=

$(svcprop -p config/completed site/first-boot-script-svc:default

)
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=

$(beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'

)
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Place your one-time configuration tasks here

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

팁  - 스크립트의 구문 오류를 확인하려면 –n 옵션을 사용합니다.
$ ksh -n first-boot-script.sh

예 13-2  다중 IP 인터페이스를 구성하는 처음 부트 스크립트

이 예제에서는 두 IP 인터페이스에 주소를 구성하고 기본 경로를 추가하는 first-boot-script.sh라는 처음 부트 스크립트를 보여줍니다.

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=`svcprop -p config/completed site/first-boot-script-svc:default`
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'`
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Create and configure addresses on two IP interfaces
/usr/sbin/ipadm create-ip net0
/usr/sbin/ipadm create-ip net1
/usr/sbin/ipadm create-addr -a 10.153.125.222/24 net0
/usr/sbin/ipadm create-addr -a 169.254.182.77/24 net1

# Add a default route with net0 as the gateway
/usr/sbin/route add default 10.153.125.1 -ifp net0

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

처음 부트 스크립트의 또 다른 용도는 useradd 명령을 사용하여 시스템에서 여러 초기 사용자를 구성하는 것입니다.