某些 Linux 设备驱动程序如何自动 loaded/unloaded?

How are some Linux device drivers automatically loaded/unloaded?

关于 Linux 设备驱动程序,我的 理解(通过阅读 this excellent DIY article 获得)是基本上有六个 events/parts设备驱动程序 "lifecycle":

多亏了那篇文章和无数其他文章,我现在可以编写一大堆 C 代码来实现 hooks/callbacks 内核问题 OpenRead 时应该发生的事情WriteClose 命令。但是,似乎驱动程序必须 loaded/released 手动 通过在 shell.

但是,我知道情况并非如此,因为某些设备(例如 USB)允许您 connect/disconnect 它们 dynamically/on-the-fly,并且它们各自的驱动程序必须自动 loaded/released也在运行中。

所以这引发了以下问题:某些技术(如 USB)如何自动执行 insmodrmmod(因此动态 loading/releasing USB 设备驱动程序)?

它基于 linux 热插拔。以下link可能对你有用。

http://www.makelinux.net/ldd3/chp-14-sect-7

热插拔! cf man udev :在 /lib 或 /usr/lib 或 /etc/udev/udev.d 中具有优先级,您有规则 ([0-9]*descriptionName.rules) 可以在 pci 和配件的设备属性之间进行匹配要加载的模块。 比照

sudo udevadm monitor --env

查看消息