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

2022年 10月 17日 发表评论

云产品最新活动点击抢腾讯云3/5年服务器限量秒杀名额续费贵、升级贵,建议选配置高、长期的云产品PS:幻兽帕鲁十分火热:点击了解阿里云帕鲁服务器自建教程点击了解腾讯云帕鲁服务器自建教程

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: