Ce chapitre est spécifiquement destiné au contrôle des onduleurs bêtes. Néammoins, une grande partie du processus est à peu près identique pour les onduleurs intelligents. La principale différence réside dans la manière dont le daemon (typiquement powerd) de surveilance communique avec l'onduleur.
Avant de faire quoi que ce soit, je suggère l'algorithme suivant :
Lorsque le courant s'arrête, l'onduleur continue d'alimenter le PC et signale l'arrêt du courant par bascule d'un relais ou d'un optocoupleur sur son port de contrôle.
Le câble est conçu de telle manière que lorsque l'onduleur bascule ledit relais, cela monte un signal de contrôle particulier de la ligne série (typiquement DCD, détection de porteuse)
Le daemon powerd contrôle le port série.
Il maintient levés/baissés les signaux de contrôle du port série dont
l'onduleur a besoin (typiquement DTR, Terminal de Données Prêt,
doit rester levé, et touts les signaux qui coupent l'onduleur
doivent être maintenus baissés).
Lorsque powerd voit le signal de contrôle de l'onduleur monter,
il écrit FAIL
dans /etc/powerstatus
et envoie un signal
SIGPWR
au process init (les anciennes versions de powerd
et init écrivent dans /etc/powerfail
).
Lorsque le signal de contrôle redescend, il écrit OK
dans
/etc/powerstatus
et envoie un signal SIGPWR
à init.
Lorsqu'il reçoit un signal SIGPWR
, il regarde dans /etc/powerstatus
.
Si celui-ci contient FAIL
, il exécute l'entrée powerfail
du fichier
/etc/inittab
.
S'il contient OK
, il exécute l'entrée powerokwait
de inittab
.
Ce qui suit présuppose que vous disposez d'un câble qui fonctionne correctement avec powerd. Si vous n'en êtes pas sûr, voyez la section : Analyse de câbles et modification de powerd.c pour toute information sur les câbles mal décrits et la reconfiguration de powerd. Les sections Assignement des broches du port série et Correspondance entre ioctl et RS232 seront aussi utiles.
Si vous devez fabriquer un câble, voyez la section : Comment réaliser un câble ? pour les détails généraux, et la sous-section de : Informations sur un certain nombre d'onduleurs qui se rapporte à votre onduleur. Cette dernière peut aussi contenir des informations sur les câbles fournis par le constructeur. Vous voudrez probablement parcourir toute la section Informations sur un certain nombre d'onduleurs car chaque section contient quelques détails supplémentaires généralement utiles.
/etc/inittab
. Placez-y quelque chose de ce genre :
# Que faire si le courant s'arrete
# (arreter le systeme et vider la batterie :) :
pf::powerfail:/etc/powerfailscript +5
# Si le courant revient avant la fin du shutdown, arreter celui-ci
pg:0123456:powerokwait:/etc/powerokscript
/etc/powerfailscript
et
/etc/powerokscript
pour arrêter le système après cinq minutes, ou
mener toute action appropriée, et tuer le shutdown en cours, respectivement.
En fonction de votre version de shutdown, cela sera, soit si trivial que vous
n'aurez même pas à écrire de script, soit un script d'une ligne bash,
quelque chose du genre :
kill `ps -aux | grep "shutdown" | grep -v grep | awk '{print $2}'`
et vous conserverez les scripts (au cas où cela ne vous arriverait pas dans un
parfait état, la première apostrophe sur la ligne ci-dessus est une quote inversée,
la seconde et la troisième sont des apostrophes, et la dernière est aussi une
quote inversée).
inittab
avec :
telinit q
powerd <ligne>
Remplacez <ligne>
par le port série modem sur lequel sera
connecté l'onduleur, comme dans : /dev/cua1
.
/etc/powerfailscript
est lancé,/etc/powerokscript
est lancé,/etc/powerfailscript
n'est pas lancé,Félicitations ! Vous avez maintenant un PC sous Linux protégé par onduleur qui va s'arrêter proprement lors d'une coupure de courant !
powerd.c
pour surveiller la ligne indiquant un faible
niveau de batterie.
Dans ce cas, exécutez un shutdown immediate ;