Forum: Projekte & Code FreeBSD System runterfahren und neustarten, C.


von Igor Buchmueller (Gast)


Angehängte Dateien:

Lesenswert?

Fuer diese Geschichte braucht man folgendes:


 o Einen Mikrokontroller der an die serielle Schnittstelle ein paar
Bytes schreiben kann. Ein Umfangreiches Beispiel findet sich auf
http://www.eblux.de/index.php?link=elektronik&sublink=avrboard

 o Ein BSD System. Mit Linux habe ich es nicht ausprobiert.

Der verwendete Mikrokontroller war ein AT90S8515, wer den code fuer den
Chip braucht, kann gerne an coden@int80h.de mailen.


Beschreibung:

Das beinhaltete C Programm ist im Prinzip sehr simpel. Der Chip sendet
3 verschiedene Bytes, 0, 1 und 6. Welches Byte gesendet werden kann,
kann man z.B. ueber Taster bestimmen. Die ankommenden Bytes werden von
dem Programm gelesen, je nach dem welches Byte gelesen wird sendet das
Programm dem init Prozess ein Signal zum Herunterfahren, neustarten
oder versetzt es in den single user mode. Man kann noch logins
vermeiden oder die ttys(5) neu einlesen, das habe ich aber noch nicht
implementiert. Zusaetzlich wird der Speaker des Computers einmal beim
neustarten, zweimal beim Eintritt in den Single-User mode und drei mal
beim Neustarten getaetigt. Vier mal bei einem Fehler.

Die Zahlen 0, 1 und 6 wurden gewaehlt weil es die Runlevels von FreeBSD
sind, init(8):

  Run-level    Signal     Action
     0            SIGUSR2    Halt and turn the power off
     1            SIGTERM    Go to single-user mode
     6            SIGINT     Reboot the machine
     c            SIGTSTP    Block further logins
     q            SIGHUP     Rescan the ttys(5) file

D.h. die Zahlen die der Mikrokontroller sendet koennen andere sein, sie
muessen nur im code veraendert werden (src/halt.c)
Die Runlevel c und q sind im Moment nicht implementiert.

Das Programm liest standardmaessig das Device /dev/cuaa0, falls man es
am "COM2" angeschlossen hat, so kann man das natuerlich in
"src/avr.h" unter #define DEVICE aendern.

Zweck:

Mit diesem kleinen C Programm wollten ein Freund (www.eblux.de) und ich
simpel ausprobieren wie man ein Unixsystem ueber einen Controller
steuern kann. Computer ohne Tastaturen oder Monitore koennen somit
leicht neugestartet werden ohne sich mit ssh einlogen zu muessen oder
auf Remote Dienste angewiesen zu sein.

Es befindet sich noch in der aller ersten Version, laeuft aber recht
stabil.

Deswegen bitte ich um Feedback, falls es jemals mal benutzen sollte
:-)


Viel Spass Leute.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.