Solaris 10 10/09 安裝指南:自訂 JumpStart 進階安裝

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

本章將介紹建立您自己的自訂規則關鍵字和探測關鍵字的有關資訊和程序。


備註 –

如果您將要安裝 Solaris ZFS 根池,請參閱第 9 章使用 JumpStart 安裝 ZFS 根池,以取得限制和設定檔範例。


探測關鍵字

若要理解何謂探測關鍵字,需要先回顧何謂規則關鍵字。規則關鍵字是指預先定義的詞彙單元或文字,用於說明一般系統屬性,例如主機名稱 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.ok 檔案和 custom_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 程序檔驗證 custom_probes 檔案,而不要使用系統的 check 程序檔。path 是本機磁碟、或已掛載 Solaris Operating System DVD 或 Solaris Software - 1 CD 上的影像。

    如果您的系統目前執行的是舊版的 Solaris,您可以使用此選項來執行最新版的 check

    -r file_name

    指定一個與 custom_probes 檔名不相同的檔案名稱。將函式整合至 custom_probes 檔案之前,您可以先使用 -r 選項測試函式集合的有效性。

    check 程序檔執行時,此程序檔會報告 rulescustom_probes 檔案以及各個設定檔的有效性。如果沒有發生任何錯誤,程序檔會報告: 「自訂 JumpStart 配置正確」,並在 JumpStart 目錄中建立 rules.ok 檔案和 custom_probes.ok 檔案。

  4. 確定 custom_probes.ok 檔案是否可以執行。

    • 如果可以,請跳至 步驟 5

    • 如果不可以,請鍵入以下指令:


      # chmod +x custom_probes
      
  5. 確保 root 包含 custom_probes.ok 檔案,並且權限設定為 755。