nach Hause zurück nach unten weiter

macpower Linux bewegt den ATX-Rechner nicht zum Ausschalten

Mein Server soll sich von Ferne zum Beispiel durch einen Telefonanruf einschalten lassen. Wenn man ein ATX-Netzteil hat, ein entsprechend ausgestattetes Motherboard und ein Modem am seriellen Port, so stellt das kein Problem dar. Doch ich wollte auch Strom sparen. Daher hatte ich vor, mit einem cron-script unter Linux zu überprüfen, ob überhaupt noch jemand den Server seit einiger Zeit genutzt hat. Wenn nicht, dann sollte er sich alleine ausschalten.

 Das Problem

Soweit die Theorie. Zunächst habe ich unter SuSE 6.1 einen experimentellen 2.2.5er Kernel mit Unterstützung der APM-Funktionen compiliert. Der Kernel läuft auch scheinbar einwandfrei und ohne Fehlermeldungen. Doch nun kommt mein erstes Problem: Mit welchem Programmaufruf schaffe ich es, daß sich der Server zunächst vollständig 'runterfährt', d. h. alle laufenden Prozesse und Programme beendet und sich dann abschaltet?

Als Hinweise habe ich bereits den Befehl halt -p erhalten, oder init 0 oder poweroff. Doch leider geht das so einfach nicht. Denn mit diesen Befehlen fährt er den Server sauber herunter und bleibt stehen - aber er schaltet sich nicht aus! Zunächst hatte ich einen fehlerhaften Kernel vermutet bzw. daß der Kernel die BIOS-APM Routinen nicht richtig anspricht. Doch dann habe ich ein init 0 | poweroff versucht. Circa 0,4 Sekunden später ist der Rechner ausgeschaltet. Beim nächsten Start räumt er dann erst mal die Festplatte wieder auf, da die Programme und Prozesse nicht richtig beendet wurden. Das kann es also nicht sein.

Ich habe weiterhin in allen verfügbaren manpages nachgelesen, um irgendetwas hilfreiches herauszufinden. Doch leider ohne Erfolg. Scheinbar ist der Aufruf korrekt und der Kernel schafft es auch, dem APM-BIOS das poweroff-Signal zu geben. Also muß der Fehler woanders liegen

 Die Lösung

Einige Zeit später habe ich einfach redhat 6.0 auf diesem Rechner installiert. Auch hier habe ich mir einen eigenen Kernel mit make menuconfig erstellt, allerdings eine 2.2.5-15de Version. Ein Problem, das sich hierbei sofort ergab: LILO meldet ständig /boot/kernel too big zu meinem neuen Kernel, und das, obwohl der andere genutzte Kernel um 150 kByte größer ist! Dieses Problem mit der Revision 21 des LInux LOaders konnte ich leider nicht mehr lösen. Doch schon beim menuconfig fiel mir eine geänderte Benutzerführung auf, im Bereich APM-Funktionen gab es nun den Auswahlpunkt [ ] poweroff after shutdown. Unter der Konfiguration des 2.2.5er Kernels bei SuSE 6.1 war dieser Punkt nicht zur Auswahl gewesen. Den kompilierten Kernel habe ich mir zur Sicherheit auf Diskette kopiert.

Danach habe ich noch einmal SuSE 6.1 installiert und diesen Kernel bei LILO eingebunden. Hier brachte LILO keine Fehlermeldung, sondern startete den 2.2.5-15de ohne Probleme. Dann habe ich einfach noch einmal halt -p ausprobiert und siehe da - er fährt alle Programme herunter, schreibt noch kurz ein System will be halted immediately auf den Bildschirm und dann schaltet er sich ab. Nach einem Update auf SuSE 6.2 und Kernel 2.2.10 ging es auch mit dieser Distribution.

Soweit war das Problem also gelöst. Nun liegen nur noch 2 weitere Herausforderungen vor mir. Zunächst betrifft es wieder das Ein- bzw. Ausschalten. So im Bios aktiviert ist, daß er auf ein 'Modem ringing' reagieren soll und ein eingeschaltetes Modem am seriellen Port hängt, schaltet er nach einem shutdown nicht mehr ab, sondern vollführt einen Reset. Die Fehlerursache vermutete ich im fehlerhaften Bios.

Doch daran lag es nicht. Ich habe das BIOS des SOYO 5BT rev. 1.1 (TX Chipsatz) auf den Stand 7 von 1999 geflasht, doch es änderte sich nichts. Gemäß Spezifikation ist beim seriellen Port Pin5 Masse und Pin 9 RI (ring indikator - Anrufsignalisierung). Also habe ich nur diese beiden Pins verbunden, Reaktion des Rechners war gleich null. Das ganze Kabel gesteckt - sofort fährt er wieder hoch und solange das Modem eingeschaltet ist, läßt sich der Rechner nicht ausschalten, auch nicht mit irgendwelchen Tricks. So beschloß ich 2001, irgendwann weiterforschen.

In 2003 habe ich dann eine viel einfachere Lösung entwickelt. Zum einen läuft auf der alten Hardware nun SuSE Professional 8.2 mit 2.4er Kernel, damit gibt es nun keine Probleme mehr mit irgendwelchen APM-Funktionen. Die Lösung für die Einschaltfunktion via Telefonanruf habe ich ohne das Motherboard selbst gebastelt. Die Wechselspannung des Rufsignals der Telefonleitung habe ich über eine Graetzbrücke gleichgerichtet und dann über einen Tiefpaß (Widerstand von 3kOhm in Reihe und Kondensator von 1mF parallel) an ein Relais geführt. Dieses ist zum Einschalttaster im ATX-Gehäuse parallelgeschaltet und schaltet auf diese Weise den Rechner ein. Die normale Versorgungsspannung der Telefonleitung reicht nicht aus, um das Relais ansprechen zu lassen. So hatte die Ausbildung zum Kommunikationselektroniker Fachrichtung Telekommunikationstechnik doch noch einen Nutzen :-)

Dass die poweroff-Funktion nun kein Problem mehr ist, muß wohl nicht erwähnt werden. Das cron-script zur Überprüfung der Rechneraktivität sieht wie folgt aus:

# bash 2.01
# script/ascii

/dev/null

wish you where here

root@home:>poweroff
warning: this html-page is not complete
         please add the missing content

last updated: 5.3.2004 from MGU via GPRS

In der Praxis ist das automatische Herunterfahren des Rechners von mir gar nicht mehr erwünscht. Zur Zeit läuft XMMS dort im Shufflemodus auf Dauerschleife. Über ein kabelloses 843kHz Lautsprechersystem das per Zeitschaltuhr eingeschaltet wird habe ich mir einen GEZ-freien Radiowecker geschaffen. Das ist einerseits völlig legal und ich kann dank beruhigten Gewissens besser schlafen - außerdem nervt mich weder ein Radiosprecher noch Werbung.

nach Hause zurück nach oben weiter

© 1999-2005 saiht