在Linux Kernel 3.8.13-rt16中启用外设

时间:2014-08-27 18:10:42

标签: linux linux-kernel

我正在运行Linux Kernel 3.8.13-rt16并且它处于无头状态(没有监视器/键盘)。我能够ssh到框中并成功运行命令。 (我的3.8.0-35通用内核在显示器和键盘上运行得很好。)

我是否可以在rt内核上启用外设,以便我可以直接在这台机器上工作?如果是这样,我需要在源代码中进行更改并重新编译,还是可以通过配置文件进行更改?

我刚开始使用不同的内核(特别是实时),所以任何帮助/建议或文档链接也会非常感激。

1 个答案:

答案 0 :(得分:1)

简短回答:尝试将其插入。特别是USB设备可以开箱即用。

答案很长:

由于所有硬件(内部或外部)都需要某些内核模块的支持,因此首先需要确定内核是否支持相关外围设备。

例如,要连接键盘,您需要PS / 2或USB支持。对于显示器,必须支持您的图形芯片。

如何确定要加载哪些模块,以及如何支持您的硬件?

首先,您需要知道实际存在的硬件。这是通过lspci完成的。寻找“VGA控制器”和“USB控制器”线。

查看哪些内核模块支持您的硬件的一种非常简单的方法是device driver database,它会获取您的PCI ID(lspci -n)并告诉您可以使用哪些模块。

现在,下一步是确定模块是否已经在内核中,或者它们是否可用作模块。

它可能已经存在于内核中。要检查这一点,您可以查看config¹:

zcat /proc/config.gz | grep MODULE_NAME # uppercase, dashes --> underscores

如果您看到类似CONFIG_MODULE_NAME=y的内容,那么它就在内核中。如果您看到CONFIG_MODULE_NAME=m,则它已构建为可加载模块。

如果在配置中没有看到模块,或者说没有设置该选项,您仍然可以检查系统上实际可用的模块。要检查某个模块是否可用,请运行

find /lib/modules/`uname -r` | grep module_name # lowercase, dashes --> underscores

如果找到了您的模块,可以使用modprobe module_name加载它。 lsmod应该会显示它是否已加载。

如果找不到该模块,则可能需要重新编译内核并构建模型。我不会在这里讨论,这远远超出了我们的范围。

如前所述,连接键盘应该非常简单。

您的图形芯片预计会遇到更多困难。当然,简单的VESA输出应始终有效,但为了获得适当的支持,您可能需要稍微调整一下。这也是我在这里无法涵盖的内容;这是一个自己的主题(KMS,专有与OSS驱动程序等)。

希望对初学者有所帮助。如果您需要更多支持,请提供有关您的硬件(lspci -n)的更多信息,并将内核配置发布到一些pastebin。

¹内核可能是在没有/proc/config.gz支持的情况下构建的。在这种情况下,配置也可以存储在文件系统中,例如,在/boot/目录中。