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