📄 ups-howto.txt
字号:
* 下载并审查所有看起来特别适合您的 UPS 的软体。 * 下载并审查所有更一般化的软体。请注意有些较一般化的软体事实上更为强 大、 有更好的说明文件、且比起那些较特殊的软体更容易使用。 * 如果您依然无法让 UPS 工作,或是您的方向依旧不清楚, 请您仔细阅读本 文,并试试做 hack 的工作 .... 5.1 您所需的工作 (总结) * 将您的电脑接上 UPS 。 * 用特殊的讯号缆线将您的电脑的的串列阜与 UPS 连接在一起。 * 在您的电脑上跑 powerd (或其他类似的软体) 。 * 设定您的 init 程式使它能在 powerfail 及 powerok 事件发生时做适当的 处理 (例如分别启动 shutdown 程序及停止正在执行的 shutdown 程序)。 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 正常工作的讯号缆线。 如果您不确定您的 讯号缆线是否可以工作 (或它如何工作),请参考 [46]讯号缆线反向分析及修改 power.c 一节,那儿有关於少见的讯号缆线处理及重新设定 powerd.c 的资讯。 [47]讯号缆线反向分析及修改 power.c<@ref>serial-port序列阜接脚的指定 及 [48]讯号缆线反向分析及修改 power.c<@ref>serial-port序列阜接脚的指 定<@ref>ioctl有关读写 RS232 这两节也将对您有帮助。 如果您需要制作一条讯号缆线,请见 [49]如何制作讯号缆线 的详细说明,以及 [50]如何制作讯号缆线<@ref>ups-specificUPS 资料节选 一节中有关您的 UPS 的小节。 後者可能也包含了制造商所提供的讯号缆线的相 关资讯。 或许您应至少将 [51]如何制作讯号缆线<@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 * 编□ rc.local 档在开机时执行 powerd 。其语法如下: powerd <line> 其中,请您自行将 <line> 这个字替换成 modem 所连接的序列阜名,像是 /dev/cua1。 * 将电脑的序列阜与 UPS 的讯号缆线相连。请先不要将电脑的电源直接接到 UPS 上。 * 将一个光源 (如灯泡) 接到 UPS 上。 * 执行 powerd。 * 依照以下的步骤进行测试: + 拔掉 UPS 的插头。 o 检查该灯泡是否仍然亮著。 o 检查 /etc/powerfailscript 是否已开始执行。 o 检查 shutdown 是否正在执行。 + 接回 UPS 的插头。 o 检查该灯泡是否仍然亮著。 o 检查 /etc/powerokscript 是否已开始执行。 o 检查 /etc/powerfailscript 是否已停止执行。 o 检查 shutdown 是否已停止执行。 + 再次拔掉 UPS 的插头。放著不去管它并确定电脑在一段时间後 可以正 常关机。 + 危险步骤。 在所有的步骤看起来都正常之後, 将电脑电源关闭并将电 脑的电源接到 UPS 上。请执行一个 script 大约每秒钟做一次 sync 硬碟资料回存的动作,同时也跑另一个 script 持续以 find 指令搜寻 整颗硬碟。其中第一个 script 是为了确保安全,而第二个则是助长电 力的消耗。现在,将 UPS 的插头拔出,再次检查 shutdown 是否已在 运作,并等待一段时间。 确定电脑在 UPS 的电力用完前完全地关机。 此一步骤是很危险的, 因为如果 UPS 的电力在电脑完成关机之前先用 完了, 您的档案系统将会受损,且您将可能丢失一些档案。 您可能在 进行这项测试之前会想要备份您所有的档案, 并将开始关机的时间设 短一点以开始这项测试。 恭喜您! 您的 Linux 系统现在已在 UPS 的保护下, 且它将会在电力耗尽之前安 全地关机了。 5.4 进一步的改善 * 修改 powerd.c 使它在监视 UPS 的讯号线时能得知电池电力已弱。 当电力 微弱时,马上进行紧急关机程序。 * 修改关机程序使它在 powerfail 情况下关机时, 能够在完成所有工作之後 将 UPS 关掉。 6. 硬体的注意事项6.1 如何制作讯号缆线 本节的内容只是些我在网路上看到的资讯。我并没有亲自试过, 所以我无法依我 的经验写下来。如果有人有经验,麻烦您为我写这一节 :)。 同时也请您参考 <@ref>gps1000ACCODATA 的 GPS1000 中有关 GPS1000 的资料,不必说, <@ref>gps1000ACCODATA 的 GPS1000<@ref>ups-specificUPS 资料节选 这一节中所有特殊 UPS 的资料也是值 得参考的。 >From miquels@caution.cistron.nl.mugnet.org Wed Jul 21 14:26:33 1993 Newsgroups: comp.os.linux Subject: Re: UPS interface for Linux? From: miquels@caution.cistron.nl.mugnet.org (Miquel van Smoorenburg) Date: Sat, 17 Jul 93 18:03:37 Distribution: world Organization: Cistron Electronics. In article <1993Jul15.184450.5193@excaliber.uucp> joel@rac1.wam.umd.edu (Joel M. Hoffman) writes: > 我正打算要购买 UPS (不断电系统),我注意到有些具有 LAN 的介面, > 可以在停电时向 LAN 送讯号。 > > 而 Linux 有没有这样的介面呢? > > 谢谢您的回答。 > >-Joel >(joel@wam.umd.edu) > 当我在修改上一版的 SysVinit 时 (现在的版本是 2.4), 那时我的电脑有一个 UPS ,所以我加入了对它的支援。 您也许已在最近的一个 <signal.h> 标头档中看到了 #define SIGPWR 30 这一行 :-)。总之,我并没有那个特殊的介面,但大多数的 UPS 是靠产生或中断一个电源中断讯号在运作的。 我想到一个简单的方式可以将它的讯号线连接到电脑讯列阜的 DCD 接脚。在 SysVinit 套件中有一个叫做 'powerd' 的常驻程式可以追踪并监视该讯号线,当讯号的状态改变时它会送一个 SIGPWR 的讯号给 init 程式,因此 init 便可以采取适当的行动 (像是在 5 分钟之後让系统关机) 。如何将讯号线与 UPS 相连在 "powerd.c" 已有说明,但我还是图示如下以做为解释: +------------------------o DTR | +---+ | | resistor | | 10 kilo-Ohm | | +---+ To serial port. | +-----o-------+------------------------o DCD | | o UPS | \ relais | \ | | | +-----o-------+------------------------o GND 画得还可以吗? 希望这样会有帮助。 SysVinit 可以在 sunsite (或可能在 tsx-11) 下找到,档名是 SysVinit2.4.tar.z 。 Mike. -- Miquel van Smoorenburg, <miquels@cistron.nl.mugnet.org> Ibmio.com: cannot open CONFIG.SYS: file handle broke off. >From danny@caution.cistron.nl.mugnet.org Wed Jul 21 14:27:04 1993 Newsgroups: comp.os.linux Subject: Re: UPS interface for Linux? From: danny@caution.cistron.nl.mugnet.org (Danny ter Haar) Date: Mon, 19 Jul 93 11:02:14 Distribution: world Organization: Cistron Electronics. In article <9307174330@caution.cistron.nl.mugnet.org> miquels@caution.cistron.nl.mugnet.org (Miquel van Smoorenburg) writes: > 如何将讯号线与 UPS 相连在 "powerd.c" 已有说明, > 但我还是图示如下以做为解释: 该图示并不十分清楚,请改用以下的图示! > > +------------------------o DTR > | > +---+ > | | resistor > | | 10 kilo-Ohm > | | > +---+ To serial port. > | > +-----o-------+------------------------o DCD > | > o UPS > \ relais > \ > | > +-----o--------------------------------o GND > 其中 DTR 接脚是保持在高电位,则当 UPS 的外界输入电源消失时, 那个开关 (relais) 会关闭。而电脑便是监视 DCD 输入接脚,等著它变成低电位。 当事情发生时它将会启动关机程序 ... _____ Danny -- <=====================================================================> Danny ter Haar <dannyth@hacktic.nl> or <danny@cistron.nl.mugnet.org> Robins law #103: 'a couple of lightyears can't part good friends'6.2 讯号缆线反向分析及修改 power.cReferences 1. mailto:abel@netvision.net.il 2. http://sunsite.unc.edu/pub/Linux/system/ups 3. http://sunsite.unc.edu/pub/Linux/system/ups 4. mailto:hennus@sky.owl.nl 5. mailto:mefistos@impsat1.com.ar 6. mailto:ciro@stud.unipg.it 7. mailto:npc@minotaur.jpl.nasa.gov 8. mailto:angit@netcom.com 9. mailto:Markus@eiden.de 10. mailto:dan@fch.wimsey.bc.ca 11. mailto:bgallia@orion.it.luc.edu 12. mailto:dth@cistron.nl 13. mailto:docwhat@uiuc.edu 14. mailto:inglesra@frc.com 15. mailto:pkammer@ics.uci.edu 16. mailto:ind43@sun1000.ci.pwr.wroc.pl 17. mailto:ockers@umr.edu 18. mailto:fnevgeny@plasma-gate.weizmann.ac.il 19. mailto:cas@vjet.demon.co.uk 20. mailto:miquels@cistron.nl 21. mailto:ts@polynet.lviv.ua 22. mailto:webster@kaiwan.com 23. ftp://navigator.jpl.nasa.gov/pub/doc/faq/UPS.faq 24. ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/comp/answers/UPS-faq 25. mailto:npc@minotaur.jpl.nasa.gov 26. http://www.upssystems.uk.com/upsdir.html 27. http://www.upssystems.uk.com/upsfaqs.html 28. http://sunsite.unc.edu/pub/Linux/system/daemons/init/sysvinit-2.64.tar.gz 29. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#software 30. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#software 31. http://sunsite.unc.edu/pub/Linux/system/ups 32. http://sunsite.unc.edu/pub/Linux/system/ups/Enhanced_APC_BackUPS.tar.gz 33. http://sunsite.unc.edu/pub/Linux/system/ups/Enhanced_APC_UPSD-v1.4.tar.gz 34. http://sunsite.unc.edu/pub/Linux/system/ups/apcd-0.5.tar.gz 35. ftp://cms180.cmsnet.com/pub/smupsd/ 36. ftp://cms180.cmsnet.com/pub/smupsd/smupsd-0.7-1.i386.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. http://sunsite.unc.edu/pub/Linux/system/ups/genpower-1.0.1.tgz 40. http://sunsite.unc.edu/pub/Linux/system/ups/powerd-2.0.tar.gz 41. http://sunsite.unc.edu/pub/Linux/system/ups/upsd-1.0.tgz 42. http://www.bestpower.com/section/software/checkups.tar 43. http://sunsite.unc.edu/pub/Linux/system/ups/bestups-0.9.tar.gz 44. http://sunsite.unc.edu/pub/Linux/system/ups/bestups-0.9.tar.gz 45. http://sunsite.unc.edu/pub/Linux/system/ups/powerd-2.0.tar.gz 46. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#hacking 47. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#hacking 48. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#hacking 49. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#make-cable 50. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#make-cable 51. file://localhost/tmp/bg5sgmltools.16308/UPS-HOWTO.txt.html#make-cable
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -