千家信息网

Linux文件系统安装模块化的示例分析

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,小编给大家分享一下Linux文件系统安装模块化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!以Fedora8下面
千家信息网最后更新 2024年11月11日Linux文件系统安装模块化的示例分析

小编给大家分享一下Linux文件系统安装模块化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

以Fedora8下面安装minix文件系统为例:
为了保证与系统内核相匹配,首先得获得相应版本的minix源代码,首先通过uname -r查询本机的内核版本:
[cocobear@cocobear ~]$ uname -r
2.6.24.4-64.fc8

在Kernel.org主页上可以获得2.6.24.4-64内核的源代码,其实我们只需要其中linux-2.6.24.4/fs/minix/目录中的代码。因为我们不需要对整个内核进行重新编译,因此我们只需要在linux- .6.24.4/fs/minix/目录下写一个Makefile,生成相应的minix.ko就可以了。
在开始写Makefile之前要确认系统已经安装了以下的包:
[cocobear@cocobear ~]$ rpm -qa | grep kernel
kernel-devel-2.6.24.4-64.fc8
kernel-headers-2.6.24.4-64.fc8
kernel-2.6.24.4-64.fc8
在模块编译的过程中需要用到。
在源代码中已经有一个Makefile:
#
# Makefile for the Linux minix filesystem routines.
#
obj-$(CONFIG_MINIX_FS) += minix.o
minix-objs := bitmap.o itree_v1.o itree_v2.o namei.o inode.o file.o dir.o
修改该文件为:
#
Makefile for the Linux minix filesystem routines.
# make minix fs as kernel module
obj-m += minix.o
minix-objs := bitmap.o itree_v1.o itree_v2.o namei.o inode.o file.o dir.o
KERNELDIR:=/lib/modules/$(shell uname -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)后缀的形式来定义模块的组成文件。KERNELDIR定义了代码树的位置,PWD定义了当前文件夹位置;而make命令中-C选项指定了代码树的位置(由KERNELDIR给出),M=$(PWD)指定了在当前目前进行构建工作。
***一行清理编译过程产生的文件。
完成了Makefile后我们就可以开始编译这个文件系统模块了,直接输入make就开始编译了:
[cocobear@cocobear minix]$ make
make -C /lib/modules/2.6.24.4-64.fc8/build M=/home/cocobear/minix modules
make[1]: Entering directory `/usr/src/kernels/2.6.24.4-64.fc8-i686′
CC [M] /home/cocobear/minix/bitmap.o
CC [M] /home/cocobear/minix/itree_v1.o
CC [M] /home/cocobear/minix/itree_v2.o
CC [M] /home/cocobear/minix/namei.o
CC [M] /home/cocobear/minix/inode.o
CC [M] /home/cocobear/minix/file.o
CC [M] /home/cocobear/minix/dir.o
LD [M] /home/cocobear/minix/minix.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/cocobear/minix/minix.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 | grep minix
[cocobear@cocobear minix]$
这里可以看到minix并没有被加载,我们使用insmod minix.ko命令:
[cocobear@cocobear minix]$ sudo insmod minix.ko
[cocobear@cocobear minix]$ cat /proc/modules | grep minix
minix 28676 0 - Live 0xd0e7d000
insmod后我们从上面的信息可以看到minix模块已经被加载,如果不需要使用这个模块我们同样可以很方便的把它卸载:
[cocobear@cocobear minix]$ sudo rmmod minix.ko
[cocobear@cocobear minix]$ cat /proc/modules | grep minix
[cocobear@cocobear minix]$
到此我们顺利的完成了Linux文件系统安装卸载和编译。
BTW:中间遇到了点问题写了Makefile后输入make提示:"make: Nothing to be done for `default'.",在网上找到了原因,在make命令前要使用tab,而不是空格,而我的刚好的空格,郁闷,以前就似乎遇到过的。

以上是"Linux文件系统安装模块化的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 模块 系统 编译 内核 命令 代码 位置 源代码 篇文章 示例 分析 内容 版本 目录 空格 过程 生成 输入 郁闷 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 期货公司手机期货软件开发 淘宝官网服务器搭建 ocr身份证识别软件开发 赞丽显示不被信任的服务器证书 内蒙古致善网络技术有限公司 烽火超微服务器是信创产品不 网络软件需要服务器么 南宁市软件开发有限公司 网络安全小学二年级发言稿 软件开发人员应具备的能力 服务器端口手机怎么开 长沙有涯科技网络技术 服务器存储部件选型 提尔渣渣灰在哪个服务器 地质资料网络数据库 盐城软件开发培训哪里比较好 互联网科技房间 软件开发项目技术参数 安徽鑫赢互联网科技有限公司 现有某公司关系数据库如下 停车管理系统服务器要求 乐视手机服务器出错 郑州嵌入式软件开发大概多少钱 软件开发口语 有关社区的软件开发毕业设计 战舰少女r服务器怎么进不去 简述网络安全知识 网络技术相关的英语词汇 支持软件开发的政策 公网的安全的时间同步服务器
0