這�堛滌Q論是針對單調模式的 UPS 控制而寫就的。然而,
大部分的過程對單調的 UPS 與聰明的 UPS 幾乎是一樣的。最大的不同在於 UPS
監控程式 (基本上是 powerd) 如何與 UPS 溝通。
在開始之前,我建議以下的工作流程:
powerd (或其他類似的軟體) 。init 程式使它能在 powerfail 及 powerok
事件發生時做適當的處理 (例如分別啟動 shutdown 程序及停止正在執行的
shutdown 程序)。
當電力消失時, UPS 持續供應電腦所需的電力, 並以送出重置訊號或是在它的控制阜上打開連接訊號以通知電腦電力消失了。
訊號纜線是設計為當 UPS 送出重置訊號時,會使得特殊的序列阜控制接腳
(基本上是 DCD) 出現高電位。
powerd 程式負責監視序列阜。它保持著 UPS 所需而升高 /
降低序列阜控制接腳的高 / 低電位 (基本上, DTR
接腳必須保持在高電位且關閉 UPS 的接腳必須保持在低電位) 。當 powerd
發覺控制接腳變成高電位,它會在 /etc/powerfail 檔中寫入
FAIL 這個字並送 SIGPWR 訊號給 init 行程。
當控制接腳再次變回低電位時,它會在 /etc/powerfail
檔中寫入 OK 這個字並送 SIGPWR 訊號給 init 。
當它接到了 SIGPWR 訊號,它會檢查 /etc/powerfail 檔。
如果�媕Y是 FAIL 這個字眼它會執行 /etc/inittab
檔中 powerfail 那一行的指令。如果�媕Y是 OK
這個字它則執行 inittab 檔中 powerokwait 那一行的指令。
以下我們假設您有一條可以和 powerd 正常工作的訊號纜線。
如果您不確定您的訊號纜線是否可以工作 (或它如何工作),請參考
訊號纜線反向分析及修改 power.c
一節,那兒有關於少見的訊號纜線處理及重新設定 powerd.c 的資訊。
訊號纜線反向分析及修改 power.c<@ref>serial-port序列阜接腳的指定 及
訊號纜線反向分析及修改 power.c<@ref>serial-port序列阜接腳的指定<@ref>ioctl有關讀寫 RS232 這兩節也將對您有幫助。
如果您需要製作一條訊號纜線,請見 如何製作訊號纜線 的詳細說明,以及 如何製作訊號纜線<@ref>ups-specificUPS 資料節選 一節中有關您的 UPS 的小節。 後者可能也包含了製造商所提供的訊號纜線的相關資訊。 或許您應至少將 如何製作訊號纜線<@ref>ups-specificUPS 資料節選<@ref>ups-specificUPS 資料節選 中所有的小節瀏覽過一遍,因為每一小節都會有一些額外的一般性資料能對您有幫助。
/etc/inittab 檔。寫入像以下的內容:
# What to do when power fails (Halt system & drain battery :): pf::powerfail:/etc/powerfailscript +5 # If power is back before shutdown, cancel the running shutdown. pg:0123456:powerokwait:/etc/powerokscript
/etc/powerfailscript 及 /etc/powerokscript
這兩個 script 檔分別在五分鐘 (或其他您喜歡的時間)
之內進行關機及停止任何存在的 shutdown 程序。
依您所用的 shutdown 程式版本的不同,
它可能會相當單簡以至於您根本不需使用 script 檔,或者是一行 bash
的 script 檔像是以下這一行:
kill `ps -aux | grep "shutdown" | grep -v grep | awk '{print $2}'`
(為了避免您弄錯,上一行中第一個單引號是反向單引號,第二及第三個是單引號,
而最後一個則為反向單引號。)
init 重新讀取 inittab 檔中的設定:
telinit q
powerd 。其語法如下:
powerd <line>
其中,請您自行將 <line> 這個字替換成 modem
所連接的序列阜名,像是 /dev/cua1。
powerd。
/etc/powerfailscript 是否已開始執行。shutdown 是否正在執行。/etc/powerokscript 是否已開始執行。/etc/powerfailscript 是否已停止執行。shutdown 是否已停止執行。shutdown 是否已在運作,並等待一段時間。
確定電腦在 UPS 的電力用完前完全地關機。此一步驟是很危險的,
因為如果 UPS 的電力在電腦完成關機之前先用完了,
您的檔案系統將會受損,且您將可能丟失一些檔案。
您可能在進行這項測試之前會想要備份您所有的檔案,
並將開始關機的時間設短一點以開始這項測試。恭喜您! 您的 Linux 系統現在已在 UPS 的保護下, 且它將會在電力耗盡之前安全地關機了。
powerd.c 使它在監視 UPS 的訊號線時能得知電池電力已弱。
當電力微弱時,馬上進行緊急關機程序。powerfail 情況下關機時,
能夠在完成所有工作之後將 UPS 關掉。