Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Linux内核如何知道在引导时要加载的驱动程序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想知道这是为了第一次启动和随后的靴子. 我正在编译我自己的内核,并希望它尽可能的精简.我想手动构建.config文件(主要作为一个学习体验),所以我需要知道可以排除的所有内容.我知道一个可能的解决方案是查看我目前的加载驱动程序的发行列表.但是,我很好奇我的发行版最初发现了什么驱动程序. TIA. How does the Linux kernel know which drivers to lo
我想知道这是为了第一次启动和随后的靴子.

我正在编译我自己的内核,并希望它尽可能的精简.我想手动构建.config文件(主要作为一个学习体验),所以我需要知道可以排除的所有内容.我知道一个可能的解决方案是查看我目前的加载驱动程序的发行列表.但是,我很好奇我的发行版最初发现了什么驱动程序.

TIA.

解决方法

内核生成例如设备的事件. PCI总线插入(热或冷;事件排队等待用户空间运行AFAIR). udev将接收这些事件并进行modprobe调用,其中包括设备的PID / VID(产品/供应商ID);这通常是一个带有一些*的字符串. modprobe然后计算由udev的加载请求通配符表示的集合和内核模块的别名集合(它们本身可能是通配符).

由于USB / Firewire等.控制器通常连接到PCI总线,这就是您的HCI驱动程序的加载方式.这就是事情的复发;当然,加载USB / Firewire PID / VID.

然而,网络协议模块(例如ipv6)不通过udev处理;相反,当程序调用socket(AF_INET6,…)时,内核直接使用非通配符的别名@L_907_9@modprobe(更准确地说:/ proc / sys / kernel / modprobe中的任何内容),net-pf-10在IPv6,因为AF_INET6恰好具有值10. modprobe然后加载ipv6.ko,因为这是net-pf-10的别名.

类似地,对于文件系统,尝试安装-t foo将使内核也可以@L_907_9@modprobe(再次,通过____call_usermodeHelper),这次使用foo作为参数.

如果loop.ko尚未加载,则访问设备节点(例如/ dev / loop0,只要它已经存在)具有相同的策略.这里的内核要求block-major-7-0(因为loop0通常有(7,0),参见ls -l),而loop.ko具有拟合块 – 大7-bit的别名.

大佬总结

以上是大佬教程为你收集整理的Linux内核如何知道在引导时要加载的驱动程序?全部内容,希望文章能够帮你解决Linux内核如何知道在引导时要加载的驱动程序?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。