如果规则关键字和值 和探测关键字和值中说明的规则和探测关键字的精确度不能满足您的需要,您可以通过创建 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 DVD 或 Solaris 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 - |