Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1360

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>software</TITLE>
</HEAD>
<BODY>
<A NAME="do-it-yourself"></A> <H1>5. <A NAME="s5"></A>softwareFaites-le vous-m&ecirc;me</H1>
<P>
<A HREF="UPS-HOWTO.html#toc5">Contenu de cette section</A></P>

<P>Ce chapitre est sp&eacute;cifiquement destin&eacute; au contr&ocirc;le des onduleurs b&ecirc;tes.
N&eacute;ammoins, une grande partie du processus est &agrave; peu pr&egrave;s identique pour
les onduleurs intelligents.
La principale diff&eacute;rence r&eacute;side dans la mani&egrave;re dont le daemon (typiquement
<EM>powerd</EM>) de surveilance communique avec l'onduleur.</P>
<P>Avant de faire quoi que ce soit, je sugg&egrave;re l'algorithme suivant&nbsp;:</P>
<P>
<UL>
<LI>parcourir ce document&nbsp;;</LI>
<LI>t&eacute;l&eacute;charger et &eacute;tudier tous les paquetages qui semblent
adapt&eacute;s sp&eacute;cifiquement &agrave; son onduleur&nbsp;;</LI>
<LI>t&eacute;l&eacute;charger et &eacute;tudier les paquetages plus g&eacute;n&eacute;riques.
Notes que certains d'entre eux sont en fait plus puissants, mieux document&eacute;s
et plus faciles d'emploi que leurs &eacute;quivalents sp&eacute;cifiques&nbsp;;</LI>
<LI>si les choses ne se passent pas bien ou si certains points
restent obscurs, lire le pr&eacute;sent document avec attention et bidouiller avec
ardeur et pr&eacute;caution...</LI>
</UL>
</P>
<P></P>
<A NAME="needed"></A> <H2>5.1 <A NAME="ss5.1"></A> Que faut-il faire (sommairement)&nbsp;?</H2>

<P>
<UL>
<LI>brancher l'ordinateur sur l'onduleur&nbsp;;</LI>
<LI>connecter le port s&eacute;rie de l'ordinateur &agrave; l'onduleur avec
un c&acirc;ble sp&eacute;cial&nbsp;;</LI>
<LI>lancer <EM>powerd</EM> (ou un de ses &eacute;quivalents) sur l'ordinateur&nbsp;;</LI>
<LI>configurer <EM>init</EM> pour r&eacute;aliser quelque chose de raisonnable
sur les &eacute;v&eacute;nements <EM>powerfail</EM> et <EM>powerok</EM> (comme lancer un
<EM>shutdown</EM> et tuer tout <EM>shutdown</EM> en cours respectivement, par
exemple).</LI>
</UL>
</P>
<P></P>

<A NAME="working"></A> <H2>5.2 <A NAME="ss5.2"></A> Comment est-ce suppos&eacute; fonctionner&nbsp;?</H2>

<P>
<DL>
<DT><B>Travail de l'onduleur</B><DD><P>Lorsque le courant s'arr&ecirc;te, l'onduleur continue d'alimenter le PC et signale
l'arr&ecirc;t du courant par bascule d'un relais ou d'un optocoupleur sur son port
de contr&ocirc;le.</P>
<P></P>
<DT><B>Travail du c&acirc;ble</B><DD><P>Le c&acirc;ble est con&ccedil;u de telle mani&egrave;re que lorsque l'onduleur bascule ledit
relais, cela monte un signal de contr&ocirc;le particulier de la ligne s&eacute;rie
(typiquement <EM>DCD</EM>, d&eacute;tection de porteuse)</P>
<P></P>
<DT><B>Travail de powerd</B><DD><P>Le daemon <EM>powerd</EM> contr&ocirc;le le port s&eacute;rie.
Il maintient lev&eacute;s/baiss&eacute;s les signaux de contr&ocirc;le du port s&eacute;rie dont
l'onduleur a besoin (typiquement <EM>DTR</EM>, Terminal de Donn&eacute;es Pr&ecirc;t,
doit rester lev&eacute;, et touts les signaux qui coupent l'onduleur
doivent &ecirc;tre maintenus baiss&eacute;s).
Lorsque <EM>powerd</EM> voit le signal de contr&ocirc;le de l'onduleur monter,
il &eacute;crit <CODE>FAIL</CODE> dans <CODE>/etc/powerstatus</CODE> et envoie un signal
<CODE>SIGPWR</CODE> au process <EM>init</EM> (les anciennes versions de <EM>powerd</EM>
et <EM>init</EM> &eacute;crivent dans <CODE>/etc/powerfail</CODE>).
Lorsque le signal de contr&ocirc;le redescend, il &eacute;crit <CODE>OK</CODE> dans
<CODE>/etc/powerstatus</CODE> et envoie un signal <CODE>SIGPWR</CODE> &agrave; <EM>init</EM>.</P>
<P></P>
<DT><B>Travail de init (en plus de tout ce qu'il fait par ailleurs)</B><DD><P>Lorsqu'il re&ccedil;oit un signal <CODE>SIGPWR</CODE>, il regarde dans <CODE>/etc/powerstatus</CODE>.
Si celui-ci contient <CODE>FAIL</CODE>, il ex&eacute;cute l'entr&eacute;e <CODE>powerfail</CODE> du fichier
<CODE>/etc/inittab</CODE>.
S'il contient <CODE>OK</CODE>, il ex&eacute;cute l'entr&eacute;e <CODE>powerokwait</CODE> de <CODE>inittab</CODE>.</P>
<P></P>
</DL>
</P>
<P></P>

<A NAME="configure"></A> <H2>5.3 <A NAME="ss5.3"></A> Comment configurer tout &ccedil;a&nbsp;?</H2>

<P>Ce qui suit pr&eacute;suppose que vous disposez d'un c&acirc;ble qui fonctionne correctement
avec <EM>powerd</EM>.
Si vous n'en &ecirc;tes pas s&ucirc;r, voyez la section&nbsp;:
<A HREF="UPS-HOWTO-6.html#hacking">Analyse de c&acirc;bles et modification de powerd.c</A>

pour toute information sur les c&acirc;bles mal d&eacute;crits et la reconfiguration de
<EM>powerd</EM>.
Les sections
<A HREF="UPS-HOWTO-6.html#serial-port">Assignement des broches du port s&eacute;rie</A>
 et
<A HREF="UPS-HOWTO-6.html#ioctl">Correspondance entre ioctl et RS232</A>
 seront aussi utiles.</P>
<P>Si vous devez fabriquer un c&acirc;ble, voyez la section&nbsp;:
<A HREF="UPS-HOWTO-6.html#make-cable">Comment r&eacute;aliser un c&acirc;ble&nbsp;?</A>

pour les d&eacute;tails g&eacute;n&eacute;raux, et la sous-section de&nbsp;:
<A HREF="UPS-HOWTO-8.html#ups-specific">Informations sur un certain nombre d'onduleurs</A>

qui se rapporte &agrave; votre onduleur.
Cette derni&egrave;re peut aussi contenir des informations sur les c&acirc;bles fournis
par le constructeur.
Vous voudrez probablement parcourir toute la section
<A HREF="UPS-HOWTO-8.html#ups-specific">Informations sur un certain nombre d'onduleurs</A>

car chaque section contient quelques d&eacute;tails suppl&eacute;mentaires g&eacute;n&eacute;ralement
utiles.</P>
<P>
<UL>
<LI>Editez <CODE>/etc/inittab</CODE>. Placez-y quelque chose de ce genre&nbsp;:

<BLOCKQUOTE><CODE>
<PRE>
# 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
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Ecrivez les scripts <CODE>/etc/powerfailscript</CODE> et
<CODE>/etc/powerokscript</CODE> pour arr&ecirc;ter le syst&egrave;me apr&egrave;s cinq minutes, ou
mener toute action appropri&eacute;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&ecirc;me pas &agrave; &eacute;crire de script, soit un script d'une ligne <EM>bash</EM>,
quelque chose du genre&nbsp;:

<BLOCKQUOTE><CODE>
<PRE>
kill `ps -aux | grep &quot;shutdown&quot; | grep -v grep | awk '{print $2}'`
</PRE>
</CODE></BLOCKQUOTE>


et vous conserverez les scripts (au cas o&ugrave; cela ne vous arriverait pas dans un
parfait &eacute;tat, la premi&egrave;re apostrophe sur la ligne ci-dessus est une quote invers&eacute;e,
la seconde et la troisi&egrave;me sont des apostrophes, et la derni&egrave;re est aussi une
quote invers&eacute;e).
</LI>
<LI>Dites &agrave; <EM>init</EM> de relire le fichier <CODE>inittab</CODE> avec&nbsp;:

<BLOCKQUOTE><CODE>
<PRE>
telinit q
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Editez rc.local pour lancer <EM>powerd</EM> lors du lancement.
Syntaxe&nbsp;:

<BLOCKQUOTE><CODE>
<PRE>
powerd &lt;ligne&gt;
</PRE>
</CODE></BLOCKQUOTE>


Remplacez <CODE>&lt;ligne&gt;</CODE> par le port s&eacute;rie modem sur lequel sera
connect&eacute; l'onduleur, comme dans&nbsp;: <CODE>/dev/cua1</CODE>.
</LI>
<LI>Connectez le port s&eacute;rie du PC &agrave; celui de l'onduleur.
NE BRANCHEZ PAS ENCORE LE PC SUR L'ONDULEUR.
</LI>
<LI>Branchez une lampe sur l'onduleur.
</LI>
<LI>Allumez l'onduleur et la lampe.
</LI>
<LI>Lancez <EM>powerd</EM>.
</LI>
<LI>Testez la configuration&nbsp;:
<UL>
<LI>D&eacute;branchez l'onduleur.
<UL>
<LI>Contr&ocirc;lez que la lampe reste allum&eacute;e,</LI>
<LI>Contr&ocirc;lez que <CODE>/etc/powerfailscript</CODE> est lanc&eacute;,</LI>
<LI>Contr&ocirc;lez que le shutdown est lanc&eacute;.</LI>
</UL>
</LI>
<LI>Rebranchez l'onduleur.
<UL>
<LI>Contr&ocirc;lez que la lampe reste allum&eacute;e,</LI>
<LI>Contr&ocirc;lez que <CODE>/etc/powerokscript</CODE> est lanc&eacute;,</LI>
<LI>Contr&ocirc;lez que <CODE>/etc/powerfailscript</CODE> n'est pas lanc&eacute;,</LI>
<LI>Contr&ocirc;lez que le shutdown est bien arr&ecirc;t&eacute;.</LI>
</UL>
</LI>
<LI>Red&eacute;branchez l'onduleur. Laissez-le d&eacute;branch&eacute; et v&eacute;rifiez que le
PC s'arr&ecirc;te proprement dans un d&eacute;lai correct.
</LI>
<LI><B>La Partie D&eacute;licate.</B>
Une fois que tout semble correct, arr&ecirc;tez le PC et branchez-le sur l'onduleur.
Lancez un script qui synchronise le disque dur toutes les secondes ou &agrave; peu
pr&egrave;s (sync).
Simultan&eacute;ment, lancez un second script qui ex&eacute;cute un find sur votre disque
entier.
Le premier sert &agrave; rendre l'op&eacute;ration plus s&ucirc;re, et le second, &agrave; consommer
le maximum de puissance.
Maintenant, tirez sur la prise de l'onduleur, v&eacute;rifiez une fois de plus que
le PC est lanc&eacute;, et attendez.
Assurez-vous que le PC s'arr&ecirc;te correctement avant que la batterie soit vide.
C'est dangereux, car si la batterie n'assure pas le d&eacute;lai d'arr&ecirc;t du PC,
vous pouvez vous retrouver avec un syst&egrave;me de fichiers corrompu, et
peut-&ecirc;tre m&ecirc;me la perte de tous vos fichiers.
Vous devriez probablement r&eacute;aliser une sauvegarde compl&egrave;te avant ce test, et
positionner un d&eacute;lai de shutdown tr&egrave;s court pour commencer.</LI>
</UL>
</LI>
</UL>
</P>
<P>F&eacute;licitations&nbsp;!
Vous avez maintenant un PC sous Linux prot&eacute;g&eacute; par onduleur qui
va s'arr&ecirc;ter proprement lors d'une coupure de courant&nbsp;!</P>
<P></P>
<P></P>

<A NAME="user-enh"></A> <H2>5.4 <A NAME="ss5.4"></A> Am&eacute;liorations Utilisateur</H2>

<P></P>
<P>
<UL>
<LI>Bidouillez <CODE>powerd.c</CODE> pour surveiller la ligne indiquant un faible
niveau de batterie.
Dans ce cas, ex&eacute;cutez un shutdown <B>immediate</B>&nbsp;;</LI>
<LI>Modifiez la proc&eacute;dure de shutdown, afin que lorsqu'elle
s'ex&eacute;cute dans des conditions de coupure de courant, elle &eacute;teigne l'onduleur
apr&egrave;s avoir effectu&eacute; tout le n&eacute;cessaire.</LI>
</UL>
</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="UPS-HOWTO-6.html">suivant</A>,
Chapitre <A HREF="UPS-HOWTO-4.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="UPS-HOWTO.html#toc5">ce chapitre</A>,
 <A HREF="UPS-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="UPS-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>