本章提供创建您自己的定制规则和探测关键字的信息和步骤。
要理解什么是探测关键字,首先需要回顾一下什么是规则关键字。规则关键字是一个预定义的词法单元或单词,它描述一般的系统属性,如主机名 hostname 或内存大小 memsize。规则关键字和它们的关联值使您能够将一个具有相同属性的系统与一个配置文件匹配。这种系统属性的匹配定义了如何在组中的每个系统上安装 Solaris 软件。
在开始脚本和结束脚本中使用的定制 JumpStart 环境变量是根据需要进行设置的。例如,只有使用了 installed 规则关键字之后,SI_INSTALLED 中才会提供有关系统上已安装的操作系统的信息。
在某些情况下,出于匹配系统和运行配置文件以外的目的,您可能需要在开始或结束脚本中提取同样的信息。探测关键字提供了解决方法。探测关键字提取属性信息并消除了设置匹配条件和运行配置文件的需要。
有关探测关键字和值的列表,请参见探测关键字和值。
如果规则关键字和值和探测关键字和值中描述的规则和探测关键字的精确度不能满足您的需要,您可以通过创建 custom_probes 文件来定义自己的定制规则或探测关键字。
custom_probes 文件是一个 Bourne shell 脚本,它包含两种函数。您必须将 custom_probes 文件保存在保存了 rules 文件的同一 JumpStart 目录中。您可以在 custom_probes 文件中定义的两种函数如下:
探测函数 – 收集您需要的信息,或者进行实际的工作并设置您定义的相应 SI_ 环境变量。探测函数成为探测关键字。
比较函数 – 调用相应的探测函数,比较探测函数的输出。如果关键字匹配则返回 0,如果关键字不匹配则返回 1。比较函数成为规则关键字。
custom_probes 文件可以包含任何有效的 Bourne shell 命令、变量或算法。
您可以在 custom_probes 文件中定义需要单个变量的探测函数和比较函数。当您在 rules 文件中使用相应的定制探测关键字时,关键字后面的变量将被解释(为 $1)。
当您在 rules 文件中使用相应的定制规则关键字时,该变量在关键字之后被解释为起始,在下一个 && 或开始脚本(以先出现的为准)之前被解释为终止。
为提高明确性和改善结构,请首先在文件的顶部定义所有的探测函数,然后再定义所有的比较函数。
探测函数的名称必须以 probe_ 开头。比较函数的名称必须以 cmp_ 开头。
以 probe_ 开头的函数定义新的探测关键字。例如,函数 probe_tcx 定义新的探测关键字 tcx。以 cmp_ 开头的函数定义新的规则关键字。例如,cmp_tcx 定义新的规则关键字 tcx。
使用文本编辑器创建 Bourne shell 脚本文本文件。将该文件命名为 custom_probes。
在 custom_probes 文本文件中,定义您的探测函数和比较函数。
您可以在 custom_probes 文件中定义需要变量的探测函数和比较函数。当您在 rules 文件中使用相应的定制探测关键字时,关键字后面的变量将依次被解释(为 $1、$2 ... 以此类推)。
当您在 rules 文件中使用相应的定制规则关键字时,关键字之后和下一个 && 或开始脚本(以先出现的为准)之前的变量被依次解释。
将 custom_probes 文件保存在 JumpStart 目录中的 rules 文件旁边。
确保 root 拥有 rules 文件,并且权限设置为 644。
在以下目录中可以找到探测函数和比较函数的其它示例:
/usr/sbin/install.d/chkprobe(在安装了 Solaris 软件的系统上)
/Solaris_9/Tools/Boot/usr/sbin/install.d/chkprobe (在 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 CD 上)
下面的 custom_probes 文件包含测试 TCX 图形卡是否存在的探测函数和比较函数。
#!/bin/sh # # custom_probe script to test for the presence of a TCX graphics card. # # # PROBE FUNCTIONS # probe_tcx() { SI_TCX=`modinfo | grep tcx | nawk '{print $6}'` export SI_TCX } # # COMPARISON FUNCTIONS # cmp_tcx() { probe_tcx if [ "X${SI_TCX}" = "X${1}" ]; then return 0 else return 1 fi } |
下面的示例 rules 文件显示如何使用前面的示例中定义的探测关键字 tcx。如果 TCX 图形卡已安装并在系统中被找到,则运行 profile_tcx。否则,运行 profile。
始终将探测关键字放在 rules 文件的开头或接近开头的位置,以确保能够在其它可能依赖这些探测关键字的规则关键字之前读取和运行这些关键字。
probe tcx tcx tcx - profile_tcx - any any - profile - |
在使用配置文件(rules 和 custom_probes 文件)之前,必须先运行 check 脚本来验证是否已正确安装了这些文件。如果所有的配置文件、规则以及探测函数和比较函数均已正确安装,则创建 rules.ok 和 custom_probes.ok 文件。表 25–1 描述了 check 脚本所进行的操作。
表 25–1 使用 check 脚本时发生的事情
阶段 |
说明 |
---|---|
1 |
check 搜索 custom_probes 文件。 |
2 |
如果该文件存在,则 check 从 custom_probes 文件创建 custom_probes.ok 文件,删除所有的注释行和空白行,并保留所有的 Bourne shell 命令、变量和算法。然后,check 在结尾处添加以下注释行: # version=2 checksum=num |
验证 check 脚本是否位于 JumpStart 目录中。
check 脚本位于 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 CD 上的 Solaris_9/Misc/jumpstart_sample 目录中。
运行 check 脚本来验证 rules 和 custom_probes 文件。
$ ./check [[-p path -r file_name]] |
使用来自平台的 Solaris 9 软件映像的 check 脚本而不是来自您使用的系统的 check 脚本来验证 custom_probes 文件。path 是本地磁盘上或已安装的 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 CD 上的映像。 如果您的系统正在运行早期版本的 Solaris,则使用此选项运行最近版本的 check。 |
|
指定一个文件名(名称 custom_probes 除外)。通过使用 -r 选项,可以在将一组函数集成到 custom_probes 文件中之前验证这些函数的有效性。 |
当 check 脚本运行时,该脚本报告 rules 和 custom_probes 文件以及每个配置文件的有效性。如果没有遇到任何错误,则该脚本将报告:“定制 JumpStart 配置没有问题”并在 JumpStart 目录中创建 rules.ok 和 custom_probes.ok 文件。
确定 custom_probes.ok 文件是否为可执行文件。
如果是,请转到步骤 5。
如果不是,请键入以下命令:
chmod +x custom_probes
确保 root 拥有 custom_probes.ok 文件,并且权限设置为 755。