linux內核分析實踐二學習筆記

Linux實踐二——內核模塊的編譯

標籤(空格分隔): 20135328陳都linux


理解內核的做用

Linux內核[kernel]是整個操做系統的最底層,它負責整個硬件的驅動,以及提供各類系統所需的核心功能,包括防火牆機制、是否支持LVM或Quota等文件系統等等,若是內核不認識某個最新的硬件,那麼硬件也就沒法被驅動,你也就沒法使用該硬件。
計算機真正工做的東西實際上是硬件,例如數值運算要使用到CPU、數據儲存要使用到硬盤、圖形顯示會用到顯示適配器、音樂發聲要有音效芯片、鏈接Internet 可能須要網絡卡等等。內核就是控制這些芯片如何工做。網絡

  • 內核各個模塊之間的映射

編寫內核模塊代碼

image_1ajemqt5sias7vo185ul6s49fm.png-132.6kB
image_1ajemuk65bol3vb9fep55pql1j.png-18.9kB

編譯模塊

makefile
image_1ajg5kugtkqm13bpfap1m991n7c2t.png-57.2kB測試

  • 執行一下 make 命令
    image_1ajg5moq8116cn2v1jqq5431mql3a.png-202.9kB

實際操做

加載

  • sudo insmod 模塊名.ko
    image_1ajg5sncvsehbebjka11v46013n.png-35.9kB

測試

  • dmesg
    image_1ajg5v6qlnrv1q4qa3h11kc8q844.png-502.1kB

卸載模塊

-sudo rmmod 模塊名
運行完畢後再運行dmesg
image_1ajg63sit1avd1mgh1jo7obeahp4h.png-62.8kB
成功操作系統

須要注意的問題

  • 如何查看內核版本模塊版本號
    image_1ajg67mgl1gig1gcu1oe618m6kpg4u.png-113.5kB3d

  • 文件名不要起module這種系統有定義的名字blog

相關文章
相關標籤/搜索