本章提供建立屬於您的自訂規則與探測關鍵字之資訊以及程序。
如果要瞭解何為探測關鍵字,您首先必須先回顧規則關鍵字。規則關鍵字為預先定義的詞彙單元或文字,說明一般的系統屬性,例如主機名稱 hostname 或記憶體大小 memsize。規則關鍵字以及與其相關聯的值可讓您比對擁有相同屬性的系統和設定檔。系統屬性的比對會定義要如何將 Solaris 軟體安裝在群組中的每一個系統上。
自訂 JumpStart 環境變數(用在開始和結束程序檔中)會依照需要進行設定。例如,有關已安裝於系統中的作業系統之資訊,只能使用 installed 規則關鍵字,然後在 SI_INSTALLED 中找到。
在某些情況下,也可能因為要與系統相符和執行設定檔之外的原因,而在開始或結束程序檔中擷取相同資訊。探測關鍵字提供了解決方案。探測關鍵字擷取屬性資訊,無需您設定相符條件並執行設定檔。
如需探測關鍵字與值的清單,請參閱探測關鍵字和值。
如果規則關鍵字和值以及探測關鍵字和值中的規則與探測關鍵字說明不夠精確,無法滿足您的需求,您可以建立 custom_probes 檔來定義屬於自己的自訂規則或探測關鍵字。
custom_probes 檔為包含兩種類型函式的 Bourne shell 程序檔。您必須將 custom_probes 檔儲存在相同的 JumpStart 目錄中,也就是儲存 rules 檔的位置。下面是兩類可在 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 檔案儲存在 rules 檔旁邊的 JumpStart 目錄中。
確定 root 中含有 rules 檔案,且許可權已設為 644。
您可以在下列目錄中尋找探測與比較函式的其他範例:
已安裝 Solaris 軟體之系統上的 /usr/sbin/install.d/chkprobe
在 Solaris 9 DVD 上或 Solaris 9 Software 1 of 2 CD 上的 /Solaris_9/Tools/Boot/usr/sbin/install.d/chkprobe
下列 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 - |
在您能夠使用設定檔、rules 以及 custom_probes 檔之前,必須執行 check 程序檔來驗證是否已正確設定該檔案。如果已正確設定所有的設定檔、規則以及探測與比較函式,系統將會建立 rules.ok 以及custom_probes.ok 檔。表 25–1 將說明 check 程序檔的功能。
表 25–1 使用 check 程序檔各個階段的作業
階段 |
說明 |
---|---|
1 |
check 會搜尋 custom_probes 檔。 |
2 |
如果該檔案存在,check 則會從 custom_probes 檔建立 custom_probes.ok 檔,並移除所有的註釋與空白行,而保留所有 Bourne shell 指令、變數與演算法。然後,check 在結尾處增加下列註釋行: # version=2 checksum=num |
檢驗 check 程序檔是否位於 JumpStart 目錄中。
check 程序檔位於 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 CD 上的 Solaris_9/Misc/jumpstart_sample 目錄中。
執行 check 程序檔以驗證 rules 以及 custom_probes 檔案。
$ ./check [[-p path -r file_name]] |
使用平台 Solaris 9 軟體影像的 check 程序檔,而不是使用中系統的 check 程序檔,來驗證 custom_probes 檔案。path 是本機磁碟、裝載的 Solaris 9 DVD 或 Solaris 9 Software 1 of 2 CD 上的影像。 如果系統執行舊版的 Solaris,請使用此選項來執行最新版本的 check。 |
|
指定一個與 custom_probes 檔名不相同的名稱。藉由使用 -r 選項,您可以先測試函式集合的有效性,然後將函式整合至 custom_probes 檔案。 |
執行 check 程序檔時,程序檔便會報告 rules、custom_probes 檔案以及每個設定檔的有效性。如果沒有發生任何錯誤,程序檔會報告: “自訂 JumpStart 配置正確” 並在 JumpStart 目錄中建立 rules.ok 與 custom_probes.ok 檔。
如果可以執行,請移至步驟 5。
如果不能執行,請鍵入下列指令:
chmod +x custom_probes
確定 root 擁有 custom_probes.ok 檔案,並且許可權設定為 755。