CentOS Linux利用ntfs-3g挂载读写Windows的ntfs分区

相信在自己的电脑上Windows与Linux同时并存的童鞋不在少数,因为就算你是个超级Linux控,有时候也还离不开Win,比如当你想在淘宝拍东西用网银时,国内绝大部分网银都还不支持 Linux。虽然大部分新版(如2009、2010年发行的)Linux发行版,像Ubuntu 9、10和Fedora 12、13等都已经默认支持NTFS分区自动挂载,但是如果你是像偶这样喜欢用CentOS这样的服务器版本来做桌面的,就需要看看偶这篇总结了,好,废话不说了~~

Linux下想访问NTFS分区,现在普遍的方法是利用ntfs-3g或者内核模块来实现。

一、安装ntfs-3g模块

1. 使用yum的安装方法:

请确定你已经安装了rpmforge软件库的源。请参考:RHEL/CentOS 5.5使用第三方软件库

然后安装下列组件。

    yum install fuse ntfs-3g -y

注:如果你在使用 CentOS 5.3 或更旧版本,那么你需要安装来自 ELRepo 的 kmod-fuse。

2. 使用ntfs-3g官方源码编译安装的方法:

ntfs-3g下载页面:http://www.tuxera.com/community/ntfs-3g-download/

安装步骤:

    wget http://tuxera.com/opensource/ntfs-3g-2010.8.8.tgz

    tar zxvf ntfs-3g-2010.8.8.tgz

    cd ntfs-3g-2010.8.8

    ./configure

    make

    make install

以上两种方法二选一,yum只适用于Redhat系,编译安装适用于所有Linux发行版

二、挂载NTFS文件系统

假设你的NTFS文件系统是 /dev/sda1 而你将会把它挂载在 /mnt/windows/c,请执行以下步骤。

1. 创建挂载点。(一般建议挂在mnt目录里)

    mkdir /mnt/windows/c

2. 挂载NTFS分区:

    mount -t ntfs-3g /dev/sda1 /mnt/windows/c

注:这里的sda1是指SATA或SCSI硬盘的第一个分区,如果是老式的IDE硬盘,会是hda1,具体请用fdisk -l查看。如偶的一台机:

    [root@CentOS ~]# fdisk -l

    Disk /dev/sda: 164.6 GB, 164696555520 bytes
    255 heads, 63 sectors/track, 20023 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 2550 20482843+ 7 HPFS/NTFS
    /dev/sda2 2551 20022 140343840 f W95 Ext’d (LBA)
    /dev/sda5 5101 8924 30716248+ 7 HPFS/NTFS
    /dev/sda6 8925 12748 30716248+ 7 HPFS/NTFS
    /dev/sda7 12749 16572 30716248+ 7 HPFS/NTFS
    /dev/sda8 16573 20022 27712093+ 7 HPFS/NTFS
    /dev/sda9 2551 2584 273042 83 Linux
    /dev/sda10 2585 4928 18828148+ 83 Linux
    /dev/sda11 4929 5016 706828+ 82 Linux swap / Solaris

    Partition table entries are not in disk order

3. 如果想开机系统启动时自动挂载NTFS分区,编辑vim /etc/fstab文件,加入类似如下内容:

    只读式挂载:/dev/sda1 /mnt/windows/c ntfs-3g ro,umask=0222,defaults 0 0

    读写式挂载:/dev/sda1 /mnt/windows/c ntfs-3g rw,umask=0000,defaults 0 0
    或者: /dev/sda1 /mnt/windows/c ntfs-3g defaults 0 0

如偶的/etc/fstab文件如下:

    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2
    tmpfs /dev/shm tmpfs defaults 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0
    LABEL=SWAP-sda11 swap swap defaults 0 0

    /dev/sda1 /mnt/windows/c ntfs-3g ro,umask=0222,defaults 0 0
    /dev/sda5 /mnt/windows/e ntfs-3g defaults 0 0
    /dev/sda6 /mnt/windows/f ntfs-3g defaults 0 0
    /dev/sda7 /mnt/windows/g ntfs-3g defaults 0 0
    /dev/sda8 /mnt/windows/h ntfs-3g defaults 0 0

其他注意问题:

从 CentOS 5.4 起(2.6.18-164 或更新的内核),fuse 模块已经包含在内核里。因此,已不再需要 dkms 及 dkms-fuse。如果你先前安装了 dkms-fuse,请用 yum remove dkms-fuse 命令把它卸装。请注意 CentOS 4.x 的用户需要这两个组件。

使用 centosplus 内核的用户

由CentOS-5.3开始,centoplus内核没有启用NTFS模块。这是由于5.3内的 NTFS 是不能运行的。详情请参阅 https://bugzilla.redhat.com/show_bug.cgi?id=481495 。如果你想使用来自CentOS内核的NTFS模块,你可以安装来自ELRepo的kmod-ntfs。但这个模块没有ntfs-3g好,只提供极度有限的写入功能。

参考文档:http://wiki.centos.org/TipsAndTricks/NTFS