结束脚本是您在 rules 文件中指定的用户定义的 Bourne shell 脚本。结束脚本在 Solaris 软件安装在系统上之后但在系统重新引导之前执行任务。只有在使用定制 JumpStart 安装 Solaris 时才可以使用结束脚本。
可以使用结束脚本执行的任务包括:
添加文件
添加个别软件包或修补程序,以补充安装在特定软件组中的软件包或修补程序
定制根环境
设置系统的超级用户口令
安装附加软件
Solaris suninstall 程序 将系统的文件系统安装在 /a 上。文件系统保持安装在 /a 上,直到系统重新引导。通过修改与 /a 相对应的文件系统,可以使用结束脚本添加、更改或删除新安装的文件系统结构中的文件。
在安装过程中,结束脚本的输出放置在 /tmp/finish.log 中。安装结束后,该日志文件被重定向到 /var/sadm/system/logs/finish.log。
您可以在自己的结束脚本中使用定制 JumpStart 环境变量。有关环境变量的列表,请参见定制 JumpStart 环境变量。
将结束脚本保存在 JumpStart 目录中。
通过结束脚本,可以将文件从 JumpStart 目录添加到已安装的系统。可以添加文件是因为 JumpStart 目录安装在 SI_CONFIG_DIR 变量指定的目录中。缺省情况下,该目录设置为 /tmp/install_config。
也可以替换文件,方法是将文件从 JumpStart 目录复制到已安装系统中已存在的文件。
把添加到已安装系统的所有文件复制到 JumpStart 目录中。
对于希望复制到新安装的文件系统结构中的每个文件,在结束脚本中插入以下行:
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 显示了添加软件包的结束脚本示例。
#!/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} |
将目录安装在包含要安装的软件包的服务器上。
创建一个临时软件包管理文件 admin,强制使 pkgadd( 1M) 命令在安装软件包时不执行检查或提示问题。当添加软件包时,请使用临时软件包管理文件以便不用干预安装。
添加软件包,使用 -a 选项指定软件包管理文件,使用 -R 选项指定根路径。
以前,chroot( 1M) 命令和结束脚本环境中的 pkgadd 和 patchadd 命令一起使用。在极少数情况下,一些软件包或修补程序无法与 -R 选项一起工作。在发出 chroot 命令前,必须在 /a 根路径中创建一个伪 /etc/mnttab 文件。
要创建伪 /etc/mnttab 文件,请将以下行添加到结束脚本中:
cp /etc/mnttab /a/etc/mnttab
也可以使用结束脚本定制已安装在系统上的文件。例如,实例 24–3 中的结束脚本通过将信息附加到根 (/) 目录中的 .cshrc 文件来定制根环境。
#!/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 中。
#!/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} |
将变量 PASSWD 设置为从系统 /etc/shadow 文件中的现有项获取的加密超级用户口令。
创建 /a/etc/shadow 的临时输入文件。
在 /etc/shadow 文件中更改新安装的系统的超级用户项,使用 $PASSWD 作为口令字段。
删除临时 /a/etc/shadow 文件。
在状态文件中将项从 0 更改为 1,这样将不提示用户输入超级用户口令。状态文件通过变量 SI_SYS_STATE 访问,该变量的当前值为 /a/etc/.sysIDtool.state。为了避免在此值更改时脚本出现问题,请使用 $SI_SYS_STATE 以便始终引用此文件。此处显示的 sed 命令在 0 之后和 1 之后包含一个制表符。
如果使用结束脚本设置系统的超级用户口令,则用户可能会尝试通过结束脚本中的加密口令来发现超级用户口令。确保有相应的措施防止用户试图确定超级用户口令。
安装了 Solaris 操作环境后,可以使用结束脚本来安装附加软件。有些软件程序由 Solaris Web Start 程序安装,在安装期间它会提示您输入信息。要使安装不受干扰,可以使用 -nodisplay 或 -noconsole 选项运行 Solaris Web Start 程序。
表 24–1 Solaris Web Start 选项
选项 |
说明 |
---|---|
-nodisplay |
运行安装程序,但没有图形用户界面。使用缺省产品安装,除非安装已被 -locales 选项修改。 |
-noconsole |
运行安装,但没有任何交互式文本控制台设备。当与 -nodisplay 一起用于 UNIX 脚本时很有用。 |
有关详细信息,请参见手册页 installer (1M)。