LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2888|回复: 10

fedora 8/9/10的gnome下解决自动挂载windows分区的最佳办法

[复制链接]
发表于 2008-12-3 15:53:44 | 显示全部楼层 |阅读模式
gnome 下解决自动挂载 windows 分区的最佳办法(适用于 fedora 8、9、10)

从 fedora 8 开始,hal 更加智能化和简化,很多细节都被 hal 以及 gnome-mount、gnome-volume-manager 等隐藏起来,显得更为方便,不需要用户多做设置了。但有一点,gnome 会自动挂载 windows 分区,并且自动挂载的根目录被默认设置为 /media,如果我不想自动挂载 windows 分区,或者改变挂载目录,那么如何实现呢?

其实,这个功能的策略是在 /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi 文件中。看下面几行代码:

<!-- Here follow volumes we specifically want to ignore - it is the -->
<!-- responsibility of software higher in the stack (e.g. gnome-vfs) -->
<!-- amd mount programs (e.g. Mount() on HAL) to respect volume.ignore -->
<merge key="volume.ignore" type="bool">false</merge>

上面的代码作用是,默认情况下不启用非 linux 卷忽略功能。也就是说,默认情况下,所有的卷都会自动被挂载。一般我们不要改动这个,因为如果设置为 true,也就是系统会忽略非 linux 卷,那么 u 盘、移动硬盘插入后也不会被自动挂载,因为 u 盘、移动硬盘一般也都是 fat、fat32、ntfs 这样的非 linux 卷。

再看后面,则定义了一些不自动挂载的分区类型及具体厂商的预定义卷。也就是说,后面定义的这些是特例,是不会被挂载的,除此之外的卷,还是会被自动挂载,这样做的好处,是能够让移动硬盘、u 盘上的 fat32、ntfs 卷也能自动挂载。如果你不想要你系统上的 windows 分区自动挂载,在上述代码后添加如下代码即可:

<!-- Do not mount some Windows partition -->
<match key="volume.fstype" string="ntfs">
<match key="volume.label" string="Win2003">
<merge key="volume.ignore" type="bool">true</merge>
</match>
</match>

上面代码中是我这里的具体情况,如果你是 fat 分区,把 volume.fstype 部分的 string 值改为 vfat,volume.label 部分的 string 值改为 windows 下你所对应的磁盘分区的卷标名字,最好大小写一致。

如果你不想让自动挂载的分区在桌面上显示,可以在“配置编辑器”中把 /app/nautilus/desktop 下的 volumes_visible 选项不选中即可。

如果禁止了本地硬盘上的 windows 分区在 gnome 中的自动挂载,那么你可以在 fstab 或者 rc.local 中手动设置自动挂载 windows 分区到指定的目录,如 /mnt 下面你自己创建的目录,这样比较个性化,也很方便。

说老实话,gnome 的卷管理是越来越智能和方便了,目前 kde 也是在使用 gnome 卷管理,kde 自己的卷管理正在参照 gnome 来开发,很多新技术也都是在 gnome 中首先实现。
发表于 2008-12-3 16:23:45 | 显示全部楼层
虽然我是根据<F10如何取消windows分区自动挂载?>(http://www.linuxsir.cn/bbs/thread339529.html)里其它各位兄弟的方法,采用在fstab指定挂载和不挂载的方法来取消F10的自动挂载的,但楼主的方法,让我可以更深入理解F10的工作原理,甚至可能从对/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi的研读中研究出其它功能。(提示一下,对该文件的修改要慎重,否则可能带来其它问题;至少修改前做好备份!)

附:我的fstab的内容,是Fedora 10自动挂载分区后,从/etc/mtab复制过来的,再加以修改的:
  1. /dev/sda5 /mnt/Documents ntfs-3g rw,nosuid,nodev,allow_other,blksize=512 0 0
  2. /dev/sda6 /mnt/datas     ntfs-3g rw,nosuid,nodev,allow_other,blksize=512 0 0
  3. /dev/sda7 /mnt/vmware    ntfs-3g rw,nosuid,nodev,allow_other,blksize=512 0 0
  4. /dev/sda8 /mnt/install   ntfs-3g rw,nosuid,nodev,allow_other,blksize=512 0 0
  5. /dev/sda1 /mnt/winxp     ntfs-3g noauto,noatime,rw,nosuid,nodev,allow_other,blksize=512 0 0
  6. /dev/sda9 /mnt/ISO       vfat    noauto,noatime,rw,nosuid,nodev,allow_other 0 0
复制代码
挂载位置改了一下,mtab里的 fuseblk 改成了 ntfs-3g,而我的fat32分区的簇大小用PQMagic改动过了,记不得簇大小了,就把blksize=512这一项删除了。(在我的观念中,减小簇大小可以提高磁盘利用率,但有可能带来效率下降一小点的副作用。出于提高磁盘利用率的考虑,我的NTFS和FAT32分区,都用PQMagic调整到现有分区大小不变的前提下允许的最小簇大小。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-3 16:29:35 | 显示全部楼层
方法有很多,有的是是治标,有的是治本,我一般不改 fstab,我在 rc.local 里面用 mount 或者 ntfs-3g 来挂载,呵呵,都行。
回复 支持 反对

使用道具 举报

发表于 2008-12-3 16:34:14 | 显示全部楼层
Post by dolphin2000;1918442
方法有很多,有的是是治标,有的是治本,我一般不改 fstab,我在 rc.local 里面用 mount 或者 ntfs-3g 来挂载,呵呵,都行。
嘿嘿,我还真是死脑筋,没想到在rc.local里挂载分区,搞得我在CentOS 5 时,为自动挂载Windows分区苦恼不已(因为被SELinux拦住了),可以试试你在rc.local里挂载分区的方法看看能否解决我的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-3 16:42:35 | 显示全部楼层
是啊,rc.local 是系统启动时最后执行的脚本,很多事情我都在 rc.local 里面解决了,还是挺有效的,也许方法土了一点。
回复 支持 反对

使用道具 举报

发表于 2008-12-3 17:03:34 | 显示全部楼层
Post by dolphin2000;1918461
是啊,rc.local 是系统启动时最后执行的脚本,很多事情我都在 rc.local 里面解决了,还是挺有效的,也许方法土了一点。

那可能无效了,如果强制使用SELinux的情况下?SELinux的启动顺序比较靠前的。
E文太差,看不懂资料,不会改SELinux的策略。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-3 17:10:33 | 显示全部楼层
selinux 我没时间去研究,一般我都是把它禁止的,省事。
回复 支持 反对

使用道具 举报

发表于 2008-12-4 22:09:59 | 显示全部楼层
我只要在/etc/fstab 手工挂载所有的Windows分区后,它就不再自动挂载了。我并没有去修改/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi中的代码。
回复 支持 反对

使用道具 举报

发表于 2009-4-11 23:45:21 | 显示全部楼层
为什么我使用
 mkdir /mnt/c  
  mount -t vfat /dev/hda1 /mnt/c 挂载C盘没有成功呢 ?
回复 支持 反对

使用道具 举报

发表于 2009-4-30 19:48:12 | 显示全部楼层
正在找这样的文章 ,学习了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表