Вопрос: как мне добавить или удалить драйвер устройства в запущенное ядро Linux?
Ответ: Для добавления и удаления модулей из ядра, в Linux существует команда modprobe.
-
В MS Windows используется термин драйвер устройства.
-
В Linux используется термин модули.
-
Ядро Linux имеет модульную архитектуру.
-
Во время загрузки, в память загружается только минимально необходимая часть ядра.
-
Если вы установили новое устройство, вам нужно установить драйвер которым является соответствующий модуль ядра.
-
Командой modprobe можно добавить или удалить модуль из ядра Linux.
-
Обычно модули находятся в специальной директории /lib/modules/$(uname -r)
$ ls /lib/modules/$(uname -r)
Вывод:
boot initrd misc modules.ccwmap modules.ieee1394map modules.isapnpmap modules.symbols source build kernel modules.alias modules.dep modules.inputmap modules.pcimap modules.usbmap
Задача: добавление модуля foo
Введите от имени root следующую команду:
# modprobe foo
Задача: список всех загруженных модулей
Используйте команду 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 к команде modprob, чтобы удалить модуль
# modprobe -r foo
Так же можно использовать команду rmmod, которая является простой программой для удаления модуля из ядра Linux
# rmmod foo