论坛风格切换切换到宽版
  • 883阅读
  • 0回复

[问题求助]Linux文件系统安装模块化讲解 [复制链接]

上一主题 下一主题
离线pkx520.
 
发帖
2006
C币
-235498
威望
354
贡献值
1
银元
-4
铜钱
4577
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
经过长时间学习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,而不是空格,而我的刚好的空格,郁闷,以前就似乎遇到过的。.

         .       浦华众诚培训网技术学院 . 转载学习
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个