Un pulsante per spegnere il computer per mezzo di una porta seriale.

ArticleCategory: [Choose a category for your article]

Hardware

AuthorImage:[Here we need a little image from you]

[Foto dell'autore]

TranslationInfo:[Author and translation history]

original in en Guido Socher 

en to it Toni Tiveron

AboutTheAuthor:[A small biography about the author]

Guido è da lungo tempo un fan di Linux. Per la maggior parte del suo tempo egli sviluppa software o lavora per _LF_. Di quando in quando si diletta nella progettazione di hardware.

Abstract:[Here you write a little summary]

In questo articolo progetteremo un piccolo pulsante da collegare alla porta seriale del Vostro server. Potrete utilizzarlo per spgnerlo, quando necessario.

ArticleIllustration:[This is the title picture for your article]

[Illustrazione]

ArticleBody:[The article body]

Introduzione

Una vera macchina usata come server, normalmente, non ha bisogno di mouse, tastiera o monitor. Ha bisogno solamente di un buon sistema operativo, come Linux, e di una scheda di rete. Preiferiche esterne, come il mouse e la tastiera sono solo un ingombro. Con Linux come sistema operativo, l'amministrazione remota è la migliore e più conveniente soluzione.

Quando acquisto un computer verifico sempre che abbia l'opzione, a livello BIOS, di non controllolare la presenza della tastiera e del mouse per avviarsi. Tutte le piastre madri di noti produtturi, oggigiorno hanno questa opzione. Alcuni produttori sono convinti che con il loro hardware ci farete girare solo windows. Non vi raccomando affatto di acquistare questo genere di hardware.

Un computer senza tastiera e monitor è la macchina ideale per creare un firewall, un server web, un file server NFS, un server di posta elettronica, un gateway per linee ADSL, etc... Non è necessario sia un computer molto potente. Per esempio un vecchio Pentium 100MHz con la giusta quantità di RAM può servire un centinaio di macchine.

Non avere la tastiera ed il mouse è altresì conveniente perchè il server diviene una scatola compatta, che si può piazzare facilmente in un angolo o su di uno scaffale. A volte può fare comodo avere un tasto per spegnerla in maniera propia senza doversi loggare da remoto nel sistema e digitare il comando shutdown. Potrebbe benissimo essere che siate già nella sala server e che la postazione di lavoro più vicina sia a 100 metri, o magari che la persona che deve in quel momento spegnere il server, per esempio per un problema di alimentazione, non abbia accesso al livello di amministratore, ma possa raggiunger fisicamente la macchina.

Spegnere il server brutalmente non è mai una buona idea. Correte il rischio di perder dati e che il controllo del disco al successivo avvio richieda molto tempo.

La soluzione è una piccola ed economica periferica seriale presentata in questo articolo.

La periferica

Costruiremo una piccola periferica con due LED ed un pulsante. Un LED verde indicherà quando il pulsante è attivo ed un LED giallo, che lampeggia lentamente, indicherà che il server sta lavorando o che lo shutdown non è ancora completo. Per spegnere il server dovrete tenere premuto il pulsante per almeno 3 secondi.

Quando avrete premuto il pulsante, il LED verde si pegnerà indicando che la macchina sta eseguendo lo shutdown. Alla pressione del tasto verrà eseguito il comando "/sbin/shutdown -t2 -h now". Il LED giallo continurà a lampeggiare mentre il server eseguirà lo spegnimento. Quando il LED giallo terminerà di lampeggiare dovrete attender altri 10 secondi prima di spegnere il computer. Difatti il LED giallo si spegne quando non vi sono più processi attivi ed i dischi stanno per esser de-mappati (umount)
Se il Vostro computer supporta lo spegnimento automatico non dovrete nemmeno preoccuparvi di attendere i 10 secondi. Dovrete solo attendere che si spenga da solo.

La porta seriale

La cosa interessante di una porta seriale è che ha un certo numero di pin che possono essere controlloti per mezzo delle chiamate di sistema ioctl. Questo significa che non si deve modificare nulla nel kernel per controllare un LED collegato alla porta seriale o per acquisire lo stato di un pulsante ad essa collegato. La porta ha corrente a sufficienza per controllare due LED a basso comsumo. Utilizzeremo i segnali RTS e DTR per collegare i LED ed i CD sarà usato per verificare lo stato del pulsante.
Il connettore DB9 Maschio

Il connettore DB9 Maschio sul computer.

9 PIN 25 PIN Nome Tipo Descrizione
1 8 CD input (Carrier Detect), controllo della portante dalla linea
2 3 RXD input (Recieve Data), ricezione dati
3 2 TXD output (Trasmission Data), trasmissione dati
4 20 DTR output (Data Terminal Ready), pronto per trasmettere dati
5 7 GND -- Massa
6 6 DSR input (Data Set Ready), pronto a ricevere i dati
7 4 RTS output (Request to Send), disponibilità a trasmettere
8 5 CTS input (Clear to Send), consenso alla trasmissione
9 22 RI input (Ring Indicator), indica la presenza sulla linea del segnale di chiamata

(Nota del traduttore: al seguente link potrete trovare una spiegazione sulla porta RS232: http://www.vincenzov.net/tutorial/rs232/rs232.htm)

Il circuito

Vi servono i seguenti componenti per assemblare il pulsante di spegnimento con i realtivi LED.

Schema elettrico I componenti sono collegati tra loro come mostrato nello schema elettrico. I livelli di tensione sono quelli della porta seriale (+-10V). Le resistenze da 1k5 Ohm sono studiate per i LED a basso consumo, ma andranno benne anche con LED normali. Vi sconsiglio di cambiare il valore dei resistori o di ricorrere ad alimentatori esterni, in quanto le porte seriali sono integrate nella piastra madre. Se le bruciate sarete costretti, molto probabilmente, a cambiare tutta la pistra madre.


Il Circuito Stampato

Questa immagine mostra la basetta incisa. Non ho un layout di questo circuito, in quanto io preferisco fare i ciruciti a mano libera se si tratta di piccole basette, ricorrendo all'uso di pennarelli appositi (a vernice).

Il circuito nel suo insieme lo potete vedere nell'immagine all'inizio dell' articolo. Con calma effettuate 3 fori su un tappo per l'alloggiamento sul Vostro server. Due fori saranno da 3mm di diametro (come la misura dei LED) ed uno del diametro sufficiente a fissare il pulsante, per mezzo del suo dado. Date le modeste dimensioni del circuito il dado del pulsante sarà sufficiente per tenerlo fermo e saldo al pannello.

Il software

Il software è un piccolo processo che gira come servizio di sistema. Può essere avviato per mezzo di uno script di boot al runlevel 3 (andrà quindi posizionato nella cartella /etc/rc.d/rc3.d/). Esso utilizza le funzioni ioctl(fd, TIOCMSET,...) e ioctl(fd, TIOCMGET, ...) per scrivere e leggere dalla porta seriale. Potete scaricare sled-0.1.tar.gz da questo link . Un MakeFile e le relative istruzioni sono incluse nel file.

Buon Lavoro