unionfs安装到Linux内核

unionfs是一个堆栈文件系统,能把不同目录下的文件融合到一个目录下。unionfs可以以2种方式进行安装:用户态和内核态。这里,我选择把它安装到内核。我的操作系统是ubuntu12.04


源码下载:http://download.filesystems.org/unionfs/unionfs-2.x-latest/

上述地址是unionfs官方的源码下载地址,进去后发现都是一个相对于某个Linux内核版本的diff文件。我选择了unionfs-2.5.11_for_3.2.2.diff.gz。选择这个版本的原因:1.内核版本较新,对以后测试一些与内核相关的程序有帮助;2.该版本对应的内核3.2.2在网上可以搜到对应版本的内核源码(Linux kernel:http://www.kernel.org/,官网的内核版本比3.2.2还新,但是可以在百度里搜到3.2.2的内核,有不少站点都保留了该版本内核)


对内核打补丁:

我下载的Linux内核是:linux-3.2.2.tar.gz

内核源码包和unionfs的补丁(即diff文件)放到相同目录下。

解压内核文件:

bzip2 -d linux-3.2.36.tar.bz2    

tar xvf linux-3.2.36.tar  

解压补丁文件:

gunzip unionfs-2.5.11_for_3.2.2.diff.gz

打补丁前,要先安装path工具: sudo apt-get install patch

打补丁:

cd linux-3.2.2

patch -p1 < ../unionfs-2.5.11_for_3.2.2.diff


内核配置:

在配置linux内核前,要先安装配置工具:apt-get install libncurses5-dev

然后,在linux-3.2.2目录下:make menuconfig

进入:filesystem --> Miscellaneous filesystems,找到unionfs,按“M”(表示把unionfs编译成内核模块

保存,退出


编译内核:

make all -jn (jn是启动多线程,n为线程数不想启动多线程编译的话,可以去掉-jn选项)

sudo make modules_install

sudo make install


测试unionfs:

启动unionfs模块: sudo modprobe unionfs

sudo modprobe -l | grep unionfs  显示unionfs.ko模块就成功

挂载unionfs: sudo mount -t unionfs -o dirs=./test1=rw:./test2=ro unionfs ./test

解释下:-t unionfs,表示的是文件系统挂载类型是unionfs; -o dirs=./test1=rw:./test2=ro,是一个标记;./test1是当前挂载的一个源目录,后面rw表示以可读写方式挂载;./test2是另外一个源目录,ro是以只读方式挂载; 后面跟着的unionfs是挂载设备;./test是挂载点。

需要注意的是:./test1和./test2不能属于同一个文件系统。我在执行上述命令前,在./test1下挂载了另外一个硬盘


你可能感兴趣的:(unionfs安装到Linux内核)