學會Linux Kernel熟練Linux

來源:互聯網
上載者:User

在當今社會Linux越來越成為主流,你瞭解Linux系統嗎?本文為你介紹Linux Kernel,Linux Kernel有一個很好的特性,可以支援在運行是進行擴充。這意味著系統啟動運行是,我們仍然可以向Linux kernel添加功能。這種運行時可以被添加到kernel的代碼稱為Module模組)。

Linux Kernel支援好幾種模組類型,包括裝置驅動程式。每個模組由目標程式碼群組成,不是一個完整的可執行程式。系統運行時,我們可以通過insmod將模組串連到正在啟動並執行核心中去。也可以使用lsmod列出已載入模組,rmmod或modprobe –r 移除模組。

Linux系統將裝置分為三種基本類型:字元裝置,塊裝置,網路介面。

字元裝置是能夠像位元組流一樣被訪問的裝置,一般只能順序訪問。其操作類似檔案操作。

塊裝置上能夠容納檔案系統,可以通過檔案系統隨機訪問。其操作也類似於檔案操作。

網路介面是負責資料包的傳輸和接收的,一般無法影射到檔案系統的節點。它與核心的通訊跟前面兩種裝置不同,而是通過socket方式。在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳遞。系統裡支援對發送資料和接收資料的緩衝,提供流量控制機制,提供對多協議的支援。

在編寫模組的時候,應該注意,模組僅僅被串連到核心,所以它只能調用由核心匯出的那些函數,而不能調用其他的本模組未定義的函數。

在Linux kernel2.6.X下進行模組開發時,需要預先準備好“kernel tree(核心樹)”,即獲得與本系統相同的核心的原始碼並編譯出目標檔案。

一個最簡單的hello world驅動例子:

  1. hello_world.c:     
  2. #include <linux/init.h>    
  3. #include <linux/module.h>    
  4. MODULE_LICENSE("Dual BSD/GPL");     
  5. static int hello_init(void)     
  6. {     
  7. printk(KERN_ALERT "Hello, world\n");     
  8. return 0;     
  9. }     
  10. static void hello_exit(void)     
  11. {     
  12. printk(KERN_ALERT "Goodbye, cruel world\n");     
  13. }     
  14. module_init(hello_init);     
  15. module_exit(hello_exit);   
  1. Makefile:  
  2. obj-m := hello.o  
  3. KERNELDIR ?= /lib/modules/$(shell uname -r)/build  
  4. PWD := $(shell pwd)  
  5. default:  
  6. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 

其中,源檔案中的module_init和module_exit指定了模組被載入時執行的初始化函數和卸載時執行的清理函數。另外可以使用module_param指定載入模組時可以設定的參數。Makefile中的obj-m指定了使用make modules時候構造*.ko目標檔案時使用的*.o目標檔案。

Linux Kernel的瞭解,讓你學好Linux。

  1. 教你四種安裝Linux方法
  2. 詳解嵌入式Linux驅動入門
  3. 20年風雨曆程:Linux嵌入式
  4. 10個最好的自由Linux平台ERP軟體
  5. 全面解讀嵌入式Linux

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.