最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ubuntu編譯內(nèi)核模塊,內(nèi)容體現(xiàn)系統(tǒng)日志中

 更新時(shí)間:2021年12月13日 09:02:59   作者:giant潘潘潘潘潘潘潘潘潘潘潘潘潘  
大家好,本篇文章主要講的是Ubuntu編譯內(nèi)核模塊,內(nèi)容體現(xiàn)系統(tǒng)日志中,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

1.Linux登陸界面

1.檢查當(dāng)前文件目錄:

通過Xshell連接Linux系統(tǒng)后

輸入命令:ls

在這里插入圖片描述

2. 新建code/kernel文件夾

在這里插入圖片描述

2.編寫代碼

1.創(chuàng)建hello_module.c

指令:vim hello_module.c

2.按i進(jìn)入編輯模式,并輸入以下代碼

 //hello_module.c #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> ? static int __init hello_init(void){    printk("This is hello_module, welcome to Linux kernel \n");    return 0; } ? static void __exit hello_exit(void){    printk("see you next time!\n"); } ? module_init(hello_init); module_exit(hello_exit); ? MODULE_LICENSE("GPL"); MODULE_AUTHOR("Mr Q"); MODULE_DESCRIPTION("hello kernel module"); MODULE_ALIAS("hello");

在這里插入圖片描述

以上代碼解釋如下:
(1) #include <linux/module.h>:必須。module.h 頭文件包含了對(duì)模塊的結(jié)構(gòu)定義以及模塊的版本控制,任何模塊程序的編寫都要包含這個(gè)頭文件;
(2) #include <linux/kernel.h>:kernel.h 包含了常用的內(nèi)核函數(shù),如以上程序中的 printk()函數(shù);
(3) #include <linux/init.h>:必須。init.h 包含了 module_init()和 module_exit()函數(shù)的聲明;
(4) module_init():必須。模塊加載函數(shù),加載模塊式該函數(shù)自動(dòng)執(zhí)行,進(jìn)行初始化操作;
(5) module_exit():必須。模塊卸載函數(shù),卸載模塊時(shí)函數(shù)自動(dòng)執(zhí)行,進(jìn)行清理操作; (6) MODULE_LICENSE():表示模塊代碼接受的軟件許可協(xié)議。Linux 內(nèi)核是使用 GPL V2 的開源項(xiàng)目,其要求所有使用和修改了 Linux 內(nèi)核代碼的個(gè)人或組織都有義務(wù)把修改后的源代碼公開,這是一個(gè)強(qiáng)制的開源協(xié)議,所以一般編寫驅(qū)動(dòng)代碼都需要顯示的聲明和遵循本協(xié)議,否則內(nèi)核 UI 發(fā)出被污染的警告;
(7) MODULE_AUTHOR():描述模塊的作者信息;
(8) MODULE_DESCRIPTION():簡單描述模塊的用途、功能介紹等;
(9) MODULE_ALIAS():為用戶控件提供的別名;
(10) printk():內(nèi)核輸出函數(shù),默認(rèn)打印系統(tǒng)文件 " /var/log/kern.log"的內(nèi)容。

3. 保存退出,并觀察文件目錄
按鍵ESC;
:wq

在這里插入圖片描述

3.編寫Makefile文件

vim Makefile

 obj-m := hello_module.o
 ?
 KERNELBUILD := /lib/modules/$(shell uname -r)/build
 CURRENT_PATH := $(shell pwd)
 ?
 all:
     make -C $(KERNELBUILD) M=$(CURRENT_PATH) modules
 ?
 clean:
         make -C $(KERNELBUILD) M=$(CURRENT_PATH) clean

以上代碼解釋如下:
(1) obj-m := <模塊名>.o:定義要生成的模塊名稱
(2) KERNELBUILD := /lib/modules/$(shell uname -r)/build : KERNELBUILD 為自定義名稱,用于指向正在運(yùn)行 Linux 的內(nèi)核編譯目錄,其中“uname -r”標(biāo)識(shí)顯示對(duì)應(yīng)的內(nèi)核版本;
(3) CURRENT_PATH := $(shell pwd):CURRENT_PATH 為自定義名稱,用于指向當(dāng)前當(dāng)前目錄;
(4) all:編譯執(zhí)行的動(dòng)作
(5) clean:zhixing make clean 需要的動(dòng)作?!癿ake clean”用于清除上次的 make 命令所產(chǎn)生的 object 文件(后綴為“.o”的文件)及可執(zhí)行文件。

:wq保存退出

4.編譯:

輸入指令:make

在這里插入圖片描述

可以看到編譯后的文件

在這里插入圖片描述

檢查編譯模塊

在這里插入圖片描述

也可通過 modinfo 命令進(jìn)一步檢查 :

在這里插入圖片描述

5.插入模塊

通過 insmod 命令插入模塊,完成插入后可通過 lsmod 命令查看當(dāng)前模塊是否已經(jīng)被加載到系統(tǒng)中:

在這里插入圖片描述

第一個(gè)就是.

系統(tǒng)加載模塊后,也會(huì)在“/sys/module”目錄下新建以模塊名命名的目錄 :

在這里插入圖片描述

6.查看日志輸出

因 本 演示 中 prink()采 用 默認(rèn) 輸出 等級(jí) ,可 通 過“ dmesg” 或“ tail /var/log/kern.log”命令查看輸出結(jié)果。

在這里插入圖片描述

到此這篇關(guān)于Ubuntu編譯內(nèi)核模塊,內(nèi)容體現(xiàn)系統(tǒng)日志中的文章就介紹到這了,更多相關(guān)buntu編譯內(nèi)核模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Linux系統(tǒng)切換用戶后只顯示$問題

    解決Linux系統(tǒng)切換用戶后只顯示$問題

    當(dāng)我們?cè)谑褂肔inux系統(tǒng)切換用戶后只顯示$,所以本文將給大家詳細(xì)介紹一下如何解決Linux系統(tǒng)切換用戶后只顯示$問題,文中有詳細(xì)問題分析和解決方案,需要的朋友可以參考下
    2023-10-10
  • Linux、CentOS下安裝zip與unzip指令功能(服務(wù)器)

    Linux、CentOS下安裝zip與unzip指令功能(服務(wù)器)

    這篇文章主要介紹了Linux、CentOS下安裝zip與unzip指令的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • 詳解Linux下掛載新硬盤方法

    詳解Linux下掛載新硬盤方法

    這篇文章主要介紹了詳解Linux下掛載新硬盤方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • nmap掃描服務(wù)器端口(遠(yuǎn)程桌面端口)

    nmap掃描服務(wù)器端口(遠(yuǎn)程桌面端口)

    nmap是Linux下常用的端口掃描工具,它可以檢測(cè)主機(jī)是否在線,是否開啟了某個(gè)服務(wù)端口,使用了何種操作系統(tǒng)等,下面是安裝方法和使用方法
    2013-12-12
  • Win7下XAMPP集成環(huán)境中Apache無法啟動(dòng)的問題解決

    Win7下XAMPP集成環(huán)境中Apache無法啟動(dòng)的問題解決

    這篇文章主要介紹了Win7下XAMPP集成環(huán)境中Apache無法啟動(dòng)的問題解決,通常是端口沖突,文中也講到了PotgreSQL的相關(guān)問題,需要的朋友可以參考下
    2015-07-07
  • linux本機(jī)進(jìn)程間通信之UDS詳解

    linux本機(jī)進(jìn)程間通信之UDS詳解

    文章介紹了Unix域套接字(UDS)的使用方法,這是一種在同一臺(tái)主機(jī)上不同進(jìn)程間通信的方式,UDS支持三種套接字類型:SOCK_STREAM、SOCK_DGRAM和SOCK_SEQPACKET,創(chuàng)建UDS需要指定協(xié)議族AF_UNIX和相應(yīng)的套接字類型,與AF_INET不同
    2025-03-03
  • 總結(jié)Linux 6種日志查看方法

    總結(jié)Linux 6種日志查看方法

    在本篇文章里小編給大家整理的是關(guān)于Linux 6種日志查看方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Linux中虛擬機(jī)宕機(jī)之后解決辦法

    Linux中虛擬機(jī)宕機(jī)之后解決辦法

    這篇文章主要介紹了Linux中虛擬機(jī)宕機(jī)之后解決辦法的相關(guān)資料,這里提供詳細(xì)的解決步驟來說明宕機(jī)該如何解決,需要的朋友可以參考下
    2017-08-08
  • linux tar壓縮排除某個(gè)文件夾的方法

    linux tar壓縮排除某個(gè)文件夾的方法

    下面小編就為大家?guī)硪黄猯inux tar壓縮排除某個(gè)文件夾的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • ubuntu 16.04 LTS 安裝mongodb 3.2.8教程

    ubuntu 16.04 LTS 安裝mongodb 3.2.8教程

    本篇文章主要介紹了ubuntu 16.04 LTS 安裝mongodb 3.2.8教程,具有一定的參考價(jià)值,有需要的可以了解一下。
    2017-04-04

最新評(píng)論

中山市| 前郭尔| 轮台县| 莎车县| 台南县| 嵊州市| 黄平县| 弥渡县| 邯郸市| 七台河市| 图们市| 荃湾区| 屏东市| 南召县| 全南县| 新疆| 崇明县| 澎湖县| 昌乐县| 宿迁市| 云林县| 耒阳市| 杨浦区| 阿瓦提县| 新源县| 齐齐哈尔市| 蒙城县| 漳浦县| 商南县| 甘孜| 华容县| 中超| 武汉市| 珠海市| 枝江市| 永福县| 金阳县| 博兴县| 绩溪县| 孟连| 和林格尔县|