Solaris 10 10/09 安装指南:自定义 JumpStart 和高级安装

第 5 章 创建自定义规则和探测关键字(任务)

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


注 –

如果您要安装 Solaris ZFS 根池,请参见第 9 章以了解限制和配置文件示例。


探测关键字

要理解什么是探测关键字,首先需要回顾一下什么是规则关键字。规则关键字是一个预定义的词法单元或单词,它说明一般的系统属性,如主机名 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

Procedure创建 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 图形卡是否存在的探测函数和比较函数。


示例 5–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
  if
}

下面的示例 rules 文件显示如何使用前面示例中定义的探测关键字 tcx。如果 TCX 图形卡已安装并在系统中被找到,则运行 profile_tcx。否则,运行 profile


注 –

总是将探测关键字放置在 rules 文件的开头或开头附近。这样,可确保在其他可能依赖于这些探测关键字的规则关键字之前读取和运行这些关键字。



示例 5–2 自定义在 rules 文件中使用的探测关键字

probe tcx
tcx     tcx     -     profile_tcx     -
any     any     -     profile         -

验证 custom_probes 文件

在使用配置文件、rules custom_probes 文件之前,必须运行 check 脚本来验证是否已正确设置这些文件。如果所有的配置文件、规则以及探测函数和比较函数均已正确设置,则创建 rules.okcustom_probes.ok 文件。表 5–1 介绍了 check 脚本的作用。

表 5–1 使用 check 脚本时发生的情况

阶段 

说明 

check 搜索 custom_probes 文件。

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

# version=2 checksum=num

Procedure验证 custom_probes 文件

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


    注 –

    check 脚本位于 Solaris Operating System DVD 或 Solaris Software - 1 CD 上的 Solaris_10/Misc/jumpstart_sample 目录中。


  2. 转到 JumpStart 目录。

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


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

    使用来自平台的 Solaris 软件映像的 check 脚本代替您正在使用的系统中的 check 脚本来验证 custom_probes 文件。path 是本地磁盘或已挂载的 Solaris Operating System DVD 或 Solaris Software - 1 CD 上的映像。

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

    -r file_name

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

    check 脚本运行时,它会报告 rules 文件和 custom_probes 文件以及每个配置文件的有效性。如果没有遇到任何错误,该脚本将报告: “自定义 JumpStart 配置正常”并在 JumpStart 目录中创建 rules.okcustom_probes.ok 文件。

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

    • 如果是,请转至步骤 5

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


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