單獨編譯Linux核心中的某一模組(驗證可行!)

2021-06-28 21:31:26 字數 1404 閱讀 5871

最近閱讀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核心版本...