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

在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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
什么是linux设备节点什么是linux设备节点Apr 18, 2022 pm 08:10 PM

linux设备节点是应用程序和设备驱动程序沟通的一个桥梁;设备节点被创建在“/dev”,是连接内核与用户层的枢纽,相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。设备节点使用户可以与内核进行硬件的沟通,读写设备以及其他的操作。

Linux中open和fopen的区别有哪些Linux中open和fopen的区别有哪些Apr 29, 2022 pm 06:57 PM

区别:1、open是UNIX系统调用函数,而fopen是ANSIC标准中的C语言库函数;2、open的移植性没fopen好;3、fopen只能操纵普通正规文件,而open可以操作普通文件、网络套接字等;4、open无缓冲,fopen有缓冲。

linux中什么叫端口映射linux中什么叫端口映射May 09, 2022 pm 01:49 PM

端口映射又称端口转发,是指将外部主机的IP地址的端口映射到Intranet中的一台计算机,当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上;可以通过使用动态或固定的公共网络IP路由ADSL宽带路由器来实现。

什么是linux交叉编译什么是linux交叉编译Apr 29, 2022 pm 06:47 PM

在linux中,交叉编译是指在一个平台上生成另一个平台上的可执行代码,即编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台。使用交叉编译的原因:1、目标系统没有能力在其上进行本地编译;2、有能力进行源代码编译的平台与目标平台不同。

linux中eof是什么linux中eof是什么May 07, 2022 pm 04:26 PM

在linux中,eof是自定义终止符,是“END Of File”的缩写;因为是自定义的终止符,所以eof就不是固定的,可以随意的设置别名,linux中按“ctrl+d”就代表eof,eof一般会配合cat命令用于多行文本输出,指文件末尾。

linux怎么判断pcre是否安装linux怎么判断pcre是否安装May 09, 2022 pm 04:14 PM

在linux中,可以利用“rpm -qa pcre”命令判断pcre是否安装;rpm命令专门用于管理各项套件,使用该命令后,若结果中出现pcre的版本信息,则表示pcre已经安装,若没有出现版本信息,则表示没有安装pcre。

linux怎么查询mac地址linux怎么查询mac地址Apr 24, 2022 pm 08:01 PM

linux查询mac地址的方法:1、打开系统,在桌面中点击鼠标右键,选择“打开终端”;2、在终端中,执行“ifconfig”命令,查看输出结果,在输出信息第四行中紧跟“ether”单词后的字符串就是mac地址。

linux中rpc是什么意思linux中rpc是什么意思May 07, 2022 pm 04:48 PM

在linux中,rpc是远程过程调用的意思,是Reomote Procedure Call的缩写,特指一种隐藏了过程调用时实际通信细节的IPC方法;linux中通过RPC可以充分利用非共享内存的多处理器环境,提高系统资源的利用率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境