2012-04-15 2 views
6

Meine Frage ist ziemlich breit, ich weiß, aber ich habe mich schon lange gefragt.Sollte ein fehlerhaftes USB-Gerät einen fehlerfreien Linux-Kernel zum Absturz bringen?

Ein kleiner Hintergrund. Ich arbeite in einem Physiklabor, wo auf allen Laborcomputern Debian (Mix aus alter Version und Lenny) oder neuerdings Ubuntu 10.4 LTS läuft. Wir haben eine Menge benutzerdefinierter Software geschrieben, um mit Experiment-Hardware und anderen Computern zu interagieren.

Wir haben eine Menge von FPGA-Boards, die verschiedene Teile des Experiments steuern, diese sind über USB mit verschiedenen Computern verbunden. Nachdem wir einen Computer aktualisiert hatten, der ein Experiment steuerte, sahen wir Abstürze/Blockierungen des Computers, auf dem alle Laser liefen. Dies war früher völlig stabil.

Meine Frage lautet: Wenn die gesamte Computer abstürzt aufgrund eines Problems mit a) Python/GTK Software gui b) USB-Gerätetreiber oder c) Das eigentliche Gerät kann dies auf dem Linux verantwortlich gemacht werden Kernel (oder andere Ebenen des Betriebssystems)?

Ist es ungerecht, vom Linux-Kernel zu fragen, nicht in Panik zu geraten, auch wenn ich Fehler in meiner Implementierung von Software/Hardware mache.

Meine eigene Vermutung: Alle Anwendungen auf Benutzerebene sollten niemals das gesamte System zum Absturz bringen, da sie nur Zugriff auf ihre eigenen Sachen haben sollten.

Jeder Gerätetreiber wird Teil des Kernels und kann ihn daher abstürzen. Klingt meine Argumentation?

Bonus Frage: Gibt es eine Möglichkeit, Gerät und Kernel irgendwie zu isolieren, so dass Linux weiterhin glücklich läuft, egal welche dummen Fehler mit der Hardware gemacht werden. Das wäre aus zwei Gründen sehr nützlich: 1) Debugging ist einfacher mit einem laufenden System, 2) Für die Zwecke des Experiments brauchen wir wirklich lange Betriebszeiten und nur einen Teil des Systemabsturzes ist unendlich besser als Abstürze in einem Teil des Systems, das sich zum Rest ausbreitet.

Alle Links und Lesestoff zu diesem Thema wäre willkommen. Vielen Dank.

+0

Ich bin kein Experte in Abstürzen, aber ich würde sagen, dass Sie in Ihren Vermutungen richtig sind. Über die Bonusfrage sollte logischer Fehler (dh schlechtes Protokoll) vom Kernel ohne weitere Probleme bewältigt werden; aber physikalische Fehler (dh Kurzschluß, Überstrom usw.) können im allgemeinen nicht vom Kern verwaltet werden und werden verschiedene Katastrophen verursachen. – rodrigo

Antwort

3

Sie haben Recht, dass nicht privilegierter Code das System nicht zum Absturz bringen kann, es sei denn, es liegt ein Kernel-Fehler vor. Die Grenze zwischen unprivilegiert und privilegiert ist jedoch nicht genau dieselbe wie zwischen User-Space und Kernel. Ein Programm im Benutzermodus kann /dev/kmem öffnen und die internen Datenstrukturen des Betriebssystems löschen, wenn das Benutzerkonto über Superuser-Berechtigungen verfügt.

Um den Hauptkernel von Gerätetreiberproblemen zu isolieren, führen Sie den Gerätetreiber in einer virtuellen Maschine aus.

Mehrere bekannte VM-Systeme, einschließlich VMWare Workstation, unterstützen die Weiterleitung eines beliebigen USB-Geräts vom Host zum Gast ohne einen gerätespezifischen Treiber auf dem Host.

+0

Folgefrage. Vorausgesetzt, der Gerätetreiber wurde korrekt geschrieben, sollte ein Hardwarefehler (des angeschlossenen Geräts) das System nicht herunterfahren können, richtig? – HansHarhoff

+0

@HansHarhoff: Solange die fehlgeschlagene Hardware nicht die zulässigen maximalen Toleranzen für den Computer-Port verursacht, an dem sie verletzt wurde, ist das korrekt.Die meisten USB-Hosts sind beispielsweise gegenüber Kurzschlüssen tolerant. Auf der anderen Seite, wenn Sie einen Blitzschlag zu einem USB-Kabel springen, sind alle Wetten aus, weil die maximalen Bewertungen überschritten werden. –

+0

Meine zwei Hauptprobleme sind, wie Sie sagen, Kurzschlüsse des USB-Anschlusses (oder zumindest Spannungsabfälle) und versehentliche/plötzliche Trennung der Hardware. Wir testen gerade, ob powered USB Hubs als Puffer für den Kurzschluss dienen könnten. In Bezug auf die plötzliche Entfernung denke ich, die wichtigsten Dinge sind, eine Auszeit zu haben, wenn sie auf eine Antwort warten. – HansHarhoff

Verwandte Themen