Lo sviluppo / test di un modulo Linux è sicuro usando una macchina virtuale?


18

Sono in una classe di sistemi operativi. In arrivo, dobbiamo fare del lavoro per modificare il codice del kernel. Ci è stato consigliato di non usare macchine personali per testare (suppongo che questo significhi installarlo) poiché potremmo scrivere codice errato e scrivere da qualche parte che non dovremmo. Per sicurezza, ci viene dato l'accesso a una macchina in un laboratorio.

Se dovessi testare usando una VM, questo proteggerebbe il sistema host da un codice potenzialmente non sicuro? Voglio davvero non dover essere bloccato su un sistema a scuola e le istantanee saranno utili.

Se è ancora ad alto rischio, qualche suggerimento su cosa devo considerare per testare in sicurezza?

Per prima cosa useremo qualcosa come linuxmint. Se qualcuno vuole vedere cosa sarà nel progetto attuale: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


Onestamente non è un gran rischio farlo su hardware reale, specialmente se si eseguono backup. Ho, e sono sicuro che anche molti altri sviluppatori hanno.
Hobbs

@hobbs Questo perché a molti di noi piace vivere pericolosamente, di solito abbastanza a lungo da pentirsi. Lavorare sulla tua vera macchina va bene se sei uno sviluppatore attento che lavora su moduli piuttosto piccoli. Per sviluppi più grandi (o sviluppatori disattenti) , probabilmente è meglio lavorare su un ambiente isolato. Potrebbe anche essere una buona idea lavorare su una "distribuzione pulita", per assicurarsi che nessuna personalizzazione a livello di kernel possa interferire con il tuo modulo. Tieni presente che lo sviluppo del modulo del kernel è dove l'errore più piccolo può avere le conseguenze più terribili: D
John WH Smith

Risposte:


28

I principali rischi nello sviluppo di moduli del kernel sono che puoi bloccare il tuo sistema molto più facilmente rispetto al codice normale e probabilmente scoprirai che a volte crei moduli che non possono essere scaricati, il che significa che dovrai riavviare per ricaricare dopo aver corretto ciò che non va.

Sì, una VM va bene per questo tipo di sviluppo ed è quello che uso quando lavoro sui moduli del kernel. La VM isola bene l'ambiente di test dal sistema in esecuzione.

Se eseguirai e ripristinerai istantanee, dovresti tenere il tuo codice sorgente archiviato in un repository di controllo versione esterno alla VM in modo da non perdere accidentalmente l'ultimo codice quando scarti lo stato corrente della VM.


3
Oppure potrebbe essere possibile eseguire l'istantanea solo di alcuni aspetti della VM. Mantenere il codice sorgente su un disco virtuale separato, ad esempio. Ovviamente, un repository di codice sorgente fuori dalla VM su cui si effettua regolarmente il check-in del codice è comunque una buona idea; può salvarti da molti errori imbarazzanti e insegna buone pratiche di programmazione.
un CVn

L'altro lato del crash del sistema più facilmente è che quando si arresta il crash del sistema, si hanno maggiori possibilità di causare corruzione collaterale.
user253751

14

Supponendo che non si stia tentando di scrivere un driver per l'hardware effettivo, questo è un ottimo modo per lavorare sui moduli. Puoi creare un'istantanea del sistema di lavoro e, se fai esplodere qualcosa, torna all'istantanea.

Se è possibile, creare un duplicato completo della VM, nel caso in cui il sistema di snapshot sia più strano di quanto si pensi. :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.