日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux卸载模块驱动程序,Linux设备驱动程序 之 装载和卸载模块

發布時間:2024/1/23 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux卸载模块驱动程序,Linux设备驱动程序 之 装载和卸载模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前置說明

本文例子中涉及兩個模塊hello.ko和world.ko,其中hello導出符號供world使用;

insmod

該命令將模塊的代碼和數據裝入內核,然后使用內核的符號表繼續模塊中任何未解析的符號。insmod不會修改模塊的磁盤文件,而僅僅修改內存中的副本。insmod可以接受一些命令行選項,并且可以再模塊鏈接到內核之前給模塊中的整數和字符串變量賦值。

按照順序加載,通過;

1 [root@localhost export]# insmodhello.ko2 [root@localhost export]# insmod world.ko

先加載world.ko,不通過,因為world找不到從a中引用的符號;

1 [root@localhost export]# insmodworld.ko2 insmod: ERROR: could not insert module world.ko: Unknown symbol in module

modprobe

與insmod類型,modprobe也用來將模塊裝入內核,區別在于,modprobe會考慮要加載的模塊是否引用了一些當前內核中不存在的符號,如果有這類引用,modprobe會在當前模塊搜索路徑中查找定義了這些符號的其他模塊,如果找到了這些依賴模塊,它會同時將這些模塊也裝載到內核。這種情況下使用insmod會失敗,并在系統日志文件中記錄”unresolved symbols”消息;

在使用modprobe時,在配置文件中加入 modules_install行和clean行;

1 ifneq ($(KERNELRELEASE),)2 obj-m :=hello.o world.o3 # module-objs :=file1.o file2.o4 else

5 KERNELDIR ?=/lib/modules/$(shell uname -r)/build6 PWD :=$(shell pwd)7 default:8 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules9 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install10 clean:11 rm -rf *.o *.mod.c *.ko *.symvers *.order *.makers12 $(MAKE) -C $(KERNELDIR) M=$(PWD) clean13 endif

加載模塊world,成功;

1 [root@localhost export]# modprobe world

lsmod查看,可見依賴的模塊hello也被加載進內核;

1 [root@localhost export]# lsmod

2 Module Size Used by3 world 16384 0

4 hello 16384 1 world

rmmod

rmmod用于從內核中移除模塊;如果內核模塊仍然在使用狀態,或者內核被配置為禁止移除模塊,則無法移除該模塊;配置內核并支持在模塊忙的時候仍能移除模塊是可能的;但是,重新引導系統是更合適的辦法;

先移除world.ko,再移除hello.ko,成功;

[root@localhost export]# rmmod world.ko

[root@localhost export]# rmmod hello.ko

先移除模塊hello.ko,產生錯誤,因為hello在被world使用;

1 [root@localhost export]# rmmod hello.ko2 rmmod: ERROR: Module hello is in use by: world

lsmod

lsmod用于列出當前裝載到內核中的所有模塊,包括一些其他信息,其通過讀取/proc/modules來獲取這些信息;

1 [root@localhost export]# lsmod

2 Module Size Used by3 world 16384 0

4 hello 16384 1 world

總結

以上是生活随笔為你收集整理的linux卸载模块驱动程序,Linux设备驱动程序 之 装载和卸载模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。