怎么在Linux系统中以模块方式安装与卸载文件系统

2022年 10月 17日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

Linux系统中如何模块化安装和卸载文件系统?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想解决这个问题的伙伴找到更简单易行的方法。

以Fedora8下minix文件系统的安装为例:

为了保证与系统内核的匹配,首先要获取minix源代码的对应版本,首先通过uname -r查询原生内核版本:

[cocobear@cocobear ~]$ uname -r

2 . 6 . 24 . 4-64 . fc8 2 . 6 . 24 . 4-64内核的源代码可以从Kernel.org的主页上获得。事实上,我们只需要Linux-2 . 6 . 24 . 4/fs/minix/directory中的代码。因为不需要重新编译整个内核,只需要在linux-2.6.24.4/fs/minix/目录下写一个Makefile,生成相应的minix.ko即可

在开始写入Makefile之前,请确保系统已经安装了以下软件包:

[coco bear @ coco bear ~]$ rpm-QA | grep内核

kernel-dev-2 . 6 . 24 . 4-64 . fc8

内核头-2.6.24.4-64.fc8

内核-2.6.24.4-64.fc8

模块编译过程中需要用到。

源代码中已经有一个Makefile:

#

Linux minix文件系统例程的Makefile。

#

obj-$(CONFIG_MINIX_FS)=minix.o

minix-objs :=bitmap . o itree _ v1 . o itree _ v2 . o namei . o inode . o file . o dir . o

按如下方式修改文件:

#

Linux minix文件系统例程的Makefile。

#将minix fs作为内核模块

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:=$(外壳PWD)

默认值:

make -C $(KERNELDIR) M=$(PWD)模块

clean:

rm -rf *。o *.mod.c *。ko *。symvers

这里简单说明一下,obj-m是指文件将以模块化方式编译;因为这个模块由多个文件组成,所以使用模块名加ndashobjs(minix-objs)后缀的形式用于定义模块的组件文件。KERNELDIR定义了代码树的位置,PWD定义了当前文件夹的位置。make命令中的-C选项指定了代码树的位置(由KERNELDIR给出),M=$(PWD)指定了目前应该进行的施工工作。

最后一行清理编译过程生成的文件。

完成Makefile后,我们就可以开始编译这个文件系统模块了,直接进入make开始编译:

[cocobear@cocobear minix]$ make

make-C/lib/modules/2 . 6 . 24 . 4-64 . fc 8/build M=/home/coco bear/minix模块

使[1]:进入目录`/usr/src/kernel/2 . 6 . 24 . 4-64 . fc8-i686 prime;

CC[M]/home/coco bear/minix/bitmap . o

CC[M]/home/coco bear/minix/itree _ v1 . o

CC[M]/home/coco bear/minix/itree _ v2 . o

CC[M]/home/coco bear/minix/namei . o

CC[M]/home/coco bear/minix/inode . o

CC[M]/home/coco bear/minix/file . o

CC[M]/home/coco bear/minix/dir . o

LD[M]/home/coco bear/minix/minix . o

构建模块,第2阶段。

MODPOST 1模块

CC/home/coco bear/minix/minix . mod . o

LD[M]/home/coco bear/minix/minix . ko

使[1]:离开目录`/usr/src/kernel/2 . 6 . 24 . 4-64 . fc8-i686 prime;

编译后会遇到目前生成的minix.ko文件,这就是我们需要的。我们可以通过insmod命令安装这个minix文件系统模块。当然,这里需要root权限。让我们演示minix模块的加载:

[coco bear @ coco bear minix]$ cat/proc/modules | grep minix

[cocobear@cocobear minix]$

您可以在这里看到minix没有加载,所以我们使用insmod minix.ko命令:

[coco bear @ coco bear minix]$ sudo ins mod minix . ko

[coco bear @ coco bear minix]$ cat/proc/modules | grep minix

minix 28676 0 - Live0xd0e7d000

insmod之后,从上面的信息可以看出minix模块已经加载,如果不需要使用这个模块,也可以轻松卸载:

[coco bear @ coco bear minix]$ sudo rmmod minix . ko

[coco bear @ coco bear minix]$ cat/proc/modules | grep minix

[cocobear@cocobear minix]$

到目前为止,我们已经成功完成了文件系统的编译、安装和卸载。

BTW:中间有个问题。写完Makefile后,输入make提示:“对‘default’不执行任何操作。 ",我在网上找到了原因。make命令之前用tab代替空格,我刚才的空格,郁闷,好像以前也遇到过。

Linux系统中如何模块化安装和卸载文件系统的问题的答案在这里分享。希望以上内容能对大家有所帮助。如果你还有很多疑问需要解决,你可以关注本站了解更多。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: