我在上操作系统课。接下来,我们必须做一些修改内核代码的工作。我们被告知不要使用个人机器进行测试(我想这意味着安装它),因为我们可以编写错误的代码,并在不应该的地方重新编写代码。为了安全起见,我们可以访问实验室中的机器。
如果我使用VM进行测试,这会保护主机系统免受潜在的不安全代码的影响吗?我真的不想被困在一个系统在学校和快照将是有用的。
如果风险仍然很高,对我需要考虑的安全测试有什么建议吗?
我们将首先使用类似linuxmint的东西。如果有人想查看当前项目中的内容:http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf
发布于 2015-09-30 23:05:37
开发内核模块的主要风险是,与常规代码相比,您可以更容易地使系统崩溃,而且您可能会发现,有时您会创建无法卸载的模块--这意味着您必须在修复错误后重新启动才能重新加载它们。
是的,VM可以用于这种开发,这也是我在处理内核模块时所使用的。VM很好地将您的测试环境与正在运行的系统隔离开来。
如果要获取和恢复快照,则应该将源代码签入到VM之外的版本控制存储库中,以便在丢弃VM当前状态时不会意外丢失最新代码。
发布于 2015-09-30 21:31:30
假设您不试图为实际硬件编写驱动程序,这是处理模块的一个很好的方法。您可以对工作系统进行快照,如果发生了故障,只需返回快照即可。
如果可以的话,创建一个VM的完整副本,以防快照系统比我想象的更奇怪。:)
发布于 2020-05-30 02:35:59
假设您已经编写了一些c++程序作为一个进程(进程只是一个正在执行的程序)在用户空间中运行,那么现在您需要获得真正的操作(内核空间)。其中,一个野生指针可以清除您的文件系统可能是您的整个内核。
是的,我建议初学者使用VM。这将保护您的内核不受XD的影响。
有些人更喜欢Docker,这不是一个好的选择,因为最终您将使用您的主内核。Docker就像同一个内核上的另一个发行版。
快照仅用于还原主目录的文件,.you可以使用任何版本控制系统以一种简单的方式完成此操作。
https://unix.stackexchange.com/questions/233123
复制相似问题