Ein Knopf zum Herunterfahren des Rechners für die serielle RS232 Schnittstelle mit LED's

ArticleCategory: [Choose a category for your article]

Hardware

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

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Guido Socher

en to de Guido Socher

AboutTheAuthor:[A small biography about the author]

Guido ist ein langjähriger Linuxfan. Die meiste Zeit entwickelt er Software oder arbeitet für LinuxFocus, aber von Zeit zu Zeit lötet er auch an der Hardware herum.

Abstract:[Here you write a little summary]

In diesem Artikel entwickeln wir einen kleiner Taster, den man an die serielle Schnittstelle anschließt. Er kann benutzt werden, um einen Server sauber herunterzufahren.

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

[Illustration]

ArticleBody:[The article body]

Einleitung

Ein richtiger Server braucht normalerweise keine Tastatur, Monitor oder gar eine Maus. Ein Server braucht ein gutes Betriebssystem, wie z.B Linux, und eine Netzwerkkarte. Geräte wie Maus und Tastatur stören nur. Wenn Linux auf dem Server läuft, ist es die einfachste und beste Lösung, den Server "remote" vom Arbeitsplatz aus bequem zu bedienen.

Beim Kauf eines Computers prüfe ich immer, daß er eine Biosoption hat, die es erlaubt, den Rechner ohne Tastatur zu booten. Alle guten Hersteller haben das. Einige, die immer noch denken, daß die Leute Windows wollen, booten nicht ohne Tastatur, aber das ist eine andere Geschichte und ich kann keinem empfehlen, solche Hardware zu kaufen.

Solch ein Computer ohne Tastatur und Monitor ist der perfekte Computer für eine Firewall, einen Web-Server, einen NFS File Server, einen Mailserver, eine ADSL Gateway etc... Er muß überhaupt kein schneller Rechner sein. Ein alter Pentium 100MHz mit genug RAM wird ohne weiteres einige hundert andere Rechner bedienen.

Keine Tastatur angeschlossen zu haben ist gut und angenehm, weil der Server dann nur eine kleine Kiste ist, die irgendwo in die Ecke, ins Regal oder in den Keller paßt. Manchmal würde man jedoch gerne einen kleinen Taster haben, mit dem man den Server ordentlich herunterfahren kann, ohne sich zuerst einzuloggen und den Shutdown Befehl einzugeben. Es könnte sein, das man gerade im Serverraum ist und der nächste Arbeitsplatzrechner ist 100 Meter weg oder jemand der physikalisch Zugang zum Rechner hat, aber kein root Passwort, muß den Rechner herunterfahen, bevor er die Stromversorgung abschaltet.

Einfach den Strom wegzunehmen, ist meist keine gute Idee, da man dabei Daten verlieren kann und das anschließende Hochfahren länger dauert.

Die Lösung ist die kleine und billige Schaltung, die in diesem Artikel vorgestellt wird.

Entwicklung der Schaltung

Wir werden eine kleine Schaltung mit 2 LEDs und einem Taster bauen. Eine grüne Leuchtdiode zeigt an, wenn der Taster aktiv ist und eine langsam blinkende gelbe LED zeigt, daß der Server arbeitet oder noch dabei ist herunterzufahren. Um den Server herunterzufahren, drückt man den Taster einfach für 3 Sekunden.

Wenn Du den Taster gedrückt hast, geht die grüne LED aus und zeigt damit an, daß der shutdown gerade im Gange ist. Der Befehl "/sbin/shutdown -t2 -h now" wird jetzt ausgeführt. Die gelbe LED blinkt weiter, während der Server noch herunterfährt. Wenn die gelbe LED aufhört zu blinken, dann sollte man noch 10 Sekunden warten, bis man ausschaltet. Die gelbe LED hört auf zu blinken, wenn alle Prozesse beendet sind und nun die Platten unmounted werden.
Falls der Computer automatisches power off unterstützt, dann braucht man sich über die 10 Sekunden keine Gedanken zu machen. Er schaltet sich selbst aus.

Die serielle Schnittstelle

Der interessante Aspekt der seriellen Schnittstelle ist, das es eine Anzahl von Kontakten gibt, die man direkt über ioctl Systemaufrufe steuern kann. Das bedeutet, man braucht keinen speziellen Treiber im Kernel, um diese LEDs anzusteuern oder den Taster abzufragen. Die serielle Schnittstelle hat gerade genug Ausgangsleistung, um zwei Lowpower LEDs anzusteuern. Wir werden die RTS und DTR Pins für die LEDs benutzen und den Taster an den Carrier Detect Eingang anschließen.
9 PIN D-SUB MALE

9 PIN D-SUB Stecker (männlich) am Computer.

9 PIN-connector 25 PIN-connector Name Dir Description
1 8 CD input Carrier Detect
2 3 RXD input Receive Data
3 2 TXD output Transmit Data
4 20 DTR output Data Terminal Ready
5 7 GND -- System Ground
6 6 DSR input Data Set Ready
7 4 RTS output Request to Send
8 5 CTS input Clear to Send
9 22 RI input Ring Indicator


Die Schaltung

Man braucht die folgenden Bauteile für die Schaltung.

circuit diagram Die Bauteile werden wie im Schaltbild dargestellt verdrahtet. Die Spannung an der seriellen Schnittstelle beträgt +/- 10 Volt. Der 1.5k Widerstand ist genau richtig für eine Lowpower LED, aber normale LEDs tun's auch. Ich empfehle, nicht die Werte der Widerstände zu ändern oder externe Spannungvesorgung zu benutzen, da die Ansteuerung der RS232 Schnittstelle beim PC im Chip-Set steckt. Wenn die Bausteine des Chip-Set kaputt gehen, braucht man ein neues Motherboard.


pcb

Das oben zu sehende Foto zeigt die fertig geätzte Schaltung. Ich habe leider kein Layout für die Platine. Bei einfachen Schaltungen zeichne ich die Bahnen einfach mit Asphaltlack direkt auf die Kupferplatine. Das ist das einfachste Verfahren.

Die endgültige Schaltung ist auf dem Bild oben im Artikel dargestellt. Man bohrt einfach vorsichtig 3 Löcher in die Vorderseite des Servers. Zwei 3mmm Löcher für die LEDs und ein Loch für den Taster. Die gesamte Schaltung ist sehr leicht und die Schraube des Tasters reicht aus, um sie sicher zu halten.

Die Software

Die Software besteht aus einem kleine Programm, das im Hintergrund läuft. Es kann über ein Skript aus /etc/rc.d/rc3.d/ gestartet werden. Die Systemaufrufe ioctl(fd, TIOCMSET,...) und ioctl(fd, TIOCMGET, ...) werden benutzt, um vom Serialport zu lesen oder dorthin zu schreiben. Man kann sled-0.1.tar.gz einfach von dieser Seite herunterladen. Ein Makefile und eine Installationsanleitung liegen bei.