本节所讲内容:
• 使用Linux内核模块
• 实战-编译一个NTFS内核模块,实现linux挂载NTFS文件系统并实现读写功能
内核模块操作
内核(模块)管理命令:
模块的作用:把具体功能封装好的程序。 手电筒 照明
存放内核模块的目路径:
[root@xuegod60 ~]# cd /lib/modules
[root@xuegod60 modules]# ls
3.10.0-327.el7.x86_64 4.4.0
[root@xuegod60 ~]# cd /lib/modules/4.4.0/kernel/fs/
[root@xuegod60 fs]# ls
binfmt_misc.ko ceph dlm fat gfs2 lockd nfs_common ntfs squashfs
btrfs cifs exofs fscache isofs mbcache.ko nfsd overlayfs udf
cachefiles cramfs ext4 fuse jbd2 nfs nls pstore xfs
插入模块
insmod
作用:插入模块
[root@xuegod60 fat]# pwd
/lib/modules/4.4.0/kernel/fs/fat
[root@xuegod60 fat]# insmod fat.ko
查看当前系统中加载的模块
[root@xuegod60 fat]# lsmod | grep fat
fat 69632 0
删除模块
[root@xuegod60 fat]# rmmod fat
解决有依赖关系的模块插入modprobe
[root@xuegod60 fat]# insmod vfat.ko
insmod: ERROR: could not insert module vfat.ko: Unknown symbol in module
[root@xuegod60 fat]# modprobe vfat
[root@xuegod60 fat]# lsmod |grep fat
vfat 20480 0
fat 69632 1 vfat
删除模块
[root@xuegod60 fat]# modprobe -r vfat
[root@xuegod60 fat]# lsmod | grep fat
新添加一个模块后,需要让系统知道:
[root@xuegod60 4.4.0]# depmod
[root@xuegod60 fat]# cd /lib/modules/4.4.0/
[root@xuegod60 4.4.0]# vim modules.dep
查看模块间依赖关系:如fat。从下图可以看出,vfat和msdos模块都依赖fat.ko模块
文件格式
查看模块信息
modinfo
[root@xuegod60 4.4.0]# modinfo kernel/fs/fat/vfat.ko
filename: /lib/modules/4.4.0/kernel/fs/fat/vfat.ko
author: Gordon Chaffee
description: VFAT filesystem support
license: GPL
alias: fs-vfat
srcversion: BEF7BA1F8972367DD650AA0
depends: fat
intree: Y
vermagic: 4.4.0 SMP mod_unload modversions
开机自动加载模块
[root@xuegod60 4.4.0]# vim /etc/rc.local
[root@xuegod60 4.4.0]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jan 16 03:13 /etc/rc.local -> rc.d/rc.local
实战-编译一个NTFS内核模块,实现linux挂载NTFS文件系统
如何在虚拟机中插入U盘
安装fuse ntfs-3g
[root@xuegod60 ~]# rpm -qa | grep fuse
gvfs-fuse-1.22.4-6.el7.x86_64
fuse-libs-2.9.2-6.el7.x86_64
fuse-2.9.2-6.el7.x86_64
[root@xuegod60 ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
[root@xuegod60 ~]# yum clean all
[root@xuegod60 ~]# yum list
扩展:
配置yum源,是yum网络源安装的包能自动保存
[root@xuegod60 ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
[root@xuegod60 ~]# yum -y install ntfs-3g
[root@xuegod60 ~]# ls /var/cache/yum/x86_64/7Server/rpmforge/packages/
fuse-ntfs-3g-2013.1.13-2.el7.rf.x86_64.rpm
[root@xuegod60 ~]# umount /dev/sdc1
[root@xuegod60 ~]# mount -t ntfs-3g /dev/sdc1 /opt/
The disk contains an unclean file system (0, 0).
[root@xuegod60 ~]# cd /opt/
[root@xuegod60 opt]# echo aaa > a.txt