FreeBSD System runterfahren und neustarten, C.

Gast #101526
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.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.