模組化編譯F2FS

2021-08-08 18:21:18 字數 1608 閱讀 9230

二、編譯完成後,把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   

Android檔案系統之爭 F2FS和EXT4

f2fs 全稱為 flash friendly file system,是一種較為新型的支援 linux 核心使用的檔案系統。最早是由三星在2012年研發設計的,其目的就是為了更好的適應 nand 一類的快閃儲存器裝置 例如固態硬碟 emmc和sd卡等 在 f2fs 中三星應用了日誌結構檔案系統的概...

f2fs原始碼解析 五 node管理結構梳理

node是f2fs重要的管理結構,它非常重要 系統掛載完畢後,會有乙個f2fs nm info結構的node管理器來管理node的分配.f2fs nm info中最讓人疑惑的是幾顆基數樹 490 struct f2fs nm info 三棵基數樹分別是 nat root,nat set root,f...

模組化編譯方式

編譯工具提供依賴分析模式和普通編譯模式兩種編譯模式 在依賴分析編譯模式下正確的模組引用方式 require util a.js b.js中引用a.js require a.js 從當前目錄到專案根目錄下遞迴尋找node modules資料夾中是否存在a.js,沒有則報錯 require a.js 普...