Ist das Entwickeln / Testen eines Linux-Moduls mit einer virtuellen Maschine sicher?

18

Ich bin in einer Betriebssystemklasse. Als nächstes müssen wir einige Arbeiten durchführen, um den Kernel-Code zu modifizieren. Es wurde uns geraten, keine Personalcomputer zum Testen zu verwenden (ich nehme an, dies bedeutet, es zu installieren), da wir schlechten Code schreiben und irgendwo darüber schreiben könnten, was wir nicht sollten. Wir erhalten aus Sicherheitsgründen Zugang zu einer Maschine in einem Labor.

Wenn ich mit einer VM testen würde, würde dies das Hostsystem vor potenziell unsicherem Code schützen? Ich möchte wirklich nicht an einem System in der Schule festhalten müssen und Schnappschüsse werden nützlich sein.

Wenn das Risiko immer noch hoch ist, gibt es Vorschläge, was ich beachten muss, um sicher zu testen?

Wir werden zunächst etwas wie linuxmint verwenden. Wenn jemand sehen möchte, was im aktuellen Projekt sein wird: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf

entimaniac
quelle
Es ist ehrlich gesagt kein so großes Risiko, dies auf echter Hardware zu tun, insbesondere wenn Sie Backups erstellen. Ich habe und ich bin mir sicher, dass es auch viele andere Entwickler gibt.
Hobbs
@hobbs Das liegt daran, dass viele von uns gerne gefährlich leben, normalerweise lange genug, um es zu bereuen. Die Arbeit an Ihrem Computer ist in Ordnung, wenn Sie ein vorsichtiger Entwickler sind, der an eher kleinen Modulen arbeitet. Für größere Entwicklungen (oder sorglose Entwickler) ist es wahrscheinlich am besten, in einer isolierten Umgebung zu arbeiten. Es kann auch eine gute Idee sein, an einer "sauberen Distribution" zu arbeiten, um sicherzustellen, dass keine Anpassungen auf Kernelebene Ihr Modul beeinträchtigen können. Denken Sie daran, dass bei der Entwicklung von Kernelmodulen der kleinste Fehler die schrecklichsten Konsequenzen haben kann: D
John WH Smith

Antworten:

28

Die Hauptrisiken bei der Entwicklung von Kernelmodulen bestehen darin, dass Sie Ihr System viel einfacher zum Absturz bringen können als mit normalem Code, und Sie werden wahrscheinlich feststellen, dass Sie manchmal Module erstellen, die nicht entladen werden können, was bedeutet, dass Sie zum erneuten Laden einen Neustart durchführen müssen sie, nachdem Sie das Problem behoben haben.

Ja, eine VM ist in Ordnung für diese Art der Entwicklung, und ich verwende sie, wenn ich an Kernelmodulen arbeite. Die VM isoliert Ihre Testumgebung gut von Ihrem laufenden System.

Wenn Sie Snapshots erstellen und wiederherstellen möchten, sollten Sie Ihren Quellcode in einem Versionskontroll-Repository außerhalb der VM aufbewahren, damit Sie nicht versehentlich Ihren neuesten Code verlieren, wenn Sie den aktuellen Status der VM verwerfen.


quelle
3
Oder es ist möglich, nur bestimmte Aspekte der VM zu erfassen. Zum Beispiel den Quellcode auf einer separaten virtuellen Festplatte speichern. Natürlich ist ein außerhalb der VM befindliches Quellcode-Repository, in das Sie regelmäßig Code einchecken, eine gute Idee. Es kann Sie vor vielen peinlichen Fehlern bewahren und vermittelt gute Codierungspraktiken.
ein Lebenslauf
Die andere Seite des leichteren Absturzes Ihres Systems ist, dass Sie bei einem Absturz Ihres Systems eine höhere Wahrscheinlichkeit haben, Kollateralschäden zu verursachen.
user253751
14

Vorausgesetzt, Sie versuchen nicht, einen Treiber für die eigentliche Hardware zu schreiben, ist dies eine großartige Möglichkeit, um an Modulen zu arbeiten. Sie können das funktionierende System mit einem Schnappschuss versehen. Wenn Sie etwas in die Luft jagen, kehren Sie einfach zum Schnappschuss zurück.

Wenn Sie können, machen Sie ein vollständiges Duplikat der VM, nur für den Fall, dass das Snapshot-System seltsamer ist als ich denke. :)

Hack Saw
quelle