核心模組筆記

2021-06-27 13:27:27 字數 2286 閱讀 8616

1、解壓核心原始碼到目錄檔案    #tar xjvf linux-2.6.22.6.tar.bz2 -c /home/guoqian/test4-1-1/

#cd    /home/guoqian/test4-1-1/linux-2.6.22.6         # make distclean

2、配置檔案      # cp   /boot/config-2.6.18-53.el5   /home/guoqian/test4-1-1/linux-2.6.22.6/.config

3、配置核心      #make menuconfig

4、編譯核心      #make bzimage

出現root device is (253, 0)

boot sector 512 bytes.

setup is 7545 bytes.

system is 1794 kb

kernel: arch/i386/boot/bzimage is ready  (#1),核心已編譯好!

5、核心模組編譯   #make modules

6、核心模組安裝    #make modules_install  (會將編譯好的核心模組從核心源**目錄copy至/lib/modules下)!

7、製作ramdisk      #mkinitrd      initrd-$version  $version(eg:在linux2.6.22.6.的上級目錄執行 #mkinitrd -v /boot/initrd-2.6.22.6  2.6.22.6)

8、核心安裝   #cp   arch/x86/boot/bziamge    /boot/vmlinuz-$version(eg:cp /home/guoqian/test4-1-1/linux-2.6.22.6/arch/i386/boot/bzimage /boot/vmlinuz-2.6.22.6)

#cp      $initrd      /boot/

#修改 /etc/grub.conf 或menu.lst (eg:lrwxrwxrwx 1 root root 11 2013-03-06 menu.lst -> ./grub.conf)

修改好後重啟檢視是否成功!

9、編寫核心模組程式及makefile:

編譯成功後出現檔案下出現hello_module.c  hello_module.ko  hello_module.mod.c  hello_module.mod.o  hello_module.o  makefile  module.symvers

10、載入模組:      #insmod hello_module.ko

# 可以 tail /var/log/messagesc檢視列印出的資訊

dec 11 11:32:10 localhost kernel: hello mini2440 module is installed ! 

11、檢視 :  lsmod 出現

module                  size  used by

hello_module            5632  0 

可以看到模組已經載入成功!

12、解除安裝模組:rmmod  hello_module

可以 tail /var/log/messagesc檢視列印出的資訊

dec 11 11:37:10 localhost kernel: goodbye mini2440 module was removed

modprobe 載入乙個模組到核心,它依據/lib/modules/<$version>/modules.dep

作者申明:module_license()

模組描述:module_description()

模組別名:module_alias()

模組引數:module_param(name,type,perm)  (name 為模組名稱,type 為型別,perm為許可權)  eg:使用insmod param age=12 name=yukimura。

在乙個核心模組中寫的函式如果要其他模組使用,你需要將核心符號匯出!           export_symbol(函式名)。

export_symbol_gpl(函式名)       只能用於包含gpl許可證的模組!

eg:#insmod calculate.ko

#insmod main.ko

# lsmod

module                  size  used by

main                    5632  0

calculate               5760  1 main

Linux學習筆記 核心模組

模組 是linux高效利用微核心,同時不會降低系統效能與優點的一種方法。幾乎linux核心的每個高層元件 檔案系統 裝置驅動 網路,都可以作為模組進行編譯。linux的發布版,充分使用模組方式全面地支援多種品牌型號的硬體。但在某個計算機上只會有效載入其中乙個驅動程式。這樣核心就不會因為裝載那些數以百...

LINUX學習筆記21 核心模組

一 linux 核心模組 的開發 1.如何使用需要的元件 a 把所有的元件都編譯進核心檔案 i.缺陷1 核心檔案過大 ii.缺陷2 如果要新增或刪除某個元件,需要重新編譯整個核心 b 使用 核心模組 的機制 i.模組本身並不被編譯進核心檔案 ii.以根據需求,在核心執行期間動態的安裝或解除安裝。2....

核心模組開發學習筆記(四)

1.遵循雙許可證 module license dual bsd gpl 2.乙個簡單的核心模組 1 加static後別的.c 就不能呼叫了,限定了函式的作用域,僅限於本檔案中使用 核心龐大,防止和其它模組衝突,盡量在核心程式設計中加上static。2 kern alert是指的訊息級別的意思,總共...