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是指的訊息級別的意思,總共...