Ⅰ linux无法读取NTFS文件格式
linux下面可以直接mount ntfs分区。
本文包括两个部分:
以只读方式mount NTFS文件系统;
以读写方式mount NTFS文件系统;
2. 只读Mount NTFS文件系统
2.1. NTFS内核支持
现在的Linux大多数发行版都支持NTFS文件系统。支持NTFS文件系统是Linux内核模块的特征,而不是Linux发行版的特征。首先确定下在你的系统中是否已经安装了NTFS模块。
# ls /lib/moles/2.6.18-128.el5PAE/kernel/fs/ | grep ntfs
如果NTFS模块存在,让我们来识别NTFS分区。
如果没有NTFS模块,那么需要先安装它。
查看内核版本:
[root@localhost mnt]# uname -r
2.6.18-128.el5PAE
从网上搜索kernel-mole-ntfs 2.6.18-128.el5PAE。下载RPM包进行安装。
# rpm -ivh kernel-mole-ntfs-2.6.18-128.el5-2.1.27-0.rr.10.11.i686.rpm
如果没有出错,系统现在可以支持NTFS了。
注:PAE下在网上没有找到ntfs模块。
2.2. 查看NTFS的分区
一个简单的方式来识别NTFS分区如下:
# fdisk -l | grep NTFS
/dev/sdb1 2 62016256 1953512032+ 7 HPFS/NTFS
NTFS分区的硬盘为:/dev/sdb1
2.3. Mount NTFS分区
首先创建mount点:
# mkdir /mnt/ntfs
然后简单的使用mount命令来挂载它:
# mount -t ntfs /dev/sdb1 /mnt/ntfs
现在我们可以访问NTFS分区和其中的文件,但是只有读权限。
3. 以读写方式mount NTFS文件系统
Mount NTFS文件系统让他具有读写访问的权限有点复杂。这涉及到其它软件的安装,例如fuse和ntfs-3g。在这两种情况下你可能需要使用软件包管理器,例如:yum、apt-get,synaptic等,并且安装它到你的标准发行版硬盘上。检查软件包ntfs-3g和fuse。
3.1. 安装其它软件
3.1.1. Fuse安装
从http://fuse.sourceforge.net上下载源代码
# wget http://easynews.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.1.tar.gz
解压缩源代码:
# tar zxf fuse-2.7.1.tar.gz
编译和安装fuse源代码
# cd fuse-2.7.1
# ./configure --exec-prefix=/; make; make install
3.1.2. Ntfs-3g安装
从网站http://www.tuxera.com/community/ntfs-3g-download/上下载源代码包:
http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2011.4.12.tgz
解压缩安装:
# tar zxf ntfs-3g_ntfsprogs-2011.4.12.tgz
编译和安装ntfs-3g源代码。
# cd ntfs-3g_ntfsprogs-2011.4.12
# ./configure
# make
# make install
3.2. Mount NTFS分区
如果在安装过程中没有出现错误,NTFS卷可以mount到Linux上,并且具有读写权限。
# fdisk -l | grep NTFS
# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs
FATAL: Mole fuse not found. (这是由于没有安装fuse模块导致的)
下载网址:http://ftp.riken.go.jp/Linux/cern/slc52test/extras/x86_64/failed/
在google上查找kernel-mole-fuse-2.6.18-128.el5PAE的rpm安装程序,下载安装然后重新mount。
Ⅱ Linux怎样访问Windows共享文件和文件夹
在开发Linux程序中,经常会使用Windows的编辑器进行编辑,这样还要拷贝到Linux服务器,如果有这种开发习惯的同学,可以使用这种方式进行开发。
当然除了这种方法之外,可以再Windows安装nfs服务器,但是我的是64位的win7系统,好多nfs服务器不支持,所以就只能使用这种共享文件夹的方式了。
Windows侧:
1:在Windows下建立共享文件夹。
2:确保Windows用户设置了密码。
Linux侧:
1:安装cifs-utils包,安装后,系统出现mount.cifs命令。或者有的发行包里的mount支持 -t cifs参数。
2:mount.cifs -o username="共享用户",password="密码" //ip/sharing_folder /mountpoint
问题1:在共享虚拟机的文件,编译时会出现如下错误:
arm-none-linux-gnueabi-gcc -lpthread -o beep beep.c beeplib.c
cc1: error: beep.c: Value too large for defined data type
cc1: error: beeplib.c: Value too large for defined data type
make: *** [beep] Error 1
修正方法:sudo mount -t cifs -o username=wx,passwd=wx,nounix,noserverino //192.168.1.108/vm_share /mnt/share
添加了,nounix,noserverino
问题2:Unable to umount, device is busy
If you get this error message and the 'umount' as well as 'umount -f' commands don't work, try a "lazy" umount:
umount -l /mnt/badmount
Then mount the share again, as shown below:
mount -t cifs //hostname/goodmount /mnt/goodmount -o username=,password=
Note - using the "cifs" keyword instead of the smbfs keyword after -t will result in fewer problems like this.
问题3: mount error 12 = Cannot allocate memory
当通过mount.cifs命令对windows下的文件进行映射时,若文件太大,便会产生这种错误,解决方法是:
修改注册表 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\IRPStackSize项的值大于等于15,若IRPStackSize项不存在,就新建一个DWORD值,点击弹出窗口的的进制为十进制,值写个18就ok了,还要重启一