在 CentOS 6.x 中,默认 NTFS 文件系统是没有安装的,也就是说在 CentOS 6.x 中是不能直接挂载 NTFS 分区的。但是目前 Windows 的分区绝大多数是 NTFS 分区,这就需要在 CentOS 6.x 中安装 NTFS 文件系统的模块之后,才能使用 NTFS 分区。
安装 NTFS 文件系统模块的方法有三种:
- 第一种方法是完整地重新编译内核,然后在内核中选择 NTFS 功能,但这种方法过于麻烦,如果只是为了加入 NTFS 支持,则不建议采用这么复杂的方法;
- 第二种方法是得到 NTFS 文件系统模块(可以到互联网上下载,也可以利用本机的内核部分编译之后产生,不用完整地编译内核,要简单方便得多),然后使用 modprobe 命令安装,本小节就来介绍这种方法;
- 第三种方法是安装 NTFS 文件系统的第三方插件,如 NTFS-3G,这种插件安装简单、功能完整,我们也会讲讲这种方法;
得到NTFS文件系统模块后,手工安装
如果使用这种方法,则首先需要得到 NTFS 文件系统模块,这些模块一般是用 *ko 作为扩展名的。我们可以直接在互联网上找到 ntfs.ko 的模块文件下载之后安装;也可以下载完整的内核源码,自己编译生成 ntfs.ko 模块,然后安装。
我们采用第二种方法。具体步骤如下。
1) 下载内核
我们可以到内核的官方网站下载和本机安装的内核版本相同的内核源码。本机内核的版本可以使用 uname -r 命令查看,命令如下:
[root@localhost ~]# uname -r
2.6.32-279.el6.i686
这里下载的是 linux-2.6.32.tar.bz2 这个内核源码。我们可能会发现,在内核官网上找到的内核源码的版本可能和本机内核的版本不完全相同,这不会有太大影响,只需找到和本机版本差不多的内核源码即可。
另外,在 2.4.x 内核版本中,我们可以通过 RPM 包安装完整的内核源码到本机,而不用去官网下载。但是在 2.6.x 内核版本之后,如果采用 RPM 包的方式安装内核源码,则只会安装部分源码文件,而不会安装完整的内核源码文件。RPM 包安装的内核源码是不能进行正常编译和安装的,所以只能到内核的官方网站上下载完整的内核源码。
2) 解压内核
下载的内核是压缩包,需要解压。解压命令如下:
[root@localhost ~]# tar -jxvf linux-2.6.32.tar.bz2
[root@localhost ~]# cp -r linux-2.6.32 /usr/src/kernels/
\#复制内核源码到默认内核源码保存位置
3) 生成内核编译所需的 .config 文件
在进行内核编译时,是需要依赖 .config 配置文件来配置内核功能的,这个文件是通过 make menuconfig 命令生成的。
不过,我们在这里不讲解完整的内核编译过程,只是为了生成 ntfs.ko 文件,那么我们就不需要执行复杂的 make menuconfig 命令了。我们可以安装 RPM 包的内核,虽然 RPM 包安装的内核源码并不完整(早期 Linux 版本会安装完整的内核源码),但是有 .config 配置文件,我们可以直接利用这个配置文件,而不需要使用 make menuconfig 命令自己生成 .config 配置文件(在进行真正的内核编译时,是需要使用 make menuconfig 命令来配置自己需要的功能,并生成 .config 配置文件的)。 命令如下:
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ kemel-devel-2.6.32-279.el6.i686.rpm
\#安装RPM包的不完整的内核源码
[root@localhost ~]# cp /usr/src/kemels/2.6.32-279.el6.i686/.config/usr/src/
kemels/linux-2.6.32/
\#从RPM包的内核源码中复制.config配置文件到源码包的内核源码中
这样我们就有了 .config 配置文件,当然也可以通过 make menuconfig 命令生成这个配置文件。不过我们现在还没有学习内核的编译过程,所以采用了这种简单的办法。当然,还要修改一下 .config 配置文件,让它支持 NTFS 文件系统。需要把 #CONFIG_NTFS_FS is not set 这行代码改为 CONFIG_NTFS_FS=m,意思是用模块形式加载 NTFS 文件系统。命令如下:
[root@localhost ~]# vi /usr/src/kernels/ linux-2.6.32/.config
…省略部分输出…
\# CONFIG_NTFS_FS is not set
\#改为
CONFIG_NTFS_FS=m
…省略部分输出…
4) 编译模块
使用 make modules 命令来编译所有的模块,因为我们开启了 NTFS 文件系统模块,所以会生成 ntfs.ko 文件。当然,编译要想正确进行,gcc 编译器是必须安装的。命令如下:
[root@localhost ~]# cd /usr/src/kernels/linux-2.6.32/
\#编译命令一定要进入内核目录才能执行,因为编译命令编译的是模块当前所在目录
[root@localhost linux-2.6.32]# make modules
\#在命令执行过程中,需要选择安装哪些模块,这时只选择NTFS相关模块,其他模块都不安装,这样能加快安装速度。注意:需要选择的选项较多,不要漏选
…省略部分输出…
NTFS file system support (NTFS_FS) [M/n/y/?] m
NTFS debugging support (NTFS_DEBUG) [N/y/?] (NEW)y
NTFS write support (NTFS_RW) [N/y/?] (NEW)y
\#只有这几个功能选择y(安装)或m(安装成模块),其他功能都不需要安装
…省略部分输出…
接下来需要等待编译过程结束,就能看到 ntfs.ko 模块了。命令如下:
[root@localhost linux-2.6.32]# ll /usr/src/kemels/ linux-2.6.32/fe/ntfs/ntfs.ko
-rw-r--r--. 1 root root 3175255 6 月 4 18:57 /usr/src/ kemels/linux-2.6.32/
fs/ntfs/ntfs.ko
5) 模块安装
我们有了 ntfs.ko 模块,接下来的安装过程就比较简单了。先把 ntfs.ko 复制到指定位置,命令如下:
[root@localhost linux-2.6.32]# cp fs/ntfs/ntfe.ko/lib/ modules/2.6.32-279.el6.i686/kemel/fs/
然后开始模块安装,命令如下:
[root@localhost linux-2.6.32]# depmod -a
\#扫描所有模块
[root@localhost linux-2.6.32]# modprobe ntfs
\#安装ntfs模块
如果 modprobe ntfs 命令报错,那是因为版本不符。这个问题很好解决,只要执行如下命令:
[root@localhost linux-2.6.32]# modprobe -f ntfs
\#-f:强制
强制安装 ntfs 模块即可。然后查询一下:
[root@localhost linux-2.6.32]#lsmod | grep ntfs
ntfs 93874 0 [permanent]
这样 ntfs 模块就安装成功了,我们就可以尝试挂载和使用 NTFS 的分区或移动硬盘了。
注意,虽然我们使用了部分内核编译命令,但是我们的目的不是编译内核,而只是生成 ntfs.ko 模块,所以不需要完成内核的完整编译与安装过程。而且,如果执行了 make install 命令,那么安装的新内核有 ntfs 功能,其他功能都不存在,新内核是不能正确使用的。
利用 NTFS-3G 插件安装 NTFS 文件系统模块
我们已经学习了利用 ntfs.ko 模块安装 NTFS 文件系统,这种方法生成 ntfs.ko 模块比较麻烦。如果采用安装 NTFS-3G 插件的方式安装 NTFS 文件系统,则更加简单和方便。具体步骤如下。
1) 下载 NTFS-3G 插件
首先,下载 NTFS-3G 插件到 Linux 服务器上。
2)安装 NTFS-3G 插件
在编译安装 NTFS-3G 插件之前,要保证 gcc 编译器已经安装。具体安装命令如下:
[root@localhost ~]# tar -zxvf
ntfs-3g_ntfsprogs-2013.1,13.tgz
\#解压
[root@localhost ~]#cd ntfs-3g_ntfeprogs-2013.1.13
\#进入解压目录
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]#./ configure
\#编译器准备。没有指定安装目录,安装到默认位置
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make
\#编译
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install
\#编译安装
这样安装就完成了,可以挂载和使用 Windows 的 NTFS 分区了。不过需要注意,挂载分区时的文件系统不是 NTFS,而是 NTFS-3G。挂载命令如下:
[root@localhost ~]# mount -t ntfs-3g 分区设备文件名 挂载点
例如:
[root@localhost ~]# mount -t ntfe-3g /dev/sdb1 /mnt/win
这样看来,使用安装 NTFS-3G 插件的方式比安装 NTFS 文件系统更加简便方便。