在我自己的机器上开发一个简单的Linux内核模块/驱动程序有多安全?

时间:2016-06-18 18:30:11

标签: linux-kernel kernel linux-device-driver drivers methodology

我正在编写一个简单的内核字符设备驱动程序,我想知道在我自己的机器操作系统而不是虚拟机上执行它是多么安全。

内核恐慌可能具有破坏性吗?

2 个答案:

答案 0 :(得分:2)

当我开始编写设备驱动程序时,我遇到了这些问题。

  1. 系统挂起 - 这些都发生在每个内核新手上。它们是由Linux内核反复做无用的工作造成的。你甚至无法移动鼠标。
  2. 内核崩溃 - 再次启动系统时会出现“检测到系统程序问题”等消息。
  3. 当您开始编写网络设备驱动程序等高级驱动程序时,您的以太网或无线网卡可能会停止工作。重新启动系统可能会解决此问题,但可能没有。
  4. 真正的内核开发人员不会搞乱VM。不要害怕在真机上测试和编码。我专门为测试设备驱动程序编译了一个单独的内核我有一个用于测试的内核和另一个用于应用程序编程的内核。

    如果要在新构建的内核上测试驱动程序,this是安装新内核的一个很好的指南。

答案 1 :(得分:1)

一般都很安全。在大多数情况下可能发生的最糟糕的事情是您导致内核无法启动并且必须在GRUB或您正在使用的任何引导加载程序中选择不同的内核。如果发生这种情况,请确保保留一个已知良好的内核。

这是一般情况。当然,如果我们更具体,那么它会变得更加复杂。如果您正在浏览存储驱动程序,崩溃是否会损坏某些数据?当然。如果您正在搞乱视频驱动程序,是否可能会将无效的分辨率/刷新率输出到可能导致损坏的屏幕?当然可以。编写驱动程序通过SPI命令控制电池充电器?最好不要让它超出数据表的规格,否则你可能会引发火灾。

在一天结束时,VM不能替代在真实硬件上进行测试。请记住您正在做的事情以及该变化的潜在后果。通常它不会重启不会修复。但从理论上讲,它可能会破坏某些东西。