本章將介紹建立您自己的自訂規則關鍵字和探測關鍵字的有關資訊和程序。
若要理解何謂探測關鍵字,需要先回顧何謂規則關鍵字。 規則關鍵字是指預先定義的詞彙單元或文字,用於描述一般系統屬性,例如主機名稱 hostname 或記憶體大小 memsize。 規則關鍵字以及與其相關聯的值,可以讓您比對具有相同屬性的系統和設定檔。 這種系統屬性的比對定義如何將 Solaris 軟體安裝在群組內的每一個系統中。
自訂 JumpStart 環境變數 (用於開始程序檔和結束程序檔中) 會依需要設定。 例如,只有在使用了 installed 規則關鍵字後,才能在 SI_INSTALLED 中取得有關哪個作業系統已安裝在系統上的資訊。
在某些情況下,出於比對系統和執行設定檔之外的目的,您可能需要擷取開始或結束程序檔中的相同資訊。 探測關鍵字提供了解決方案。 探測關鍵字擷取屬性資訊,使您不需要設定比對條件和執行設定檔。
如需探測關鍵字與值的清單,請參閱探測關鍵字和值。
如果規則關鍵字和值 以及探測關鍵字和值中描述的規則關鍵字與探測關鍵字不夠精確,無法滿足您的需求,您可以透過建立 custom_probes 檔案來定義自己的自訂規則關鍵字或探測關鍵字。
custom_probes 檔案是包含兩種類型函式的 Bourne shell 程序檔。 您必須將 custom_probes 檔案儲存在 rules 檔案所在的 JumpStart 目錄中。 可在 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 檔案儲存在 JumpStart 目錄中, rules 檔案的旁邊。
確保根中含有 rules 檔案,且許可權已設為 644。
您可以在下列目錄中找到附加的探測函式範例與比對函式範例:
已安裝 Solaris 軟體的系統上的 /usr/sbin/install.d/chkprobe
Solaris DVD 或 Solaris 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 檔案。 表 28–1 將介紹 check 程序檔的功能。
表 28–1 使用 check 程序檔時發生的狀況
階段 |
描述 |
---|---|
1 |
check 會搜尋 custom_probes 檔案。 |
2 |
如果該檔案存在,check 會從 custom_probes 檔案建立 custom_probes.ok 檔案,並移除所有的註釋與空白行,保留所有 Bourne shell 指令、變數與演算法。 然後,check 會在結尾處加入以下註釋行: # version=2 checksum=num |
確認 check 程序檔是否位於 JumpStart 目錄中。
check 程序檔位於 Solaris DVD 或 Solaris Software 1 of 2 CD 的 Solaris_9/Misc/jumpstart_sample 目錄中。
執行 check 程序檔,以驗證 rules 檔案和 custom_probes 檔案。
$ ./check [[-p path -r file_name]] |
使用您平台的 Solaris 9 軟體影像之 check 程序檔來驗證 custom_probes 檔案,而不要使用您所用系統的 check 程序檔。 path 是本機磁碟、裝載的 Solaris DVD 或 Solaris 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 |
確保超級使用者擁有 custom_probes.ok 檔案,並且許可權已設定為 755。