研究生期间研究加密文件系统相关内容,采用堆栈式文件系统 Wrapfs 作为学习入口, 在使用过程中遇到一些问题,后期对其安装、配置流程进行整理,由于能力所限,难免存在疏漏,如有建议欢迎给我留言,或者通过 sa615371@mail.ustc.edu.cn 与本人交流讨论。
环境配置
- Virtualbox:5.0.4
- Ubuntu16.04.1 server32位发行版
- 内核:4.4.0-36-generic
- 768M内存
详细步骤
下载源码树
sudo apt-cache search linux-source
sudo apt-get install linux-source-4.4.0
解压源码
sudo tar -xjf linux-source-4.4.0.tar.bz2
下载wrapfs 的patch
补丁地址:http://download.filesystems.org/wrapfs/patches/
选取最接近本机内核版本的补丁下载
wget http://download.filesystems.org/wrapfs/patches/wrapfs-v4.4.6-94-gbd18b62.diff.gz
打补丁 解压
打补丁到源码树对应位置(注意当前路径)sudo patch -p1 < /usr/src/linux-source-4.4.0/wrapfs-v4.4.6-94-gbd18b62.diff
安装必备编译包
sudo apt-get install build-essential kernel-package libncurses5-dev
修改vermagic版本号
打开源码根目录的Makefile ,修改EXTRAVERSION项。
注意:要保持和当前系统可加载模块相同的vermagic ,如下图![[修改vermagic版本号] [修改vermagic版本号]](/2017/Ubuntu发行版安装wrapfs/修改vermagic版本号.png)
拷贝 Module.symvers Module.symvers 到源码处
sudo cp /usr/src/linux-headers-4.4.0-36-generic/Module.symvers ./
sudo cp /lib/modules/4.4.0-36-generic/modules.symbols ./可解决
insmod: ERROR: could not insert module wrapfs.ko: Invalid module format问题编译模块
- 拷贝当前系统的Module.symvers到wrapfs源码处
先在该源码树根目录执行
make生成必要的头文件(生成/include/generate/ 等包含版本信息的头文件),然后Ctrl+c强制停止。编译wrapfs模块make -C /usr/src/linux-source-4.4.0/linux-source-4.4.0/ M=$PWD modules
可能需要添加
CONFIG_WRAP_FS=m选项sudo make CONFIG_WRAP_FS=m –C /usr/src/linux-4.2.5/ M=$PWD modules
查看模块信息和当前内核版本匹配
modinfo ./wrapfs.ko
挂载成功
sudo insmod wrapfs.ko
问题
问题: 无法卸载模块
场景复现: 成功insmod wrapfs 模块 重新编译新wrapfs模块,未卸载之前wrapfs模块,再次insmod wrapfs
解决: 重启,未找到简单不重启解决方案。
6和7 可以解决生成 .ko 文件却无法挂载的问题。