E
http://www.pro-linux.de/news/1/17113/matthew-garrett-spass-mit-reboot.html
Kernel-Entwickler Matthew Garrett hat sich mit der Kunst des Reboots eines PCs beschäftigt.
Fünf Methoden, und keine funktioniert zuverlässig:
- Die erste, klassische Methode zum Neustart führt über den Tastaturcontroller.
- Die zweite klassische Methode ist die Auslösung einer Dreifachausnahme der CPU. Doch auch das führt mittlerweile, je nach CPU, nicht mehr zum erwarteten Ergebnis.
- Die nächste Variante führt über den PCI-Bus. Durch das Schreiben eines speziellen Wertepaares sollte sich der Rechner zurücksetzen.
- Die eine ist in den EFI-Laufzeit-Diensten enthalten und funktioniert laut Garret üblicherweise. Es wäre aber zuviel verlangt, ein unbedingtes Funktionieren zu erwarten.
- Dann bleibt noch ACPI. Dieses stellt, wenn es neueren Versionen der Spezifikation folgt, eine Adresse und einen Wert zur Verfügung. Schreibt man den Wert in die angegebene Adresse, besteht immerhin die vage Möglichkeit, dass das System neu bootet.
... die Lösung kommt aus der Analyse des Ablaufs bei MS Windows:
Vor diesem Hintergrund ist es nicht weiter verwunderlich, dass Linux manche Geräte nicht zum Reboot bewegen kann. Unter Windows scheint dies aber meist zu gehen, und so untersuchte Garrett mit Hilfe von Qemu, was Windows genau macht. Es stellte sich heraus, dass Windows sich nur auf ACPI und den Tastaturcontroller stützt. Ist im ACPI keine Angabe vorhanden, steuert es den Controller an, versucht es, wenn erfolglos, nach einem Moment noch einmal, und gibt dann auf. Ist die ACPI-Information vorhanden, schreibt Windows den Wert an die angegebene Stelle, betätigt dann den Tastaturcontroller, und wiederholt das, falls es bis dahin kommt, noch einmal.
Da die BIOS-Entwickler im Wesentlichen für Windows programmieren, funktioniert diese Methode meist. Daher hat Garrett den Linux-Code für die kommende Version 3.0 entsprechend angepasst. Dadurch funktioniert der Reboot mit mehr Rechnern, beschleunigt den Neustart bei einigen anderen und vereinfacht den Reboot-Code.