Solaris 9 安裝指南

第 25章 建立自訂規則與探測關鍵字(工作)

本章提供建立屬於您的自訂規則與探測關鍵字之資訊以及程序。

探測關鍵字

若要瞭解何謂探測關鍵字,您首先必須先回顧何謂規則關鍵字。規則關鍵字為預先定義的詞彙單元或文字,其說明一般的系統屬性,像是主機名稱 hostname ,或記憶體大小 memsize。規則關鍵字以及與其相關聯的值,可以讓您比對擁有相同屬性的系統和設定檔。系統屬性的比對會定義要如何將 Solaris 軟體安裝在群組中的每一個系統中。

自訂 JumpStart 環境變數(用於開始和結束程序檔中)會依照需要進行設定。例如,已安裝於系統中的作業系統之相關資訊,只能使用 installed 規則關鍵字在 SI_INSTALLED 中找到。

在某些情況下,您也可能不是因為要比對系統和執行設定檔,而在開始或結束程序檔中擷取相同資訊。探測關鍵字提供了解決方案。探測關鍵字擷取屬性資訊,讓您免去設定比對條件以及執行設定檔的需要。

若要獲得探測關鍵字與值的清單,請參閱探測關鍵字和值

建立 custom_probes 檔案

如果 規則關鍵字和值 以及 探測關鍵字和值 中規則與探測關鍵字說明不夠清楚、無法解決您的需求,您可以建立 custom_probes 檔來定義屬於自己的自訂規則或探測關鍵字。

custom_probes 檔為包含兩種類型函式的 Bourne shell 程序檔。您必須將 custom_probes 檔儲存在與 JumpStart 相同的目錄中,也就是您儲存 rules 檔的地方。下面是這兩種能夠定義於 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 檔案儲存在 rules 檔旁邊的 JumpStart 目錄中。

  4. 確定 root 中含有 rules 檔案,且許可權已設為 644。

custom_probes 檔與關鍵字的範例

您可以在下列的目錄中尋找附加的探測與比較函式範例:

下列 custom_probes 檔包含測試 TCX 圖形卡是否存在的探測與比較函式。


範例 25–1 custom_probes File

#!/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 檔案

在您能夠使用設定檔、rules 以及 custom_probes 檔之前,您必須執行 check 程序檔來驗證是否已正確設定該檔案。若是已正確地設定所有的設定檔、規則以及探測與比較函式,便會建立 rules.ok 以及custom_probes.ok 檔。表 25–1 將說明 check 程序檔的功能。

表 25–1 使用 check 程序檔的情況

階段 

說明 

check 會搜尋 custom_probes 檔。

如果該檔案存在,check 則會從 custom_probes 檔建立 custom_probes.ok 檔,並移除所有的註釋與空白行,而保留所有 Bourne shell 指令、變數與演算法。然後,check 便會在結尾處增加下列的註釋行:

# version=2 checksum=num

驗證 custom_probes 檔案

  1. 檢驗 check 程序檔是否位於 JumpStart 目錄中。


    註解 –

    check 程序檔是位於 Solaris 9 DVD 或是 Solaris 9 Software 1 of 2 CD 的 Solaris_9/Misc/jumpstart_sample 目錄中。


  2. 變更至 JumpStart 目錄。

  3. 執行 check 程序檔以驗證 rules 以及 custom_probes 檔案。


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

    驗證 custom_probes 檔案,要使用平台的 Solaris 9 軟體影像之 check 程序檔,而不是使用您正在用的系統之 check 程序檔。 path 是本機磁碟、裝載的 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 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。