使用虚拟机开发/测试Linux模块是否安全?


18

我在操作系统课上。即将来临,我们必须做一些修改内核代码的工作。建议我们不要使用个人计算机进行测试(我想这意味着要安装它),因为我们可能会编写错误的代码,并在不应该编写的地方进行编写。为了安全起见,我们可以访问实验室中的机器。

如果要使用VM进行测试,是否可以保护主机系统免受潜在的不安全代码的侵害?我真的不想不必在学校呆在某个系统上,快照会很有用。

如果仍然是高风险,那么我需要考虑哪些建议以进行安全测试?

我们将使用类似linuxmint的东西开始。如果有人想查看当前项目中的内容,请访问:http : //www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


老实说,在真正的硬件上进行此操作没有太大的风险,尤其是在进行备份的情况下。我有,我敢肯定很多其他开发人员也有。
hobbs 2015年

@hobbs那是因为我们许多人喜欢过着危险的生活,通常足够长的时间后悔。如果您是细心的开发人员,在相当小的模块上工作,则可以在实际的计算机上工作。对于大型开发人员(或粗心的开发人员),最好在隔离的环境中工作。在“干净的发行版”上工作也可能是一个好主意,以确保没有内核级自定义可以与您的模块相互配合。请记住,最小的错误可能导致最可怕的后果:内核模块开发:D
John WH Smith

Answers:


28

开发内核模块的主要风险是,与使用常规代码相比,您可能更容易崩溃系统,并且可能会发现有时创建的模块无法卸载,这意味着必须重新引导才能重新加载。在解决问题后将其修复。

是的,VM很适合这种开发,这是我在内核模块上使用的方式。VM很好地将您的测试环境与正在运行的系统隔离。

如果要拍摄和还原快照,则应将源代码签入VM 外部的版本控制存储库中,这样在丢弃VM的当前状态时不会意外丢失最新代码。


3
或者,可以仅快照VM的某些方面。例如,将源代码保存在单独的虚拟磁盘上。当然,无论如何,定期将代码签入的VM外源代码存储库是一个好主意;它可以避免许多尴尬的错误,并且可以教您良好的编码习惯。
CVn 2015年

使系统崩溃更容易的另一面是,当您使系统崩溃时,您更有可能引起附带损坏。
user253751

14

假设您不打算为实际硬件编写驱动程序,那么这是在模块上工作的好方法。您可以为工作系统创建快照,如果您遇到了麻烦,只需返回快照即可。

如果可以,请完全复制虚拟机,以防快照系统比我想象的更怪异。:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.