¿Es seguro desarrollar / probar un módulo Linux con una máquina virtual?

18

Estoy en una clase de sistemas operativos. A continuación, tenemos que hacer algo de trabajo para modificar el código del kernel. Se nos ha aconsejado que no usemos máquinas personales para probar (supongo que esto significa instalarlo) ya que podríamos escribir código incorrecto y escribir en algún lugar que no deberíamos. Se nos da acceso a una máquina en un laboratorio para estar seguros.

Si tuviera que probar usando una VM, ¿protegería eso el sistema host de un código potencialmente inseguro? Realmente quiero no tener que estar atascado en un sistema en la escuela y las instantáneas serán útiles.

Si todavía es de alto riesgo, ¿alguna sugerencia sobre lo que debo considerar para realizar una prueba de manera segura?

Vamos a utilizar algo como linuxmint para empezar. Si alguien quiere ver qué habrá en el proyecto actual: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf

entimaniac
fuente
Honestamente, no es un gran riesgo hacerlo en hardware real, especialmente si realiza copias de seguridad. Yo sí, y estoy seguro de que muchos otros desarrolladores también.
hobbs 01 de
@hobbs Eso se debe a que a muchos de nosotros nos gusta vivir peligrosamente, generalmente lo suficiente como para lamentarlo. Trabajar en su máquina actual está bien si es un desarrollador cuidadoso que trabaja en módulos bastante pequeños. Para desarrollos más grandes (o desarrolladores descuidados) , probablemente sea mejor trabajar en un entorno aislado. También podría ser una buena idea trabajar en una "distribución limpia", para asegurarse de que ninguna personalización a nivel de núcleo pueda interferir con su módulo. Tenga en cuenta que el desarrollo del módulo de kernel es donde el error más pequeño puede tener las consecuencias más terribles: D
John WH Smith

Respuestas:

28

Los principales riesgos de desarrollar módulos de kernel son que puede bloquear su sistema mucho más fácilmente que con el código normal, y probablemente encontrará que a veces crea módulos que no se pueden descargar, lo que significa que tendrá que reiniciar para volver a cargar después de arreglar lo que está mal.

Sí, una VM está bien para este tipo de desarrollo y es lo que uso cuando estoy trabajando en los módulos del kernel. La VM aísla muy bien su entorno de prueba de su sistema en ejecución.

Si va a tomar y restaurar instantáneas, debe mantener su código fuente registrado en un repositorio de control de versiones fuera de la VM para que no pierda accidentalmente su último código cuando descarte el estado actual de la VM.


fuente
3
O podría ser posible capturar solo ciertos aspectos de la VM. Mantener el código fuente en un disco virtual separado, por ejemplo. Por supuesto, un repositorio de código fuente fuera de la máquina virtual en el que ingresa regularmente el código es una buena idea de todos modos; puede salvarte de muchos errores embarazosos y enseña buenas prácticas de codificación.
un CVn
El otro lado de bloquear su sistema más fácilmente es que cuando lo bloquea, tiene una mayor probabilidad de causar corrupción colateral.
user253751
14

Suponiendo que no está intentando escribir un controlador para el hardware real, esta es una excelente manera de trabajar en módulos. Puede hacer una instantánea del sistema de trabajo y, si explota algo, simplemente vuelva a la instantánea.

Si puede, haga un duplicado completo de la VM, en caso de que el sistema de instantáneas sea más extraño de lo que creo. :)

Hack Saw
fuente