一个糟糕的USB设备是否能够崩溃无错误的Linux内核?

Han*_*off 6 linux usb

我知道,我的问题相当广泛,但很长一段时间我一直在想这个问题.

一点背景.我在物理实验室工作,所有实验室计算机都运行Debian(旧版本和Lenny的混合)或最近的Ubuntu 10.4 LTS.我们编写了许多自定义软件来与实验硬件和其他计算机连接.

我们有很多FPGA板可以控制实验的各个部分,它们通过USB连接到不同的计算机.在升级控制实验的计算机之后,我们开始看到运行所有激光器的计算机的崩溃/锁定.这曾经是完全稳定的.

我的问题是:如果整个计算机由于a)Python/GTK软件问题而锁定了b)b)USB设备驱动程序或c)实际设备可以归咎于Linux内核(或其他操作系统级别) ?

即使我在软件/硬件实现中出错,要求linux内核不要惊慌是不公平的.

我自己的猜测:任何用户级应用程序都不应该崩溃整个系统,因为他们应该只能访问自己的东西.

任何设备驱动程序都成为内核本身的一部分,因此可以使其崩溃.我的推理是否合理?

奖金问题:有没有办法以某种方式隔离设备和内核,这样无论硬件出现什么愚蠢的错误,Linux都会保持愉快的运行.这有两个原因非常有用:1)使用正在运行的系统调试更容易,2)为了实验的目的,我们确实需要很长的正常运行时间,并且只有一部分系统崩溃比崩溃的一部分要好得多.系统传播到其余部分.

有关此主题的任何链接和阅读材料将不胜感激.谢谢.

Ben*_*igt 4

您是正确的,非特权代码不应该能够关闭系统,除非存在内核错误。然而,非特权和特权之间的界限与用户空间与内核之间的界限并不完全相同。如果用户帐户具有超级用户权限,则用户模式程序可以打开/dev/kmem并销毁操作系统的内部数据结构。

为了使主内核免受设备驱动程序问题的影响,请在虚拟机内运行设备驱动程序。

包括 VMWare Workstation 在内的几种流行的 VM 系统支持将任意 USB 设备从主机转发到来宾,而无需主机上安装特定于设备的驱动程序。