首頁 > 運維 > linux運維 > linux模組是什麼意思

linux模組是什麼意思

WBOY
發布: 2022-03-04 11:20:55
原創
2960 人瀏覽過

在linux中,模組是一種能夠為linux核心添加裝置驅動程式、檔案系統以及其他元件的方法,是一些可以作為獨立程式來編譯的函數和資料類型的集合,可以透過靜態或動態的方法載入到核心空間。

linux模組是什麼意思

本教學操作環境:linux7.3系統、Dell G3電腦。

linux模組是什麼意思

模組是一種能夠為Linux核心添加裝置驅動程式、檔案系統及其他元件的方法,它不需要重新編譯核心或重新啟動系統。對於核心來講,它需要處理的就是模組的裝載和卸載以及模組間的依賴關係。因為模組是在核心空間運行的,因此模組必須使用核心提供的函數,我們也可以使用模組來呼叫對應的核心函數,這屬於核心態程式設計的一種方式。模組文件的本質是一種可重定位的二進位文件,一般以*.ko的形式出現。

 Linux模組可以透過靜態或動態的方法載入到核心空間,靜態載入是指在核心啟動過程中載入;動態載入是指在核心運作的過程中隨時載入。一個模組被載入到核心中時,就成為核心程式碼的一部分。模組載入入系統時,系統修改核心中的符號表,將新載入的模組提供的資源和符號加入核心符號表中,以便模組間的通訊。

模組的使用

 模組的組成

#Linux核心模組主要由以下幾個部分組成:

模組載入函數(必須):當透過insmod指令載入核心模組時,模組的載入函數會自動被核心執行,完成本模組相關初始化工作;

模組卸載函數(必須):當透過rmmod指令卸載模組時,模組的卸載函數會自動被核心執行,完成與模組載入函數相反的功能;

模組許可證聲明(必須):模組許可證(LICENSE)聲明描述核心模組的許可權限,如果不聲明LICENSE,模組被載入時將收到核心被污染的警告。

模組參數(可選):模組參數是模組被載入的時候可以被傳遞給他的值,它本身對應模組內部的全域變數;

模組導出符號(可選):核心模組可以導出符號(symbol,對應於函數或變數),這樣其他模組可以使用本模組中的變數或函數;

模組作者等資訊聲明(可選)。

一個模組的範例:

//内核头文件
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
//加载函数
static int __init init_hello_module(void){
    //内核打印函数,linux系统使用dmesg命令可以查看打印信息
    printk(KERN_INFO "Hello World\n");
    return 0;
}
//卸载函数
static void __exit exit_hello_module(void){
    printk(KERN_INFO "Exit the Hello world Module!\n");
}
module_init(init_hello_module);
module_exit(exit_hello_module);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Eric");
MODULE_VERSION("v0.1");
MODULE_DESCRIPTION("TEST FOR MODULE");
登入後複製

模組對應的Makefile檔案:

#Makefile
obj-m:=hello.o
KERNELBUILD:=/lib/modules/$(shell uname -r)/build
all:
    make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
    make -C $(KERNELBUILD) M=$(shell pwd) clean
登入後複製

相關推薦:《Linux影片教學

#

以上是linux模組是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板