在我自己的机器上开发一个简单的 linux 内核 module/driver 有多安全?

How safe is that to develop a simple linux kernel module/driver on my own machine?

我正在编写一个简单的内核字符设备驱动程序,我想知道在我自己的机器 OS 上而不是在 VM 上执行它有多安全。

内核恐慌是否具有破坏性?

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

  1. 系统挂起 - 每个内核新手都会遇到这种情况。它们是由 Linux 内核重复做无用的工作引起的。您甚至无法移动鼠标。
  2. 内核崩溃 - 当您再次启动进入系统时会出现类似 'System program problem detected' 的消息。
  3. 当您开始编写网络设备驱动程序等高级驱动程序时,您的以太网或无线网卡可能会停止工作。重新启动系统可能会解决此问题,但也可能不会。

真正的内核开发人员不会乱搞 VM。不要害怕在真机上测试和编码。我编译了一个单独的内核,专门用于测试设备驱动程序。我有一个用于测试的内核,另一个用于应用程序编程的内核。

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

总体上是安全的。在大多数情况下可能发生的最糟糕的事情是您导致您的内核无法启动并且必须 select GRUB 中的不同内核或您正在使用的任何引导加载程序。只要确保保留已知的良好内核以防发生这种情况。

这是一般情况。当然,如果我们变得更具体,事情就会变得更复杂。如果您正在破解存储驱动程序,崩溃是否会损坏某些数据?确实。如果您正在使用视频驱动程序,您是否可以向屏幕输出无效的 resolution/refresh 速率,从而可能造成损坏?当然可以。编写驱动程序以通过 SPI 命令控制电池充电器?最好不要让它超出数据表规格,否则可能会引起火灾。

归根结底,VM 不能替代在真实硬件上进行的测试。请记住您正在做什么以及该更改的潜在后果。通常它没有什么重启不会修复。不过从理论上讲,破坏某些东西是可能的。