Solaris 9 安装指南

创建结束脚本

结束脚本是您在 rules 文件中指定的用户定义的 Bourne shell 脚本。结束脚本在 Solaris 软件安装在系统上之后但在系统重新引导之前执行任务。只有在使用定制 JumpStart 安装 Solaris 时才可以使用结束脚本。

可以使用结束脚本执行的任务包括:

关于结束脚本的重要信息

使用结束脚本添加文件

通过结束脚本,可以将文件从 JumpStart 目录添加到已安装的系统。可以添加文件是因为 JumpStart 目录安装在 SI_CONFIG_DIR 变量指定的目录中。缺省情况下,该目录设置为 /tmp/install_config


注意:

也可以替换文件,方法是将文件从 JumpStart 目录复制到已安装系统中已存在的文件。


  1. 把添加到已安装系统的所有文件复制到 JumpStart 目录中。

  2. 对于希望复制到新安装的文件系统结构中的每个文件,在结束脚本中插入以下行:

    cp ${SI_CONFIG_DIR}/file_name /a/path_name
    

例如,假设您有一个为站点上所有用户开发的特殊应用程序 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 指定为根路径。

实例 24–2 显示了添加软件包的结束脚本示例。


实例 24–2 使用结束脚本添加软件包

  #!/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 选项指定根路径。



注意:

以前,chroot( 1M) 命令和结束脚本环境中的 pkgaddpatchadd 命令一起使用。在极少数情况下,一些软件包或修补程序无法与 -R 选项一起工作。在发出 chroot 命令前,必须在 /a 根路径中创建一个伪 /etc/mnttab 文件。

要创建伪 /etc/mnttab 文件,请将以下行添加到结束脚本中:

cp /etc/mnttab /a/etc/mnttab

使用结束脚本定制根环境

也可以使用结束脚本定制已安装在系统上的文件。例如,实例 24–3 中的结束脚本通过将信息附加到根 (/) 目录中的 .cshrc 文件来定制根环境。


实例 24–3 使用结束脚本定制根环境

#!/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 显示在 实例 24–4 中。


实例 24–4 使用结束脚本设置系统的超级用户口令

	 #!/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. /etc/shadow 文件中更改新安装的系统的超级用户项,使用 $PASSWD 作为口令字段。

  4. 删除临时 /a/etc/shadow 文件。

  5. 在状态文件中将项从 0 更改为 1,这样将不提示用户输入超级用户口令。状态文件通过变量 SI_SYS_STATE 访问,该变量的当前值为 /a/etc/.sysIDtool.state。为了避免在此值更改时脚本出现问题,请使用 $SI_SYS_STATE 以便始终引用此文件。此处显示的 sed 命令在 0 之后和 1 之后包含一个制表符。



注意:

如果使用结束脚本设置系统的超级用户口令,则用户可能会尝试通过结束脚本中的加密口令来发现超级用户口令。确保有相应的措施防止用户试图确定超级用户口令。


使用结束脚本与 Web Start 安装程序一起安装软件

安装了 Solaris 操作环境后,可以使用结束脚本来安装附加软件。有些软件程序由 Solaris Web Start 程序安装,在安装期间它会提示您输入信息。要使安装不受干扰,可以使用 -nodisplay-noconsole 选项运行 Solaris Web Start 程序。

表 24–1 Solaris Web Start 选项

选项 

说明 

-nodisplay

运行安装程序,但没有图形用户界面。使用缺省产品安装,除非安装已被 -locales 选项修改。

-noconsole

运行安装,但没有任何交互式文本控制台设备。当与 -nodisplay 一起用于 UNIX 脚本时很有用。

有关详细信息,请参见手册页 installer (1M)