模块化编译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

扫描二维码关注公众号,回复: 4067536 查看本文章

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   

猜你喜欢

转载自blog.csdn.net/qwerrfxgj/article/details/78094598