YaoGUET 2012-09-13
看到本文标题, 您一定不解:难道ubuntu还不能自动加载ntfs分区?其实是可以的,不过如果你加了一块硬盘上去,就有可能要手动添加分区挂载信息了。如何添加,哪里添加呢?这就是本文所要说的。
先看看我碰到问题的由来,也可以供参考。ubuntu对windows分区的支持很不错,之前我刚使用ubuntu7.10时,有一块硬盘还全是ntfs分区,而无须任何配置就已经能够读写ntfs分区了。
后来买了台新机器,amd64×24000+cpu的,发现ubuntu8.04也出来了,于是装上了64位版。装好之后,添加了一块ide硬盘,上面的分区都是ntfs的,结果发现ntfs分区并没有自动加载。奇怪的是,在‘位置’菜单下面还是能看到有ntfs分区的盘符,点击确实也能正常进入;此时通过mount命令也可以加载成功。估计这个菜单中的挂载实际上也是通过的mount命令实现的,但终归系统启动不能自动加载阿,不爽,由于像一些下载工具,如amule,设定的共享目录在ntfs上,这时不先加载该分区则会报错。
于是想着如何让ubuntu启动时自动加载ntfs分区,马上就想到了在启动的bash中写入mount命令,在网上找了一番
发现,可以在/etc/rc.local中写入:
mount-tntfs/dev/sda5/media/d
…
挨个写完每个分区映射的目录
/dev/sda5是硬盘设备名,sudofdisk-l可以看到;
/media/d是映射的目录
这样做之后,开机确实能够看到自动加载了ntfs的分区,可惜中文目录和文件都不见了,搞的我很郁闷,还以为是误删了。
后来看到这篇文章:http://forum.ubuntu.org.cn/viewtopic.php?t=116486
了解到ubuntu早些是通过ntfs-3g来支持ntfs的,后来得到了改进,内核就已经能支持ntfs的读写。并且ubuntu是通过/etc/fstab用来配置启动加载的分区。打开来一看,我这里的情况是,/etc/fstab中根本没有新加的硬盘的ntfs分区信息,难怪不会自动加载了。
于是在网上找了下fstab中分区信息的写法,将新硬盘上两个ntfs分区的照着样子写了上去:
/dev/sda6/media/gamentfsdefaults00
……
设置好每个ntfs的分区后重启,去掉前面在启动bash中添加的mount,发现一切就正常了,实现了自动加载和中文支持。这里感觉fstab写法上其实跟mount也差不多。
理解一下fstab:上面我们说了mount挂载存储设备文件系统的办法;现在我们再来说一说在/etc/fstab中实现开机自动挂载文件系统的办法;首先我们要查看/etc/fstab;主要看他的规划写法;
#Thisfileiseditedbyfstab-sync-see'manfstab-sync'fordetails
LABEL=/1/ext3defaults11
/dev/devpts/dev/ptsdevptsgid=5,mode=62000
/dev/shm/dev/shmtmpfsdefaults00
/dev/proc/procprocdefaults00
/dev/sys/syssysfsdefaults00
LABEL=SWAP-hda7swapswapdefaults00
/dev/hdc/media/cdrecorderautousers,exec,noauto,managed00
第一字段:设备名,在这里表示是文件系统;有时我们把挂载文件系统也说成挂载分区;在这个字段中也可以用分区标签;在例子中/LABEL=/1就是linux系统安装分区的标签,至于是在哪个分区,可以用df-lh来查看;
[root@localhost]#df-lh
Filesystem容量已用可用已用%挂载点
/dev/hda811G8.5G1.9G83%/
/dev/shm236M0236M0%/dev/shm
/dev/hda1016G6.9G8.3G46%/mnt/hda10
我们可以知道LABEL=/1是/dev/hda8的标签;那我们用什么命令来创建硬盘分区的标签呢?
对于ext3和ext2文件系统,我们可以用e2label来设置
e2labeldevice[newlabel]创建设备的标签命令
比如我们想把文件系统为ext3的分区/dev/hda5的标签设备为/5,我们应该执行如下的命令:
[root@localhost]#e2label/dev/hda5/5
[root@localhost]#mkdir/mnt/hda5注:创建挂载/dev/hda5分区的目录;
[root@localhost]#chmod777/mnt/hda5注:打开权限,所有用户可读可写可执行;
然后我们要改/etc/fstab中加一行
/5/mnt/hda5ext3defaults00
警告:请不要在您的Linux的安装分区(也就是Linux系统/所在的分区)实践,会导致您的Linux系统崩溃;如果想实践,请在其它分区测试;
如果是reiserfs文件系统,我们应该用
[root@localhost]#reiserfstune-l标签设备
举例:比如我为reiserfs文件系统/dev/hda10设置标签为/10;
[root@localhost]#reiserfstune-l/10/dev/hda10
我们在/etc/fstab中加入一行;
/10/mnt/hda10reiserfsdefaults00
警告:请不要在您的Linux的安装分区(也就是Linux系统/所在的分区)实践,会导致您的Linux系统崩溃;如果想实践,请在其它分区测试;
第二字段:文件系统的挂载点;
第三字段:文件系统类型;
第四字段:mount命令的选项,和mount中的-o同理;defaults包括这些选项rw,suid,dev,exec,auto,nouser,async;通过实践,这个默认的还能满足我们的需要;
第五字段:表示文件系统是否需要dump备份,是真假关系;1是需要,0是不需要;
第六字段:是否在系统启动时,通过fsck磁盘检测工具来检查文件系统,1是需要,0是不需要,2是跳过
可惜后来发现好景不长,新硬盘上的两个ntfs分区设备名居然会换,一会是sdb一回又是hda,这样就会导致挂载失败。我换一个名,分区也跟着换名,总是对不上,搞的我十分郁闷。接下来两个星期都只好手动去写mount来加载了。
后来,我想到fstab中曾经看到linux几个分区在fstab中是用的uuid标识分区,而不是/dev/sda这样的名称,于是想起也用uuid来试试ntfs的两个分区。还好通过mount挂载的硬盘分区是能够看到uuid的,桌面生成的分区快捷方式点右键,查看volumn选项卡,看到uuid,记录下来,再填写到fstab中替换掉原来的设备名称。重启计算机,进入ubuntu后发现果然没有问题了,经过反复几次重启测试,也没有发现由于分区设备名称换来换去导致的加载失败问题。看来这个问题告一段落了,兴奋阿。
查看分区的uuid,可以通过命令:
sudoblkid
或者ls-l/dev/disk/by-uuid
好奇的我,此时又觉得我一开始并没有安装ntfs-3g的时候,也能够支持ntfs分区,那就不如卸载掉。再说fstab中的分区类别中填写的是ntfs,而没有用到ntfs-3g嘛。结果导致ntfs分区全部都无权限访问,重新安装后ntfs-3g和ntfs-config之后又恢复正常。