最近閱讀linux-2.6.32的jbd模組**,為了弄清楚jbd的執行流程,我在jbd模組的匯出函式的入口處加了printk輸出。然後就需要重新編譯linux的核心**。大家知道,完全編譯linux整個核心**需要的時間比較長。由於jbd是乙個單獨的模組,那能不能將這個模組進行單獨編譯呢?
當然可以!方法如下:
1.首先將jbd的**(在linux原始碼/fs/jbd目錄)整個拷貝出來;
2.將jbd**中的makefile進行修改:
原makefile的內容如下:
## makefile for the linux journaling routines.
#obj-$(config_jbd) += jbd.o
jbd-objs := transaction.o commit.o recovery.o checkpoint.o revoke.o journal.o
修改後的makefile如下:
# makefile for jbd
target = jbd
object = transaction.o commit.o recovery.o checkpoint.o revoke.o journal.o
ifneq ($(kernelrelease),)
#kbuild syntax.
obj-m += $(target).o
$(target)-objs := $(object)
else
pwd := $(shell pwd)
kernel_dir := /lib/modules/`uname -r`/build
all : modules
modules:
$(make) -c $(kernel_dir) m=$(pwd) modules
install:
install ./$(target).ko /usr/local/lib
/sbin/insmod ./$(target).ko
uninstall:
rm -f /usr/local/lib/$(target).ko
/sbin/rmmod $(target).ko
insmod:
/sbin/insmod ./$(target).ko
rmmod:
/sbin/rmmod $(target).ko
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions module.markers modules.order module.symvers
endif
3.編譯模組:
$ make
4.載入模組:
$sudo make insmod
5.解除安裝模組:
$sudo make rmmod
Linux下使用核心原始碼單獨編譯某一模組
使用linux在於折騰。生命不息,折騰不止。在vmware中安裝了linuxmint 18,自帶核心是4.4,於是自己手動將核心版本公升級到了4.8,但是安裝新的核心後,發現vmware螢幕無法自動適應客戶機,於是 lspci knn檢視了下顯示模組,發現vga沒有可用的模組。於是對比了正常的虛擬機...
Linux下使用核心原始碼單獨編譯某一模組
初衷 由於ubuntu1604安裝版本沒有 igmp snooping的模組,所以研究了一下此功能。進入需要編譯的目錄,我的目錄是 net bridge,sean sean media sean b55f4db0 2560 4807 b8bf b29a66db54e1 home sean work ...
Linux核心中的程序(一)
多工系統可以分為 非搶占式和搶占式。linux提供搶占式多工模式。程序在被搶占之前能夠執行的時間叫程序的時間片,linux獨一無二的公平排程程式本身並沒有採用時間片來達到公平排程。linux之前採用o 1 排程器,它對大伺服器的工作負載很理想,但是對響應時間敏感的程式卻有不足。在2.6.23核心版本...