📄 ups-howto.txt
字号:
中文 UPS Howto Harvey J. Stein, [1]abel@netvision.net.il, Berger Financial Research, Ltd. v2.02, 31 March 1997 _________________________________________________________________ 本文能帮助您将 Linux 系统连接到不断电系统 (uninterruptable power supply, UPS)... 如果幸运的话 .... 版权声明: Copyright (c) 1994, 1995, 1996, 1997 by Harvey J. Stein. You may use this document as you see fit, as long as it remains intact. In particular, this notice (along with the contributions below) must remain untouched. _________________________________________________________________ 1. 简介 * 1.1 有贡献的人们 * 1.2 请特别注意 * 1.3 其他的文件 2. 请注意已过时的资讯3. 聪明的与单调的 UPS4. 软体5. 自己动手指南 * 5.1 您所需的工作 (总结) * 5.2 这应该是做什麽工作的? * 5.3 如何设定好所有的工作 * 5.4 进一步的改善 6. 硬体的注意事项 * 6.1 如何制作讯号缆线 * 6.2 讯号缆线反向分析及修改 power.c _________________________________________________________________ 1. 简介 本 HOWTO 文件包含了如何连接 UPS 到执行 Linux 的电脑上。 其想法是以适当 的方式将二者相连接,使得 Linux 可以在电源断电以及 UPS 的电池耗光前安全 地关机。 其中还包括了一些可帮助您建立上述连线的软体,以及详述该连线的运作方式。 假如您能找到一个已设定好可以使用您的 UPS 的软体, 则後者的说明对您来说 通常是不需要的。否则的话,您必须仔细地阅读它。 在相当的程度上本文件已比起我在三年前所撰写的原文多出了很多内容。 所有的 基本资料都可以在 SysVinit 中的 powerd man page □找到。 尽管在三年前有 人可能无法在一般的 Linux 套件中找到这篇 man page , 但我不相信今後还会 再发生这样的情况。 除此之外,当我第一次撰写这篇 Howto ,除了 powerd.c 以外并没有其他的软体 可以做为 Linux/UPS 之间的沟通与控制。 而今日我们则可以在 [2]Sunsite's UPS directory 下找到一大堆 UPS 控制软体。 然而,受到 RedHat 即将重新印制 Dr. Linux 的激励,我也开始重写这篇 UPS Hotwo 。 为什麽呢? 嗯 .... * 我想,额外的一般性概观将能有助於了解如何将 Linux 系统连上 UPS , 即 使它只是另一份内容相同的文件。 * 这篇 HOWTO 算是各种特殊 UPS 资料的储藏库 --- 在这儿有许多尚未被整合 入一般软体套件中的 UPS 资讯。 * 这篇 HOWTO 包含了一些在其他文件中找不到的额外详细资料。 * 一些可以在 [3]Sunsite's UPS directory 找得到的 UPS 软体似乎说明文件 都少得可怜。 您也许需要先阅□本文以了解如何使用他们。 * 现在这件事似乎已有了自己的生命了。当一篇 HOWTO 文件因而诞生时事实就 更加明显了。另一个比较不明显的事实是当它必须上床睡觉时。 (译注: 这 一句笑话我看不懂啦! 唉! 翻得好烂 ....) 1.1 有贡献的人们 我永远都会感激那些曾经给我帮助、给我建议、以及给我特殊的 UPS 资料的人们 。 其中包括了: * Hennus Bergman ( [4]hennus@sky.owl.nl) * Charli ( [5]mefistos@impsat1.com.ar) * Ciro Cattuto ( [6]Ciro Cattuto) * Nick Christenson ( [7]npc@minotaur.jpl.nasa.gov) * Lam Dang ( [8]angit@netcom.com) * Markus Eiden ( [9]Markus@eiden.de) * Dan Fandrich ( [10]dan@fch.wimsey.bc.ca) * Ben Galliart ( [11]bgallia@orion.it.luc.edu) * Danny ter Haar ( [12]dth@cistron.nl) * Christian G. Holtje ( [13]docwhat@uiuc.edu) * Raymond A. Ingles ( [14]inglesra@frc.com) * Peter Kammer ( [15]pkammer@ics.uci.edu) * Marek Michalkiewicz ( [16]ind43@sun1000.ci.pwr.wroc.pl) * Jim Ockers ( [17]ockers@umr.edu) * Evgeny Stambulchik ( [18]fnevgeny@plasma-gate.weizmann.ac.il) * Clive A. Stubbings ( [19]cas@vjet.demon.co.uk) * Miquel van Smoorenburg ( [20]miquels@cistron.nl) * Slavik Terletsky ( [21]ts@polynet.lviv.ua) * Tom Webster ( [22]webster@kaiwan.com) 请注意下方的 email 地址是自电子信件中节录下来的,它们也许会过期。 而上 方的 email 地址可能也会过期,但有些是比起下方还要新的。 除此之外,如果因我的疏忽而在上表中漏掉任何一位有贡献者的话,我真的很抱 歉。 请您 email 给我,我会将您的名字加上去。 1.2 请特别注意 我真的无法保证这些东东对您会有效。连结 UPS 到电脑上是一件相当有技巧的工 作。 其中之一或二者都有可能会烧掉、爆炸、著火、或者是引发第三次世界大战 。 除此之外,我只有对 Advice 1200 A UPS,以及 5kva Best Ferrups 有直接 的经验, 而且我也不需要自己做一条讯号线。所以,请注意! 尽可能地收集您的 UPS 的所有资讯。 请先考虑清楚,不要随便相信任何您在本文中或其他地方所读 到的内容。 另一方面,我正尽可能地收集所有使我的 UPS 可以工作的方法, 其中有很多不 是来自制造商的资讯,所幸也没有烧掉任何东西,所以这些都是可能的。 1.3 其他的文件 本文并没有包含所有 UPS 的一般特性与能力。如您需要这类型的资讯,你可以看 看 [23]The UPS FAQ。 这篇文件同时也可以在 [24]ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/comp/answers/UPS-faq 中 找到。它是由 Nick Christenson ( [25]npc@minotaur.jpl.nasa.gov) 所维护的 ,但看起来好像自从 1995 年以後就没有再重写了。如果您要 email 给他, 他 希望您可以在信件的 Subject 那一行放入 UPS 或 UPS FAQ 或其他相关的词句。 有许许多多的 UPS 制造商在网路中萌芽。 其中有些确实在他们的网页中提供了 有用的资讯。您可以在 [26]The UPS Directory 中找到这些 UPS 制造商的网页 简表。该网站也包含了 [27]UPS FAQ 这篇文件。 2. 请注意已过时的资讯 我刚刚发现底下有一些资料已经过时了。其中来自 [28]the latest sysvinit package 的 init daemon 比起我所能描述的还要简陋。 尽管看起来目前的版本 与该程式完成时的版本相容,但当中仍然有一些对 UPS 相当重要 的支援没有文 件说明。 底下所简述的控制机制只能让 powerd 送给 init powerfail 或 powerok 这两个 讯息之一而已。init 接到 powerfail 讯息时执行一个命令,而当它接到 powerok 时则执行另一个命令。 这将导至 powerd 在处理低电力讯号及其他特殊 状况时产生逻辑上的复杂性。 较新版本的 init (像是 2.58 版) 就比较精良了。 它可以在接到讯号时选择 三 个 script 中之一来执行。如此一来, init 可以在接到电源断电讯号时执行 powerfail script ,可以执行一个 powerfailnow script 做立即的关机 ,以及 一个 powerok script 来停止任何正在进行的关机动作。这样比起要我们自行处 理这些机制要简单多了。 尽管这□大部分的讨论仍假设使用旧的 init 通讯方式, 我已加入了两个新的章 节来描述新的连线方法。这两个章节是 <@ref>ciroTrust Energy Protector 400/650 及 <@ref>ciroTrust Energy Protector 400/650<@ref>apc700APC Smart-UPS 700。其中前者特别详细。二者都包含了一个 powerd.c 档, 它可以在收到低电 力讯号时送讯号给 init 以进行紧急关机, 就像是 /etc/inittab 档中那几行所 写的一样。其馀的, 我所能告诉您的就只有请您看看 init 的原始码了。 就我所知的,在以下所列的 UPS 软体套件中有许多也采用了新式的连线方式。 3. 聪明的与单调的 UPS UPS 大至分为两类,我分别叫它们 ``聪明的 (Smart)''与 ``单调的 (Dumb)''。 二者之间的差异在於我们能自 UPS 获得多少的讯息以及我们能够对 UPS 下达多 少命令。 单调的 UPS + 藉由序列阜 (serial port) 与电脑相连。 + 使用 modem 控制线与电脑相通讯。 + 可以在电力是否消失时给电脑送讯号。 + 也许可以在 UPS 的电力是否偏低时通知电脑。 + 电脑通常可以送讯号给 UPS 让它将自己关闭。 聪明的 UPS + 藉由序列阜 (serial port) 与电脑相连。 + 以一般的资料传输线经序列阜与电脑沟通。 + 多半有一组命令语言可以让电脑自 UPS 那得知各式各样的资讯, 以设 定各种运作参数给 UPS,同时也操作 UPS (像是将它关掉) 通常聪明的 UPS 都可以在单调的模式下操作。这是很有用的,因为就我所知, 最常见的聪明 UPS (像是 APC) 制造商只愿意透露他们的 UPS 通讯协定给那些签 署了绝不□露机密同意书的人们。 就我所知,只有 BEST 公司所制作的 UPS 可以很容易地在 Linux 下运作。 除此 之外, BEST 公司还有完整的文件说明了他们的 UPS 的聪明模式 (以及单调模 式)。 BEST 公司也提供了可以与他们的 UPS 沟通的程式的原始码。 所有列在 [29]软体 章节的软体皆可在单调模式下与 UPS 沟通。这些都是您真正 需要的。有些软体则宣称说可以在聪明模式下操作 ARC UPS ,但我不知道他们是 如何获准而做到的。 一个完整的程式运作会跳出一个视窗,□头包含了有趣的度 量表, 代表著各式各样的 UPS 统计资料,像是负载程度、内部温度、断电记录 、输入电压、 及输出电压 ...... 等等。看起来似乎 smupsd-0.7-1.i386.rpm 程式 (见 [30]软体一节) 可以做到这些。 对於其他的软体我则不敢确定。 以下的内容我将尽量□限於如何调整您的系统使其能与单调模式下的 UPS 一起工 作。 而对聪明模式的 UPS 而言,基本想法是一样的,但需要什麽样的 powerd 参与工作以及您需要什麽样的讯号缆线是随著 UPS 而有不同的。 4. 软体 基本上,您所需的就是一个可以工作 powerd 程式档,通常您可以在 /sbin/powerd 下找到它。它通常是属於 SysVinit 系统的一部分。 就我所知, 所有近期版本的 Linux 系统都包含了一个较新版的 SysVinit 。 但在非常旧的 版本则不包含 powerd。 唯一的问题是您的讯号缆线可能不能与您的 powerd 设定相配合, 在这情况下您 必须重新做一条讯号缆线,或者是找来一份 powerd.c 档并修改它使得它能配合 您的讯号缆线工作。或者是, 您可以使用以下所列的软体,大部分的软体允许您 做适当的设定以配合您的讯号缆线。 就像刚刚所提到的,除了使用 SysVinit 的 powerd 之外您也可以拿现有的任何 一种 UPS 软体来用。目前有许多软体可以帮助您建立电脑与 UPS 之间的连线。 在我第一次写这篇 HOWTO 时都还没有这些软体, 而这也是为什麽我要写这篇 HOWTO 。事实上,您也可以从中选一个软体来用, 而完全忽略这篇 HOWTO 的内 容。 在 1997 年 3 月 15 日左右, [31]Sunsite 的 UPS 目录 下可以找到一大堆的 软体可用。而在其他的网站似乎也有 UPS 控制软体可以找到。 以下是我目前所 找到的 (除了其中两个以外,其他都是在 sunsite 找到的): [32]Enhanced_APC_BackUPS.tar.gz 这是一个可以控制 APC 聪明模式的 UPS 。看起来基本上是依据 BUPS Howto (包含了这一篇) ,但也好像有一些低电力警告的支援。 [33]Enhanced_APC_UPSD-v1.4.tar.gz 在 .lsm 档中提到它从前就是上一个所提到的软体, 但事实上它正是将 上一个软体的 .tar.gz 档包装在它的 tar.gz 档之内。那篇文件说明有 问题,看起来它似乎同时支援 APC UPS 的聪明与单调模式,但我不敢确 定。 [34]apcd-0.5.tar.gz 这是另一个可以控制 APC UPS 於聪明模式下运作的软体。 看起来似乎可 以支援主/从模式 (也就是说,当停电时可以由一台机器送讯号给另一台 机器叫它关机) 。 看起来似乎是使用了 UPS 的聪明模式,不像是经由 modem 的讯号线来控制。 [35]smupsd directory 又是另一个控制 APC UPS 的软体。看起来可以在非常聪明 (tm) 模式下 操作 UPS 。举例来说,它包含了一个 Java 图形介面的 UPS 监控工具程 式。 该目录下包含了已编译好的 RPM 形式的软体 ( [36]ftp://cms180.cmsnet.com/pub/smupsd/smupsd-0.7-1.i386.rpm) , 一个原始码 RPM 格式档 ( [37]ftp://cms180.cmsnet.com/pub/smupsd/smupsd-0.7-1.src.rpm) , 以及一个□我档案 ( [38]ftp://cms180.cmsnet.com/pub/smupsd/smupsd-0.7-1.README) 。 [39]genpower-1.0.1.tgz 一个一般化的 UPS 控制软体。它包含了很多种 UPS 的设定 --- 两种 TrippLite 的设定,以及三种 APC 的设定。同时也包含了很好的说明文 件。物超所值。 [40]powerd-2.0.tar.gz 一个 SysVinit 的 powerd 程式的替代品。 与它的说明文件所提到的相 反,它似乎没有整合到 SysVinit 2.62 版中。它的优点在於它可以做为 在其他机器上执行的 powerd 的伺服端 (假如您的机器有连上网路且只有 一个 UPS 的话) ,而且它可以用设定档来进行设定 ---- 故其原始码不 需修改及重新编译。 [41]upsd-1.0.tgz 另一个 powerd 的替代品。看起来似乎与 powerd-2.0.tar.gz 有许多相 似的特色。 [42]checkups.tar 这个软体是用来控制 Best UPS 的。它是直接来自 Best 公司的网页的。 它包含了多种 unix 的可执行档,但更重要的是,它还包含了原始码, 故您可以在 Linux 下测试它,而且假如它无法工作,您也可以试著修改 它。 此原始码同时包含了在单调模式下控制 UPS 的 "基本检测" 指令, 以及一些更精巧的 "先进检测" 指令 --- 当 UPS 回报说它只剩 X 分钟 的电力时即发出关机的讯号,而不是等到 X 分钟後电力都用光了才开始 关机。 此先进检测程式也会在 UPS 发出像是周围环境温度过高、接近低 电力、 低交流电输出、或者是使用者测试等警告时关闭机器。 [43]bestups-0.9.tar.gz 可能在您读到这篇文章时,此在 sunsite 可以找得到的软体已发展得很 好了。 它是一对可以相互通讯的模组,用以控制 Best Ferrups UPS。它 可以在聪明模式下 控制 UPS 。它可以与 powerd-2.0 合作操控 --- 这 一点在当您有一个大型的 Best Ferrups UPS 支援连接在网路上机器的电 力时格外有用。 请注意我只是快速地浏览过这些软体。我并没有用它们,除了那个我们才开始使 用的 [44]bestups-0.9.tar.gz 以及 [45]powerd-2.0.tar.gz , 其中 ``才开 始'' 意思是说我们才在上个星期四开使做测试。 5. 自己动手指南 这□的讨论是针对单调模式的 UPS 控制而写就的。然而, 大部分的过程对单调 的 UPS 与聪明的 UPS 几乎是一样的。最大的不同在於 UPS 监控程式 (基本上是 powerd) 如何与 UPS 沟通。 在开始之前,我建议以下的工作流程: * 略读这篇文件。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -