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