Next Previous Contents

5. 自己动手指南

这里的讨论是针对单调模式的 UPS 控制而写就的。然而, 大部分的过程对单调的 UPS 与聪明的 UPS 几乎是一样的。最大的不同在于 UPS 监控程序 (基本上是 powerd) 如何与 UPS 沟通。

在开始之前,我建议以下的工作流程:

5.1 您所需的工作 (总结)

5.2 这应该是做什么工作的?

UPS 的工作

当电力消失时, UPS 持续供应电脑所需的电力, 并以送出重置信号或是在它的控制阜上打开连接信号以通知电脑电力消失了。

信号缆线的工作

信号缆线是设计为当 UPS 送出重置信号时,会使得特殊的序列阜控制接脚 (基本上是 DCD) 出现高电位。

Powerd 的工作

powerd 程序负责监视序列阜。它保持著 UPS 所需而升高 / 降低序列阜控制接脚的高 / 低电位 (基本上, DTR 接脚必须保持在高电位且关闭 UPS 的接脚必须保持在低电位) 。当 powerd 发觉控制接脚变成高电位,它会在 /etc/powerfail 档中写入 FAIL 这个字并送 SIGPWR 信号给 init 行程。 当控制接脚再次变回低电位时,它会在 /etc/powerfail 档中写入 OK 这个字并送 SIGPWR 信号给 init

Init 的工作 (除上述之外它负责所有的工作)

当它接到了 SIGPWR 信号,它会检查 /etc/powerfail 档。 如果里头是 FAIL 这个字眼它会执行 /etc/inittab 档中 powerfail 那一行的指令。如果里头是 OK 这个字它则执行 inittab 档中 powerokwait 那一行的指令。

5.3 如何设定好所有的工作

以下我们假设您有一条可以和 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 资料节选 中所有的小节浏览过一遍,因为每一小节都会有一些额外的一般性资料能对您有帮助。

恭喜您! 您的 Linux 系统现在已在 UPS 的保护下, 且它将会在电力耗尽之前安全地关机了。

5.4 进一步的改善


Next Previous Contents