1. 程式人生 > >模組化編譯F2FS

模組化編譯F2FS

一、下載要編譯的版本的原始碼(建議放/usr/src目錄下),編譯整個核心。其中,在make menuconfig配置的時候,選擇以模組的方式配置F2FS(選擇以M的方式比編譯進核心)


二、編譯完成後,把F2FS的整個目錄拷貝出來,進入目錄,修改Makefile檔案,主要就是新增相關路徑,如下:

obj-$(CONFIG_F2FS_FS) += f2fs.o

 

f2fs-y          := dir.o file.o inode.o namei.o hash.o super.o inline.o

f2fs-y          += checkpoint.o gc.o data.o node.o segment.o recovery.o

f2fs-y          += shrinker.o extent_cache.o

f2fs-$(CONFIG_F2FS_STAT_FS) += debug.o

f2fs-$(CONFIG_F2FS_FS_XATTR) += xattr.o

f2fs-$(CONFIG_F2FS_FS_POSIX_ACL) += acl.o

f2fs-$(CONFIG_F2FS_IO_TRACE) += trace.o

KERNELDIR:=/usr/src/linux-4.10.1

PWD:=/home/tsy/f2fs

default:

        make -C $(KERNELDIR) M=$(PWD) modules

clean:

        rm -rf *.o *.mod.c *.ko *.symvers

上面Makefile中,紅色部分是新加的。其中,PWD是在第1步中,把F2FS拷貝出來的路徑;KERNELDIR是第1步中編譯的原始碼的路徑(Makefile儘量手打,拷貝可能有錯)


三、在該目錄下執行make,make clean相關命令進行編譯和清除編譯後的檔案

make是編譯的命令;make clean是編譯前清楚上一次編譯結果的命令。


四、編譯完成後,使用insmod命令將F2FS的模組插入到核心中insmod f2fs.ko)。選擇一塊空的磁碟,格式化成F2FS格式的,再掛載F2FS檔案系統。

1、insmod f2fs.ko(插入模組)

2、apt-get install f2fs-tools(獲取f2fs工具,為格式化做準備)

3、mkfs.f2fs 磁碟A(格式化磁碟A成F2FS格式。執行了1才能執行2命令)

4、mount 磁碟A /mnt/f2fs(掛載磁碟A到/mnt/f2fs。掛載的路徑建議在/mnt下)


五、如果修改了核心檔案,如果再編譯,執行檢視輸出資訊等,需要先把之前的F2FS模組解除安裝,然後重複剛才的步驟就可以了

1、umount 磁碟A

2、rmmod f2fs.ko

 

關於dump_stack():

除錯的時候,可以用這個函式輸出呼叫棧的回溯資訊,可以看到大概的函式呼叫流程。

日誌檢視:

dmesg命令    或    vi /var/log下的各種檔案看一看

 



執行指令碼:

#!/bin/bash
cd /home/qjx/test/f2fs
umount /mnt/f2fs/
rmmod  f2fs.ko
make clean
make
insmod f2fs.ko
mount /dev/sdb1 /mnt/f2fs