首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内核中内置了哪些设备驱动程序?

内核中内置了哪些设备驱动程序?
EN

Ask Ubuntu用户
提问于 2012-07-13 22:22:43
回答 4查看 14.4K关注 0票数 16

我最近在一个硬件设备上安装了一个供应商提供的嵌入式linux。当我在设备命令行上运行lsmod时,响应是空的。我被引导相信,这意味着设备上运行的硬件驱动程序已经内置到内核中,而不是作为.ko文件。我的问题是:这个过程是如何发生的?

对流行硬件的支持是否在后续版本中逐渐集成到内核中,从而取代了.ko文件?.ko文件是否只是用于支持在发布时不支持内核集成驱动程序的新硬件?在我有限的知识中,我认为所有硬件驱动程序都是.ko文件的形式,但这显然是错误的。

我对整个过程略感困惑,希望得到澄清,因为我觉得我可能看错了情况。

EN

回答 4

Ask Ubuntu用户

回答已采纳

发布于 2012-07-13 22:39:26

被认为对内核加载至关重要的核心驱动程序通常内置到内核中,而其他硬件驱动程序等则构建为模块或.ko文件。

.ko模块通常存储在根分区的/lib目录下。要使用其中任何一个,内核必须首先能够检测和访问底层存储设备,然后访问其文件系统。因此,可以安全地假设没有SATA/SCSI和ext2 2/3/4支持的内核不会真正启动;)

您可以选择将大多数内置内核驱动程序转换为模块形式。Ubuntu内核团队决定是否修改Linux内核团队的默认配置,并包括/排除您下载的股票内核映像的附加内置驱动程序。

如果您构建了自己的内核,您也可以这样做:

  • 在上面的屏幕截图中,*表示内置驱动程序,而M表示模块.
  • 在默认情况下,回送设备支持(通常是引导系统所必需的)是内置的。
  • 在默认情况下,低速USB驱动程序(USB1.0)也是内置的,允许您启动USB棒,但是这里我已经将它更改为一个模块。
票数 11
EN

Ask Ubuntu用户

发布于 2012-07-13 22:45:25

在编译内核时,您可以配置安装了哪些组件。不仅如此,您还可以选择它们是否内置到内核中,或者它们是否是一个模块。

例如,许多人在他们的ext2分区上使用/boot文件系统。因此,内核必须能够在启动时读取ext2文件系统。为了实现这一点,将ext2模块内置到内核中。

现在,想象一下可用模块的数量。把它们都内置到内核中是没有意义的,对吗?这就是为什么您可以将这些模块作为单独的.ko模块构建并随意加载。

票数 3
EN

Ask Ubuntu用户

发布于 2012-07-13 22:42:20

这取决于如何配置linux内核的构建。

在编译过程中,您通常可以:

  • 编译有或没有模块支持的内核(通常附带模块支持)
  • 将驱动程序编译为模块或内置的软件,直接编译到内核中。

了解用于.ko的https://stackoverflow.com/questions/10476990/difference-between-o-and-ko-file文件是什么

lsmod上有一个空输出的原因是因为您有一个完整的内核。

列出所有模块(如果它们存在的话)的一种快速方法是运行以下命令

代码语言:javascript
复制
find /lib/modules/*/ -type f -iname '*.ko' | less

注意less的使用,您可以使用所需的每个寻呼机,也可以在需要的地方重定向输出。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/163304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档