如何:Linux添加或删除Linux内核模块/驱动程序
时间:2020-01-09 10:37:04 来源:igfitidea点击:
如何从正在运行的Linux内核中添加或删除硬件设备驱动程序(模块)?
Linux系统带有modprobe
命令,用于从Linux内核中添加和删除模块。
请注意:
=>在MS-Windows下,将术语设备驱动程序用于模块。
=>在Linux下,您将术语模块用于设备驱动程序。
=> Linux内核具有模块化设计。
=>在引导时,只有最小的驻留内核被加载到内存中。
=>如果添加新硬件,则需要添加驱动程序,即模块。
=>modprobe
命令可以智能地从Linux内核中添加或删除模块
=>通常,所有Linux内核模块(驱动程序)都存储在/lib/modules/$(uname -r)
目录下的模块目录中。
要查看当前模块,请键入:
$ ls /lib/modules/$(uname -r)
输出:
build modules.ccwmap modules.order initrd modules.dep modules.pcimap kernel modules.dep.bin modules.seriomap misc modules.devname modules.softdep modules.alias modules.ieee1394map modules.symbols modules.alias.bin modules.inputmap modules.symbols.bin modules.builtin modules.isapnpmap modules.usbmap modules.builtin.bin modules.ofmap updates
使用以下命令列出各种设备的所有驱动程序:
$ ls /lib/modules/$(uname -r)/kernel/drivers/
输出示例:基于Linux的系统上的设备驱动程序
任务:添加名为foo的模块(驱动程序)
以root用户身份键入以下命令:
# modprobe foo
在此示例中,我正在加载一个名为i8k的模块,输入:
# modprobe -v i8k
输出示例:
insmod /lib/modules/3.5.0-30-generic/kernel/drivers/char/i8k.ko
查找有关已加载模块的信息
您需要使用modinfo
命令来查看有关Linux内核模块的信息。
语法为:
# modinfo -v {module-name-here} # modinfo i8k
输出示例:显示有关名为i8k的Linux内核模块的信息
任务:列出所有已加载的模块
使用lsmod
命令显示Linux内核中模块的状态:
# lsmod
输出示例:
Module Size Used by smbfs 75465 0 md5 5953 1 ipv6 284193 10 ipt_TOS 4033 2 iptable_mangle 4545 1 ip_conntrack_ftp 74801 0 ip_conntrack_irc 74033 0 ipt_REJECT 8897 43 ipt_LOG 8513 2 ipt_limit 4033 6 iptable_filter 4673 1 ipt_multiport 3521 4 ipt_state 3393 16 ip_conntrack 54297 3 ip_conntrack_ftp,ip_conntrack_irc,ipt_state ip_tables 21825 8 ipt_TOS,iptable_mangle,ipt_REJECT,ipt_LOG,ipt_limit,iptable_filter,ipt_multiport,ipt_state i2c_dev 13889 0 i2c_core 28865 1 i2c_dev dm_mirror 32721 0 dm_mod 68609 1 dm_mirror button 9313 0 battery 11465 0 ac 6985 0 ohci_hcd 24529 0 ehci_hcd 33989 0 tg3 109381 0 floppy 66065 0 ext3 137937 2 jbd 69105 1 ext3 sata_svw 10053 3 libata 78345 1 sata_svw sd_mod 19393 4 scsi_mod 141457 2 libata,sd_mod
任务:删除名为foo的模块
将-r
选项传递给modprobe命令以删除模块,键入:
# modprobe -r foo
您还可以使用rmmod命令,该命令很简单,可以从Linux内核中删除模块:
# rmmod foo