Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1812733
  • 博文数量: 290
  • 博客积分: 10653
  • 博客等级: 上将
  • 技术积分: 3178
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 23:08
文章存档

2013年(6)

2012年(15)

2011年(25)

2010年(86)

2009年(52)

2008年(66)

2007年(40)

分类: LINUX

2008-10-23 10:50:01

 Windows中分区格式一般为FAT16FAT32NTFS。移动硬盘作为共享式硬盘,所以格式一般也为上面的三种,这样才可以保证在WindowsLinux系统下共享一块移动硬盘。LinuxRedHat8.0支持fat16fat32格式分区的访问,但并不支持NTFS格式分区的访问,所以需要对内核进行重新编译才可以支持对NTFS格式的访问。下面介绍NTFSNTFS-3G的安装和编译的方法,实现在Linux下对NTFS磁盘格式的访问。

2.1   NTFS安装编译

    首先使用下面的命令查询目前所使用的Linux的内核版本。

     # uname-r

     本机得到的信息是“2.4.18-14”,下面的步骤都是选择本机版本相对应的RPM组件和文件夹,从网站下载系统所需的kernel-ntfs-2.4.18-14.i686.rpm组件。下载完成使用下面的命令安装该组件:

     # rpm ivh kernel-ntfs-2.4.18-14.i686.rpm

    root身份登陆Linux,将Linux的第二张安装盘放入光驱,找到/redhat/RPMS目录下的kernel-source-2.4.18-14.i386.rpm文件,输入下面的命令:

     # rpm ivh kernel-2.4.18-14.i386.rpm

    安装好NTFS软件包后,开始编译:进入/usr/src/linux-2.4.18-14/config目录,将kernel-2.4.18-14.i686.config文件复制到/ usr/src/linux-2.4.18-14目录下,接着#vikernel-2.4.18-14.i686.config打开该文件,把#CONFIG-NTFS-FS is not set 这一行改为CONFIG-NTFS-FS=m。然后到/ usr/src/linux-2.4.18-14目录下,对NTFS模块进行编译,输入以下命令:

     #make  modules

     编译完成后,到/ usr/src/linux-2.4.18-14/fs/ntf

目录下找到一个ntfs.o文件,将其文件复制到/lib/modules/2.4.18-14/kernel/fs目录下。最后回到/ usr/src/linux-2.4.18-14目录,输入以下命令:

     #depmod

     #modprobe ntfs

    当安装和编译完成后,便可以自行建立一个目录当作挂载点。然后使用mount命令对NTFS移动硬盘进行挂载,读取和运行硬盘里的文件和程序。

2.2   NTFS-3G安装编译

    以上编译内核可以使Linux RedHat 8.0挂载NTFS格式的移动硬盘,但只能实现对NTFS格式的读取,如果在Linux下要实现对NTFS格式的读写,则需要安装NTFS-3GNTFS-3G是在ntfsmount基础上改进而成的,是利用FUSE内核模拟实现的。首先下载相关的源码包:fuse-2.5.2.tar.gzntfs-3g-20070714-BETA.tgz,下载fuse的网站是

    

     可根据本机的版本选择相应的包,下载NTFS-3G的网站是http://linux-fans.com/wp-content/blogs//1/uploads//ntfs-3g-20070714-BEFA.tgz.tar.gz或者。安装FUSENTFS-3G前,先要确定你的LINUX系统是否已经安装有GUUmake的编译环境,如果没有,可以使用以下命令将开发工具安装上:#redhat-config-packages,接下来下载上面的两个软件包并对其进行解压,使用命令#tar xvzf file.tar.gz 对以.tgz/.tar.gz为扩展名的文件进行解压,其中x是解压,v是复杂输出,f是指定文件,zgz格式。然后是FUSE的安装,进入fuse-2.5.2/目录,在终端输入:

     ./configure

     make

     make install

    成功安装了fuse-2.5.2后是对ntfs-3g软件包的安装,进入ntfs-3g-20070714-BETA/目录下,在终端中输入:

     ./configure

     make

     make install

    安装好fuse-2.5.2ntfs-3g两个软件包后,在终端控制台下输入以下命令对FUSE进行加载:

     #modprobe fuse

加载成功后就可以使用mount命令对移动硬盘进行挂载,并能对移动硬盘进行读写。


3   mount 挂载命令

    首先简单介绍mount命令的使用方法,命令格式为:

     mount[-t vfstype][-o options]device dir

    其中,-t vfstype 是指定文件系统的类型,一般不用指定,mount会自动选择正确的类型,常用类型有:

     光盘或者光盘镜像:iso9660 iso

     DOS fat16文件系统:msdos

     Windows 9x fat32文件系统:vfat

     Windows NT ntfs文件系统:ntfs

     mount Windows 文件网络共享:smbfs

     UNIX (LINUX) 文件网络共享:nfs

    -o options 主要用来描述设备或档案的挂载方式,常用参数为:

    loop: 用来把一个文件当成硬盘分区挂接上系统

     ro: 采用只读方式挂接设备

     rw: 采用读写方式挂接设备

     iocharset: 指定访问文件系统所用字符集

     codepage=XXX 代码页

     iocharset=XXX 字符集

     nouser  使一般用户无法挂载

     user  可以让一般用户挂载设备

    device 指要挂接(mount)的设备,dir 指设备在系统上的挂接点(mount point),首先建立一个挂载点,如#mkdir/mnt/usb,然后使用mount命令进行挂载,对于fat 格式,命令格式如#mount -t msdos/dev/hda1/mnt/usb,对于fat32格式,命令格式如#mount-t vfat/dev/hdal/mnt/usb,对于NTFS格式,命令格式如# mount -t ntfs/dev/sda1/mnt/usb# mount -t ntfs-3g/dev/sdal/mnt/usb,其中hadsda是根据自己移动硬盘的性质和机器分区而定的,可以使用# fdisk -1来查看机器的分区情况。

    由于挂载的权限只有root 用户才能执行,默认的挂载后的分区拥有者和拥有群组都是root ,所以如果让一般用户使用挂载后的文件,则需要重新设置。首先,root 在运行mount 命令前,须先考滤有几位用户将使用NTFS 分区内的文件,例如hbmc用户需要使用,就可以输入下面的命令:

     #mount -t ntfs -o uid=hbmc/dev/sda1/mnt/usb

    挂载完成后,可以看到usb 的拥有者已经变为hbmc。此时,hbmc这位用户便可以使用usb目录下的任何文件了,从而实现了利用NTFS磁盘空间的目的。另外如果目录里有中文文件名,使用上面的命令挂载后,显示是一堆乱码。这就要用到-o参数里的codepage iocharset选项。codepage指定文件系统的代码页,简体中文代码是936iocharset指定字符集,简体中文一般用cp936gb2312

    当设备不用时可以使用umount命令卸除文件系统,使用方法是:

     #umount/dev/sda1/mnt/usb

 

4    Linux下自动挂载方法

    在使用移动硬盘时,有时想让它开机时自动挂载,可以采取以下方法。在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。例如:

     ……

     /dev/hda2/ext3 defaults 1 1

     /dev/hda5/mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0

      /dev/sda1/mnt/usb ntfs defaults,codepage=936,iocharset=cp936 0  0

     ……

    /etc/fstab文件里,其中每一行为一个分区记录,每一行又可分为六个部份,下面以“/dev/hda2/ext3 defaults 1 1”为例逐个说明:第一项是您想要的mount储存装置的实体位置,如hdb/dev/hda2;第二项就是您想要将其加入至哪个目录位置,如/home/,这其实就是在安装时提示的挂入点;第三项就是所谓的local filesystem,其包含了以下格式:如extext2msdosiso9660nfsswap等;第四项就是mount时所要设定的状态,如ro(只读)或defaults(包括了其它参数如rwsuidexecautonouserasync);第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0;第六项是设定此filesystem是否要在开机时做check的动作,除了rootfilesystem其必要的check1之外,其它都可认为需要设定,内定值是0。上例中最后一行为自动挂载移动硬盘而加上去的。

    此外,也可以采取下面的方法实现自动加载,新建mymount文件,然后输入以下代码:

     #!/bin/bash

     case$1 in

     m)

   mount -t ntfs -o iocharset=cp936/dev/sda1/mnt/usb

     ;;

     u)

      umount-t ntfs-o iocharset=cp936/dev/sdal/mnt

/usb

     ;;

     ease           

   上面第一行#!/bin/bash指定以bash shell执行此文件。case$1 in为取的命令行参数,若为m则开始挂载,若为u则卸载。接下来输入下面命令使它有执行权限:#chmod u+x mymount,这时只要输入./ mymount m就可以挂载了,如果要做到开机时自动挂载则在/etc/rc.d/rc.local文件中输入sh./root/mymount m就可以了。

阅读(4207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~