全部博文(290)
分类: LINUX
2008-10-23 10:50:01
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-3G。NTFS-3G是在ntfsmount基础上改进而成的,是利用FUSE内核模拟实现的。首先下载相关的源码包:fuse-2.5.2.tar.gz和ntfs-3g-20070714-BETA.tgz,下载fuse的网站是
可根据本机的版本选择相应的包,下载NTFS-3G的网站是http://linux-fans.com/wp-content/blogs//1/uploads//ntfs-3g-20070714-BEFA.tgz.tar.gz或者。安装FUSE和NTFS-3G前,先要确定你的LINUX系统是否已经安装有GUU、make的编译环境,如果没有,可以使用以下命令将开发工具安装上:#redhat-config-packages,接下来下载上面的两个软件包并对其进行解压,使用命令#tar xvzf file.tar.gz 对以.tgz/.tar.gz为扩展名的文件进行解压,其中x是解压,v是复杂输出,f是指定文件,z是gz格式。然后是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.2和ntfs-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,其中had、sda是根据自己移动硬盘的性质和机器分区而定的,可以使用# 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指定文件系统的代码页,简体中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
当设备不用时可以使用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,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等;第四项就是mount时所要设定的状态,如ro(只读)或defaults(包括了其它参数如rw、suid、exec、auto、nouser、async);第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0;第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它都可认为需要设定,内定值是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就可以了。