经过长时间学习Linux文件系统安装卸载,和大家一起分享一下学习的经验.,希望也.能为不了解的同学一个启示。.
以Fedor.a8下面安装minix文件系统为例:<性病>
为了保证与系统内核相匹配,首先得获.得.相应版本的minix源代码,首先通过uname -r查询本机的内核版本: 杀毒
[cocobear@cocobear ~]$ un.ame. -r学习
2.6.24.4-64.fc.8.
在Kernel.org主页上.可以获得2.6.24.4.-64内核的源代码,其实我们只需要其中linu.x-2.6.24.4/fs/minix/目录中的代码。因为我们不需要对整个内核进行重新编译,因此我们只需要在linux- .6.24.4/fs/minix/目录下写一个Makefile,生.成相应的minix.ko就可以了。 电子
在开始写Makefile之前要确.认系统已经安装了以.下的包: 杀毒
[coc.obear@cocobear ~]$ rpm -qa | grep kern.el.
kernel-.devel-2.6.2.4.4-64.fc8电脑
kernel-header.s-2.6..24.4-64.fc8 鲜花
kerne.l-2.6.24.4-64.fc8.
在模块编译的过程中需要用到。
在源代码中已经有一.个Makefile:
#
# Makefile for the Linux minix filesys.tem routines...
#
obj-$(CONFIG_MINIX_FS) .+=. minix.o学习
minix-o.bjs := bitmap.o itree_v1.o itree_v2.o n.amei.o inode.o file.o dir.o教育
修改该文件为:
#
Makefile for the Linu.x minix filesystem r.outines..
# ma.ke. minix fs as kernel module 建材
obj-m += .minix.o.
minix-objs := bitmap.o itree_v1.o itree_v2.o namei.o inode.o f.ile..o dir.o--- 印刷
KERNELDIR:=./lib/modules/$(shell u.name -r)/build(广告)
PWD:=$(.shell pwd).
default:
make -C $(KERNELDIR..) M=$(PWD) modules.
clean:
rm .-rf *.o *..mod.c *.ko *.symvers电影
这里简单的解释一下,obj-m表示该文件将以模块的方式编译;因为本模块由多个文件组成,采用模块名加 –objs(minix-objs)后缀的形式来定义模块的组成文件。K.ERNE.LDIR定义了代码树的位置,PWD定义了当前文件夹位置;而make命令中-C选项指定了代码树的位置(.由KERNELDIR给出),M=$.(PWD)指定了在当前目前进行构建工作。.
最后一行清理编译过程产生的文件.。 汽车
完成了Makefile后我们就可以开始编译这个文件系统模.块了,直接输入ma.ke就开始编译了:投资
[cocobear@cocobear mini.x]$ ma.ke电脑
make -C /lib/modu.les/2.6.24.4-64.fc8/build M=/home./cocobear/minix modules
make[1]: Ente.ring directory `/usr/src/kernels/2.6.24.4-64.fc8-i.686′域名
CC [M] /.home/.cocobear/minix/bitmap.o.
CC [M] /.home/cocobear/m.inix/itree_v1.o--------------彩票
CC [M] /home/cocobear/minix/itree_v2..o.健康
CC [M] /home/co.cob.ear/minix/namei.o服务器
CC [M] /home/cocob.ear/minix/inode..o--------------彩票
CC [M] /hom.e/cocobear/minix/file..o.
CC [M] /home/cocobea.r/minix/.dir.o域名
LD [.M] /home/cocobear/m.inix/minix.o域名
Buil.ding modules, stage .2..
MODPOST 1 m.odules教育
CC /home/cocobear/min.ix/mini.x.mod.o电影
LD [M.] /home/cocobear/minix/minix..ko
make[1]: Leaving .directory `/usr/src/kernels/2.6.24.4-64..fc8-i686′ 外汇
编译结束后会面当前目前下生成minix.ko文件,这.就是我们需要的东西,使用insmod命令就可以安装这个minix文件系统模块了。当然这里需要有root权限。我们来演示一.下minix模.块的加载: 建材
[cocobear@cocobear minix]$. cat /proc/modules | g.rep minix[成人用品]
[cocobear@cocobear min..ix]$.
这里可以看到minix并.没有被加载,我们使用insmod minix.ko命.令:.
[.cocobear@.cocobear minix]$ sudo insmod minix.ko教育
[
cocobear@co.cobear minix]$ cat /proc/modules | grep m.inix 建材
minix 28676 0 - Live 0xd0.e.7d000.
insmod后我们从.上面的信息可以看到minix模块已经被加载,如果不需要使.用这个模块我们同样可以很方便的把它卸载:.
[cocobear@cocobear minix]$ .sudo rmmod mi.nix.ko.
[cocobe.ar@cocobear minix]$ cat /proc/modules. | grep minix[成人用品]
[cocobear@cocobea.r min.ix]$--- 印刷
到此我们顺利的完成了L.inu.x文件系统安装卸载和编译。 杀毒
BTW:中间遇到了点问题写了Makefile后输.入ma.ke提示:“make: Nothing to be done for `defau.lt‘。”,在网上找到了原因,在make命令前要使用.tab,而不是空格,而我的刚好的空格,郁闷,以前就似乎遇到过的。.
. 浦华众诚培训网技术学院 . 转载学习