Linux---我的第一個核心模組之Hello World__Linux

來源:互聯網
上載者:User

1、什麼是核心模組。

核心模組是Linux核心向外部提供的一個插口,其全稱為動態可載入核心模組(Loadable Kernel Module,LKM),簡稱為模組。Linux核心之所以提供模組機制,是因為它本身是一個單核心(monolithic kernel)。單核心的最大優點是效率高,因為所有的內容都整合在一起,但其缺點是可擴充性和可維護性相對來說比較差,引入模組機制就是為了彌補這一缺陷。

模組是具有獨立功能的程式,它可以被單獨編譯,但不能獨立運行。它在運行時被連結到核心作為核心的一部分在核心空間運行,這與運行在使用者空間的進程是不同的。模組通常由一組函數和資料結構組成,用來實現一種檔案系統、一個驅動或其他核心上層的功能。

總之模組是一個為核心或者其他核心模組提供使用功能的代碼塊。


2、編寫第一個小模組執行個體

環境:VMware  版本:12.0.0     

          CentOS 7


1)進入虛擬機器,開啟Linux終端,擷取root許可權。

2)建立一個檔案夾(mkdir命令建立一個名為hello的檔案)

3)進入hello檔案夾,並建立一個名為hello.c的檔案,再編輯hello.c檔案。(若沒有這個檔案時,vim命令會同時建立這個檔案,並且進入vi編輯器對檔案進行編輯)

(cd hello為進入hello檔案夾)

輸入如下內容:

編輯完成後,先按左上方Esc鍵,再同時按Shift+:兩個鍵,最後輸入小寫wq(功能是儲存編輯並退出編輯)。

註:hello_init和hello_exit這兩個我們定義的函數稱為模組的插入與刪除(目的是列印訊息到核心緩衝區);__init與__exit是屬性---連接到函數的資料元片(注意這兩個屬性錢的底線是雙底線);GPL是一份GNU通用公用授權許可證;module_init()和 module_exit()是兩個宏,將上面的兩個函數設定為我們模組的生命週期回呼函數;還有就是要注意書寫格式,該大寫的地方要大寫,該tab的地方要tab,不然很容易在編譯的時候報錯。

4)編寫Makefile檔案(注意Makefile檔案沒有尾碼,並且M要大寫同樣使用vim命令)。

編寫Makefile檔案:

結束編輯並儲存(先Esc再Shift+:最後wq)。

註:在ifneq後面要有一個空格,寫all和clean的內容時要有一個tab的空間。(在這裡會有顏色的提示)

5)執行make指令(直接make,後面不用加東西)

6)查看檔案夾下的檔案(使用ls命令)

除了hello.c檔案和Makefile檔案之外,其它全部為make後自動產生的檔案(ls命令為查看當前檔案夾下的內容目錄)

7)載入模組進核心(使用insmod命令)

載入make產生的hello.ko檔案進核心。(輸入insmod hello.ko檔案後直接斷行符號)

8)查看載入進去的模組(使用lsmod命令)


(lsmod命令即為查看核心模組的命令)

執行命令後的結果:(可以看到第三行的hello模組,說明模組載入成功)

使用dmesg命令查看記錄檔:(使用dmesg命令)

查看記錄檔:(列印出Hello Linux。註:第一個Hello。 Linux。和Byebye。 Linux是我上次啟動並執行結果)

9)卸載模組(使用rmmod命令)

查看記錄檔:(列印出Byebye。 Linux。)

(也可用lsmod查看是否卸載成功,看hello模組是否還在核心目錄中)



好了,到這裡,恭喜你已經實現了你的第一個核心模組的編寫、載入以及卸載了。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.