1. 程式人生 > >Linux核心模組程式設計——Hello World

Linux核心模組程式設計——Hello World

一、實驗環境:

環境配置:VMware® Workstation 15 Pro、ubuntu Desktop 18.10、記憶體 2GB、處理器數量2、每個處理器核心數量1、硬碟大小30GB……還有一個就是用的咱Xidian的源(因為校內不需要流量啊,而且還很快!)

二、知識儲備:

1)什麼是核心模組程式設計?

你說你學習Linux核心模組程式設計,你最起碼得知道什麼是核心模組程式設計這個概念吧,那我就簡單的記錄一下吧!
1)、核心模組是具有獨立功能的程式。它可以被單獨編譯,但是不能單獨執行,它的執行必須被連結到核心作為核心的一部分在核心空間中執行。
2)、模組程式設計和核心版本密切相連,因為不同的核心版本中某些函式的函式名會有變化。因此模組程式設計也可以說是核心程式設計。
3)、特點:
模組本身不被編譯進核心映像,從而控制了核心的大小; 模組一旦被載入,就和核心中的其他部分完全一樣。

2)核心模組程式設計和使用者層程式設計有什麼區別呢?

我在網上找了很多,看了一下,咱們先了解這些,看圖一!
圖一
看了上邊的表,咱們應該知道本次實驗都需要會哪些技能了吧!程式設計能力咱就不說了,你得會寫Makefile、對linux這基本命令得了解、核心函式你得了解、咋程式設計你得會吧。相關知識我就不拎出來一一介紹了,需要學習的自己學習吧,那下邊就放出我的實驗報告吧!

三、實驗過程

A)前期工作:

第一個實驗嘛,那肯定是Hello World!首先做一些前期工作吧,把目錄建好之類的,不然太亂了。還是截圖容易說明問題!
圖二

B)程式碼編寫

其中module1.c中的檔案為下面內容(程式碼還是自己敲敲的為好,就不放原始碼):
圖三


Makefile中的內容如下,中$(MAKE)前邊的是Tab鍵,並不是四個空格(這在Makefile編寫相關知識中都有,這裡重新強調一下!)如果打成空格vim會自動紅色提醒的!
圖四
看上邊三張圖的內容是不是就跟第一張圖中說的對上了!

C)執行測試

圖五
輸入make命令之後我們會發現裡邊出現一個warning語句,大概意思是說專案裡邊缺少MODULE_LICENSE(),這個不會影響,只是放出警告!強迫症可以在最後添上的,支援的許可證包括GPL、GPL v2、Dual BSD/GPL、 Dual MPL/GPL、 Proprietary
通過 insmod /module1.ko 可以載入它,
圖六

‘’
通過 rmmod module1可以解除安裝它,dmesg 檢視結果
圖七
圖八

四)總結

到這裡我們就成功完成了,Hello world的核心模組程式設計了,夠簡單的吧,還是動手實踐一下吧!

本來還說把整個實驗報告貼上來,想想還是算了吧!
或者改天有時間再貼吧!