Solaris 9 安装指南

第 25 章 创建定制规则和探测关键字(任务)

本章提供创建您自己的定制规则和探测关键字的信息和步骤。

探测关键字

要理解什么是探测关键字,首先需要回顾一下什么是规则关键字。规则关键字是一个预定义的词法单元或单词,它描述一般的系统属性,如主机名 hostname 或内存大小 memsize。规则关键字和它们的关联值使您能够将一个具有相同属性的系统与一个配置文件匹配。这种系统属性的匹配定义了如何在组中的每个系统上安装 Solaris 软件。

在开始脚本和结束脚本中使用的定制 JumpStart 环境变量是根据需要进行设置的。例如,只有使用了 installed 规则关键字之后,有关系统上已安装的操作系统的信息才可以在 SI_INSTALLED 中使用。

在某些情况下,出于匹配系统和运行配置文件以外的目的,您可能需要在开始或结束脚本中提取同样的信息。探测关键字提供了解决方法。探测关键字提取属性信息并消除了设置匹配条件和运行配置文件的需要。

有关探测关键字和值的列表,请参见“探测关键字和值”

创建 custom_probes 文件

如果 “规则关键字和值”“探测关键字和值” 中描述的规则和探测关键字的精确度不能满足您的需要,您可以通过创建 custom_probes 文件来定义您自己的定制规则或探测关键字。

custom_probes 文件是一个 Bourne shell 脚本,它包含两种函数。您必须将 custom_probes 文件保存在保存了 rules 文件的同一 JumpStart 目录中。您可以在 custom_probes 文件中定义的两种函数如下:

custom_probes 文件的语法

custom_probes 文件可以包含任何有效的 Bourne shell 命令、变量或算法。


注意:

您可以在 custom_probes 文件中定义需要单个变量的探测和比较函数。当您在 rules 文件中使用相应的定制探测关键字时,关键字后面的变量将被解释(为 $1)。

当您在 rules 文件中使用相应的定制规则关键字时,该变量在关键字之后被解释为起始,在下一个 && 或开始脚本(以先出现的为准)之前被解释为终止。


custom_probes 文件必须符合以下要求:

为提高明确性和改善结构,请首先在文件的顶部定义所有的探测函数,后跟所有的比较函数。

custom_probes 中的函数名称的语法

探测函数的名称必须以 probe_ 开头。比较函数的名称必须以 cmp_ 开头。

probe_ 开头的函数定义新的探测关键字。例如,函数 probe_tcx 定义新的探测关键字 tcx。以 cmp_ 开头的函数定义新的规则关键字。例如,cmp_tcx 定义新的规则关键字 tcx

创建 custom_probes 文件

  1. 使用文本编辑器创建 Bourne shell 脚本文本文件。将该文件命名为 custom_probes

  2. custom_probes 文本文件中,定义您的探测和比较函数。


    注意:

    您可以在 custom_probes 文件中定义需要变量的探测和比较函数。当您在 rules 文件中使用相应的定制探测关键字时,关键字后面的变量将依次被解释(为 $1、$2 ... 以此类推)。

    当您在 rules 文件中使用相应的定制规则关键字时,关键字之后和下一个 && 或开始脚本(以先出现的为准)之前的变量被依次解释。


  3. custom_probes 文件保存在 JumpStart 目录中的 rules 文件旁边。

  4. 确保 root 拥有 rules 文件,并且权限设置为 644。

custom_probes 文件和关键字的示例

在以下目录中可以找到探测和比较函数的其它示例:

下面的 custom_probes 文件包含测试 TCX 图形卡是否存在的探测和比较函数。


实例 25–1 custom_probes 文件

#!/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 文件的开头或接近开头的位置,以确保能够在其它可能依赖这些探测关键字的规则关键字之前读取和运行这些关键字。



实例 25–2 定制 rules 文件中使用的探测关键字

probe tcx

tcx     tcx     -     profile_tcx     -

any     any     -     profile         -

验证 custom_probes 文件

在可以使用配置文件(rulescustom_probes 文件)之前,必须运行 check 脚本来验证是否已正确安装了这些文件。如果所有的配置文件、规则以及探测和比较函数均已正确安装,则创建 rules.okcustom_probes.ok 文件。表 25–1 描述了 check 脚本所进行的操作。

表 25–1 使用 check 脚本时发生的事情

阶段 

说明 

check 搜索 custom_probes 文件。

如果该文件存在,则 checkcustom_probes 文件创建 custom_probes.ok 文件、删除所有的注释行和空白行,并保留所有的 Bourne shell 命令、变量和算法。然后,check 在结尾添加以下注释行:

# version=2 checksum=num

验证 custom_probes 文件

  1. 验证 check 脚本是否位于 JumpStart 目录中。


    注意:

    check 脚本位于 Solaris 9 DVD 或 Solaris 9 Software 1 (1 of 2) CD 上的 Solaris_9/Misc/jumpstart_sample 目录中。


  2. 更改到 JumpStart 目录。

  3. 运行 check 脚本来验证 rulescustom_probes 文件。


    $ ./check [[-p path -r file_name]]

    -p 路径

    使用来自平台的 Solaris 9 软件映像的 check 脚本而不是来自您使用的系统的 check 脚本来验证 custom_probes 文件。路径 是本地磁盘或已安装的 Solaris 9 DVD 或 Solaris 9 Software 1 (1 of 2) CD 上的映像。

    如果您的系统正在运行早期版本的 Solaris,则使用此选项来运行最新版本的 check

    -r file_name

    指定一个文件名(名称 custom_probes 除外)。通过使用 -r 选项,可以在将一组函数集成到 custom_probes 文件中之前验证这些函数的有效性。

    check 脚本运行时,该脚本将报告 rulescustom_probes 文件以及每个配置文件的有效性。如果没有遇到任何错误,则该脚本将报告:“定制 JumpStart 配置没有问题”并在 JumpStart 目录中创建 rules.okcustom_probes.ok 文件。

  4. 确定 custom_probes.ok 文件是否为可执行文件。

    • 如果是,请转到 步骤 5

    • 如果不是,请键入以下命令:

      chmod +x custom_probes

  5. 确保 root 拥有 custom_probes.ok 文件,并且权限设置为 755。