本章描述可用于创建附加的定制 JumpStart 安装工具的可选功能。
本章中的说明对于 SPARC 服务器或 x86 服务器都是有效的,这些服务器用于提供定制 JumpStart 文件,称为配置文件服务器。配置文件服务器可以为不同类型的平台提供定制 JumpStart 文件。例如,SPARC 服务器可以为 SPARC 系统和 x86 系统提供定制 JumpStart 文件。
开始脚本是您在 rules 文件中指定的用户定义的 Bourne shell 脚本。开始脚本在 Solaris 软件被安装到系统之前执行任务。只有在使用定制 JumpStart 安装 Solaris 软件时才可以使用开始脚本。
使用开始脚本可以执行以下任务之一:
创建派生配置文件
在升级前备份文件
不要在初始或升级安装期间在开始脚本中指定可能会妨碍文件系统安装到 /a 上的内容。如果 JumpStart 程序无法将文件系统安装到 /a 上,将发生错误且安装失败。
在安装过程中,开始脚本的输出放置在 /tmp/begin.log 中。安装结束后,该日志文件被重定向到 /var/sadm/system/logs/begin.log。
可以在开始脚本中使用定制 JumpStart 环境变量。有关环境变量的列表,请参见定制 JumpStart 环境变量。
将开始脚本保存在 JumpStart 目录中。
派生配置文件是一个由开始脚本在定制 JumpStart 安装期间动态创建的配置文件。当不能设置 rules 文件以使特定的系统与配置文件相匹配时,就需要派生配置文件。例如,可能需要将派生配置文件用于具有不同硬件组件的相同系统型号,如包含不同的帧缓存器的系统。
要设置使用派生配置文件的规则,必须执行以下任务:
当系统匹配一个配置文件字段为等号 (=) 的规则时,开始脚本创建用于在系统上安装 Solaris 软件的派生配置文件。
下面是一个开始脚本的示例,该脚本每次都创建相同的派生配置文件。您可以编写一个开始脚本,根据规则的计算创建不同的派生配置文件。
#!/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} |
在此示例中,开始脚本必须将 SI_PROFILE 环境变量用作派生配置文件的名称,该派生配置文件缺省情况下设为 /tmp/install.input。
如果使用开始脚本来创建派生配置文件,则要确保该脚本没有任何错误。派生配置文件不由 check 脚本验证,这是因为派生配置文件直到开始脚本执行后才创建。
结束脚本是您在 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)。
可以在引导系统时指定定制 JumpStart 配置文件的位置,而不是使用 add_install_client 命令来指定其位置。但是,在发出 boot 命令时只能指定一个文件的名称。因此,必须将所有的定制 JumpStart 配置文件压缩为一个文件。压缩的配置文件可以是以下类型之一:
tar
压缩的 tar
zip
bzip tar
将目录更改到配置文件服务器上的 JumpStart 目录。
# cd jumpstart_dir_path |
使用压缩工具将定制 JumpStart 配置文件压缩为一个文件。
压缩的配置文件不能包含相对路径。定制 JumpStart 配置文件必须与压缩文件位于同一目录中。
压缩的配置文件必须包含以下文件:
配置文件
rules
rules.ok
也可以将 sysidcfg 文件包含在压缩的配置文件中。
将压缩的配置文件保存在 NFS 服务器、HTTP 服务器或本地硬盘中。
下面的示例说明如何使用 tar 命令创建一个名为 config.tar 的压缩配置文件。定制 JumpStart 配置文件位于 /jumpstart 目录中。
# cd /jumpstart # tar -cvf config.tar * a profile 1K a rules 1K a rules.ok 1K a sysidcfg 1K |
本节描述如何创建单磁盘和多磁盘配置文件。磁盘配置文件使您能够从单个系统中使用 pfinstall (1M) 针对不同的磁盘配置测试配置文件。
找到包含要测试的磁盘的 SPARC 系统。
成为超级用户。
将 prtvtoc(1M) 命令的输出重定向到一个文件以创建单磁盘配置文件。
# prtvtoc /dev/rdsk/device_name>disk_config_file |
/dev/rdsk/device_name |
系统磁盘的设备名称。device_name 的形式必须是 cwtxdy s2 或 cxd ys2。 |
disk_config_file |
磁盘配置文件的名称。 |
确定是否在多个磁盘上测试 Solaris 软件的安装。
如果否,则停止。操作完成。
如果是,并置单磁盘配置文件并将输出保存到一个新文件中。
# cat disk_file1 disk_file2>multi_disk_config |
此新文件即成为多磁盘配置文件,如下面的示例所示:
# cat 104_disk2 104_disk3 104_disk5>multi_disk_test |
确定磁盘设备名称中的目标号码在前一个步骤中创建的多磁盘配置文件中是否唯一。
下面的示例显示如何在具有 104 MB 字节磁盘的>SPARC 系统中创建单磁盘配置文件 104_test。
将 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 的系统创建了磁盘配置文件。测试配置文件包含关于使用磁盘配置文件测试配置文件的信息。
成为超级用户。
通过将 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。 |
将 prtvtoc(1M) 命令的输出附加到磁盘配置文件:
# prtvtoc /dev/rdsk/device_name >>disk_config |
/dev/rdsk/device_name |
系统磁盘的设备名称。device_name 的形式必须是 cwtxdy s2 或 cxd ys2。 |
disk_config |
磁盘配置文件的名称。 |
确定是否在多个磁盘上测试 Solaris 软件的安装。
如果否,则停止。操作完成。
如果是,并置单磁盘配置文件并将输出保存到一个新文件中:
# cat disk_file1 disk_file2>multi_disk_config |
此新文件即成为多磁盘配置文件,如下面的示例所示:
# cat 104_disk2 104_disk3 104_disk5>multi_disk_test |
确定磁盘设备名称中的目标号码在前一个步骤中创建的多磁盘配置文件中是否唯一。
下面的示例显示如何在具有 500 MB 磁盘的 x86 系统中创建单磁盘配置文件 500_test。
首先,将 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 的系统创建了磁盘配置文件。测试配置文件包含关于使用磁盘配置文件测试配置文件的信息。
您也可以使用开始脚本和结束脚本创建自己的安装程序来安装 Solaris 软件。
当您在配置文件字段中使用减号 (-) 时,开始脚本和结束脚本(而不是配置文件和 Solaris suninstall 程序)控制 Solaris 软件在系统上的安装方式。
例如,如果下面的规则匹配系统,则 x_install.beg 开始脚本和 x_install.fin 结束脚本将 Solaris 软件安装在名为 clover 的系统上:
hostname clover x_install.beg - x_install.fin |