Apakah mengembangkan / menguji modul linux aman menggunakan mesin virtual?


18

Saya di kelas sistem operasi. Segera, kita harus melakukan beberapa pekerjaan memodifikasi kode kernel. Kami telah disarankan untuk tidak menggunakan mesin pribadi untuk menguji (saya kira ini berarti menginstalnya) karena kami dapat menulis kode yang buruk dan menulis di suatu tempat yang tidak seharusnya. Kami diberi akses ke mesin di lab agar aman.

Jika saya menguji menggunakan VM, apakah itu akan melindungi sistem host dari kode yang berpotensi tidak aman? Saya benar-benar ingin tidak harus terjebak pada sistem di sekolah dan foto akan berguna.

Jika masih berisiko tinggi, ada saran tentang apa yang perlu saya pertimbangkan untuk diuji dengan aman?

Kami akan menggunakan sesuatu seperti linuxmint untuk memulai. Jika ada yang ingin melihat apa yang akan ada dalam proyek saat ini: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


Sejujurnya tidak begitu berisiko untuk melakukannya pada perangkat keras nyata, terutama jika Anda mengambil cadangan. Sudah, dan saya yakin banyak devs lain juga.
hobbs

@ hobbs Itu karena banyak dari kita suka hidup berbahaya, biasanya cukup lama untuk menyesalinya. Bekerja pada mesin Anda yang sebenarnya baik-baik saja jika Anda seorang pengembang yang hati-hati mengerjakan modul yang agak kecil. Untuk pengembangan yang lebih besar (atau pengembang yang ceroboh) , mungkin yang terbaik adalah bekerja di lingkungan yang terisolasi. Mungkin juga merupakan ide bagus untuk bekerja pada "distribusi bersih", untuk memastikan tidak ada penyesuaian tingkat kernel yang dapat mengganggu modul Anda. Perlu diingat bahwa pengembangan modul kernel adalah tempat kesalahan terkecil dapat memiliki konsekuensi yang paling mengerikan: D
John WH Smith

Jawaban:


28

Risiko utama pengembangan modul kernel adalah bahwa Anda dapat crash sistem Anda lebih mudah daripada dengan kode biasa, dan Anda mungkin akan menemukan bahwa Anda kadang-kadang membuat modul yang tidak dapat dibongkar yang artinya Anda harus reboot untuk memuat ulang mereka setelah Anda memperbaiki apa yang salah.

Ya, VM baik untuk pengembangan semacam ini dan itulah yang saya gunakan ketika saya bekerja pada modul kernel. VM dengan baik mengisolasi lingkungan pengujian Anda dari sistem Anda yang berjalan.

Jika Anda akan mengambil dan mengembalikan snapshot, Anda harus menjaga kode sumber Anda tetap masuk ke repositori kontrol versi di luar VM sehingga Anda tidak akan kehilangan kode terbaru secara tidak sengaja ketika Anda membuang status VM saat ini.


3
Atau mungkin untuk mengambil snapshot hanya aspek-aspek tertentu dari VM. Menyimpan kode sumber pada disk virtual yang terpisah, misalnya. Tentu saja, repositori kode sumber out-of-VM di mana Anda secara teratur memeriksa kode adalah ide yang baik; itu bisa menyelamatkan Anda dari banyak kesalahan memalukan, dan mengajarkan praktik pengkodean yang baik.
CVn

Sisi lain dari crash sistem Anda lebih mudah adalah ketika Anda crash sistem Anda, Anda memiliki peluang lebih tinggi untuk menyebabkan korupsi kolateral.
user253751

14

Dengan asumsi Anda tidak mencoba untuk menulis driver untuk perangkat keras yang sebenarnya, ini adalah cara yang bagus untuk bekerja pada modul. Anda dapat memotret sistem kerjanya, dan jika Anda meledakkan sesuatu, kembali saja ke snapshot itu.

Jika Anda bisa, buat duplikat penuh dari VM, kalau-kalau sistem snapshot lebih aneh dari yang saya kira. :)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.