這是一篇舊文章了,原本我曾經發表在Linuxfab上面,只可惜Linuxfab死掉好久都沒能再活過來(上帝保佑那位站長!! 他是個好人!!) 把他貼過來這裡,希望可以對想要用UPS的朋友有幫助!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自己的問題自己答!! ^_^
經過了好久的嚐試,我的電腦終於成功的和我的UPS"搭上線"啦!!開心之餘還希望可以和大家分享一下我的
心得,希望對想要安裝UPS在自己的Debian系統上的同好有幫助.
一.開始,關於硬體:
首先你將會需要一條訊號線,這條訊號現有頗高的機率是必須由自己去做出來的,別擔心,只要你懂得基本
的焊接,你就一定做的出來.如果你目前還在考慮要購買UPS,我個人建議可以買台達電子生產的UPS,就我
所知,台達電的UPS所附的管理軟體"電力管理大師"其實包含了upsd這個在Debian裡也有的UPS管理軟體.
因此有很高的可能性在台達電的UPS所附贈的訊號線是可以直接在我們的Debian底下使用的.
OK! 你和我一樣,UPS不是台達的,這不是太大的問題,首先到電腦公司買條一般的com port線,接頭數視你
的電腦的com port接頭(一般大概是9支腳的,有些電腦可能是25支腳的,注意接電腦的這一頭必須是母接頭
,也就是"洞洞"的接頭)以及UPS的訊號接頭(大多是9支腳的,接UPS這一頭大多是公的接頭)而定,另外買些
10K歐姆的電阻(買最便宜的就可以了,我自己買的是10塊錢10支的那一種).
首先,將訊號線母接頭端(接電腦的這一端)拆開,參考com port的pin腳定義(請看下圖),將DTR腳以及DSR
腳用一根金屬線直接連接起來,再將DTR腳以及DCD腳以一根10K歐姆的電阻連接起來,最後,把DTR腳以及
CTS腳用另一根10K歐姆的電阻連接起來,你將會發現DTR腳因為要連接兩根電阻一根金屬線顯得相當擁擠,
其實你可以視你的腳位狀況加以調整,因為DTR腳和DSR直接連在一起,其實電阻要連DTR還是DSR甚至乾脆
接在金屬線上都是一樣的,只要可以弄得整齊些可以放進你的接頭裡面也就OK了.接完後將接頭裝回去.
圖.. com port pin腳定義
由電腦後方,向電腦看時的 pin腳順序
25支腳的 com port
-----------------------------------------
\ 1 2 3 4 5 6 7 8 9 10 11 12 13/
\ 14 15 16 17 18 19 20 21 22 23 24 25 /
-------------------------------------
9支腳的com port
-------------
\ 1 2 3 4 5 /
\ 6 7 8 9 /
---------
pin 腳定義
DB9|DB25
DTR: 4 | 20
DSR: 6 | 6
DCD: 1 | 8
CTS: 8 | 5
RTS: 7 | 4
SG: 5 | 7
咦!? 多了個SG和RTS還有CTS是做啥用的!? 別急!! 看下面就知道囉!!
接下來需要你的UPS的訊號接頭的規格啦!!一般來說這個資訊可以在你的UPS的使用手冊裡找到.如果你和
我一樣手冊早就不知哪裡去了,打個電話給你的UPS公司要吧!!我就是這麼要到我的UPS的訊號接頭的規格
的. *^_^*
拆開訊號線接UPS的這一端,首先找出DCD,CTS,RTS還有SG的線並且記下他們的顏色,接著剪掉所有的線.
參考你的UPS的訊號資料,首先將標為"return side"或者是"ground"(接地)的腳位(可能會有兩個,當有兩
個的時候就先將這兩隻腳用金屬線或是電線先連接在一起)接到SG這條線上,再將當UPS以電池供電時將會
"close"(通路,當然是和接地通路的意思)的腳位接到DCD這條線上,再來將當UPS低電量時會close的腳位
接到CTS這條線上,最後,將關閉UPS "shutdown UPS"的訊號腳位接到RTS這條線上. OK!! 把接頭裝回去吧
,你已經把訊號線搞定了!! 其他的腳位空著就好,沒有影響!!
不同廠牌的UPS設計不同,我的UPS有支援以上的這幾個功能,有訊號接頭的UPS至少應該支援UPS以電池供電
的訊號,如果你的UPS不支援其他的功能,沒關係,就讓相關的腳位空著,不要緊的!!
二.關於軟體
以root的身分登入系統.
首先,執行 apt-get install upsd 將upsd這個軟體裝起來,然後,修改/etc/init.d/upsd這個文字設定檔
找到以下幾行
# Uncomment and modify the following line to point to the ups serial device.
#PORT="/dev/ttyS1"
# Then comment out this line
echo "/etc/init.d/ups: Port not configured!";exit 0
修改成
# Uncomment and modify the following line to point to the ups serial device.
PORT="/dev/ttyS1"
# Then comment out this line
#echo "/etc/init.d/ups: Port not configured!";exit 0
注意其中的PORT="/dev/ttyS1"裡的數值要是你將你的UPS連接在哪一個com port上!!
ttys0是com1,ttys1則是com2.我的UPS接在com2上,所以我設成"/dev/ttys1"
再來,修改你的/etc/inittab
加入以下幾行
pf::powerfail:/sbin/shutdown -r +5
pn::powerfailnow:/sbin/shutdown -c ; /sbin/shutdown now -r
pr:12345:powerokwait:/sbin/shutdown -c
第一行最後的+5是在停電後五分鐘執行關機程序的意思,你可以依照自己的UPS的電池容量大小來調整.
重新啟動init之後,恭喜!! 你的機器將會在停電時自己安全關機了!!
其實我的做法不是正確的做法,主要是不應該直接在inittab裡寫上關機指令,可是我實在不知道要如何
讓upsd在關機後下指令關閉UPS,所以我就沒有用正統的shell script來關閉電腦了(另一個很丟臉的原
因則是:我不會寫shell script:P),用 -r的原因是因為這樣一來當電腦重新開機的那一瞬間送出的重
置訊號剛好就會關閉UPS. 關於這個部分,由於我還是個UNIX Like OS的新手,可能得請其他的駭客
出馬幫幫忙解答正確的做法了... 先謝謝囉!!