如何加载和卸载内核中内置的 linux 个驱动程序
How to load and unload linux drivers that are built into kernel
我想在设备终端加载和卸载 linux 驱动程序,我有两个选择,但我不想做第一个
将驱动程序构建为模块
CONFIG_DRIVER =米
我可以使用 rmmod 和 modprobe 卸载和加载设备驱动程序。
将设备驱动程序构建到内核本身
CONFIG_DRIVER = Y
我想按照第二个选项,但我不知道如何卸载和加载设备驱动程序,请开源社区帮助我!
就这么简单。您找到一个设备和 driver 想要解除绑定。例如,在我的 Intel Minnownboard (v1) 上我有 PCH UDC 控制器(一个 PCI 设备):
% lspci -nk
...
02:02.4 0c03: 8086:8808 (rev 02)
Subsystem: 1cc8:0001
Kernel driver in use: pch_udc
现在我知道必要的信息了:
- 设备所在的总线:PCI
- 设备名称:0000:02:02.4(注意
lspci
给出了减少的PCI地址,即没有域或i.o.w。BDF,而 driver 期望 domain:BDF)
- driver 姓名:pch_udc
一共可以解绑设备:
% echo 0000:02:02.4 > /sys/bus/pci/drivers/pch_udc/unbind
[ 3042.531872] configfs-gadget 0000:02:02.4: unregistering UDC driver [g1]
[ 3042.540979] udc 0000:02:02.4: releasing '0000:02:02.4'
您可以重新绑定。简单使用bind节点在同一个文件夹。
该功能出现在 15 多年前,这里是 LWN 上的 the article 对其进行了解释。
我想在设备终端加载和卸载 linux 驱动程序,我有两个选择,但我不想做第一个
将驱动程序构建为模块 CONFIG_DRIVER =米 我可以使用 rmmod 和 modprobe 卸载和加载设备驱动程序。
将设备驱动程序构建到内核本身 CONFIG_DRIVER = Y
我想按照第二个选项,但我不知道如何卸载和加载设备驱动程序,请开源社区帮助我!
就这么简单。您找到一个设备和 driver 想要解除绑定。例如,在我的 Intel Minnownboard (v1) 上我有 PCH UDC 控制器(一个 PCI 设备):
% lspci -nk
...
02:02.4 0c03: 8086:8808 (rev 02)
Subsystem: 1cc8:0001
Kernel driver in use: pch_udc
现在我知道必要的信息了:
- 设备所在的总线:PCI
- 设备名称:0000:02:02.4(注意
lspci
给出了减少的PCI地址,即没有域或i.o.w。BDF,而 driver 期望 domain:BDF) - driver 姓名:pch_udc
一共可以解绑设备:
% echo 0000:02:02.4 > /sys/bus/pci/drivers/pch_udc/unbind
[ 3042.531872] configfs-gadget 0000:02:02.4: unregistering UDC driver [g1]
[ 3042.540979] udc 0000:02:02.4: releasing '0000:02:02.4'
您可以重新绑定。简单使用bind节点在同一个文件夹。
该功能出现在 15 多年前,这里是 LWN 上的 the article 对其进行了解释。