Kernel Kaltstart / reboot?

A

alfred1

Grünschnabel
Hallo,
wir haben ein Problem mit einem fehlerhaften Bios bei Server zu denen es nicht so einfach ist physikalischen Zugriff zu bekommen.


Es äussert sich darin das nach einer uptime von ca. mehr als 100 Tagen beim Versuch zu rebooten die Kisten komplett tot sind, bis sie physikalisch
ein und ausgeschalten wurden. RLM/iKVM/iLO etc. ist nicht vorhanden. Das Bios können wir remote momentan nicht upgraden.


Bei einem "Kaltstart" durch ein und ausschalten ist das Problem erstmal weg, eben diesen Kaltstart möchte ich nun gerne haben, z.B. als kleinen Programm.
Man kann dem Kernel eine Option mitgeben "reboot=cold" - leider muss der Server dazu gebootet werden, was ja eben nicht funktioniert.



in reboot.c im Kernel Sourcecode steht in etwa sowas:


#define __va(x) ((void *)((unsigned long) (x)))
*((unsigned short *)__va(0x472)) = 0x0000;


Der Wert kann 0x1234 (warm Start) oder 0x0000 (Kaltstart sein).


Eingewickelt in eine main-Funktion kompiliert das Problemlos, beim Versuch es aufzurufen gibt es aber einen Coredump.

Ebenso als kleines Assembler Programm (movw $0x1234,0x0000) kompiliert es und erzeugt einen Coredump.


Ich vermute das ganze ist irgendwie abgesichert vom Linux Kernel aus.


Habt ihr einen Tip das hinzubekommen??


Alfred
 

Ähnliche Themen

CGI laesst sich nicht ausfuehren

Oben