O desenvolvimento / teste de um módulo Linux é seguro usando uma máquina virtual?

18

Eu estou em uma classe de sistemas operacionais. Em breve, temos que trabalhar para modificar o código do kernel. Fomos aconselhados a não usar máquinas pessoais para testar (suponho que isso significa instalá-lo), pois poderíamos escrever código incorreto e escrever em algum lugar que não devíamos. Temos acesso a uma máquina em um laboratório para segurança.

Se eu testasse usando uma VM, isso protegeria o sistema host de códigos potencialmente inseguros? Eu realmente quero não ter que ficar preso a um sistema na escola e os instantâneos serão úteis.

Se ainda houver alto risco, alguma sugestão sobre o que preciso considerar para testar com segurança?

Vamos usar algo como linuxmint para começar. Se alguém quiser ver o que estará no projeto atual: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf

entimaníaco
fonte
Honestamente, não há muito risco em hardware real, principalmente se você fizer backups. Eu tenho, e tenho certeza que muitos outros desenvolvedores também.
Hbbs #
@ Hobbs Isso porque muitos de nós gostam de viver perigosamente, geralmente o tempo suficiente para se arrepender. Trabalhar em sua máquina real é bom se você for um desenvolvedor cuidadoso trabalhando em módulos bastante pequenos. Para desenvolvimentos maiores (ou desenvolvedores descuidados) , provavelmente é melhor trabalhar em um ambiente isolado. Também pode ser uma boa idéia trabalhar em uma "distribuição limpa", para garantir que nenhuma personalização no nível do kernel possa interferir no seu módulo. Tenha em mente que o desenvolvimento de módulos do kernel é onde o menor erro pode ter conseqüências mais terríveis: D
John WH Smith

Respostas:

28

Os principais riscos do desenvolvimento de módulos do kernel são que você pode travar seu sistema com muito mais facilidade do que com o código comum, e provavelmente descobrirá que às vezes cria módulos que não podem ser descarregados, o que significa que você precisará reiniciar para recarregar depois de corrigir o que está errado.

Sim, uma VM é boa para esse tipo de desenvolvimento e é o que eu uso quando estou trabalhando nos módulos do kernel. A VM isola bem o ambiente de teste do sistema em execução.

Se você deseja tirar e restaurar instantâneos, mantenha seu código-fonte marcado em um repositório de controle de versão fora da VM, para não perder acidentalmente seu código mais recente ao descartar o estado atual da VM.


fonte
3
Ou talvez seja possível capturar instantâneos apenas determinados aspectos da VM. Manter o código-fonte em um disco virtual separado, por exemplo. Obviamente, um repositório de código-fonte fora da VM para o qual você faz check-in regularmente é uma boa idéia; ele pode evitar muitos erros embaraçosos e ensina boas práticas de codificação.
um CVn
O outro lado de travar seu sistema com mais facilidade é que, quando você travar seu sistema, você terá uma chance maior de causar corrupção colateral.
user253751
14

Supondo que você não esteja tentando escrever um driver para o hardware real, essa é uma ótima maneira de trabalhar nos módulos. Você pode fazer uma captura instantânea do sistema em funcionamento e, se explodir algo, basta voltar para a captura instantânea.

Se você puder, faça uma duplicata completa da VM, apenas no caso do sistema de snapshots ser mais estranho do que eu acho. :)

Serra de corte
fonte