[yuan@jackycom ~/Desktop]$ cat /usr/share/hal/fdi/95userpolicy/storage-policy.fdi <?XML version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> <deviceinfo version="0.2"> <device> <match key="@block.storage_device:storage.removable" bool="true"> <merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge> <merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge> <merge key="volume.policy.mount_option.users" type="bool">true</merge> <merge key="volume.policy.mount_option.utf8" type="bool">true</merge> </match> <match key="@block.storage_device:storage.hotpluggable" bool="true"> <merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge> <merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge> <merge key="volume.policy.mount_option.users" type="bool">true</merge> <merge key="volume.policy.mount_option.utf8" type="bool">true</merge> </match> </device> </deviceinfo>原理正如上面所说,hal 在收到优盘插入的通知时,将读取这些 storage policy 配置文件。在改写 /etc/fstab 时,将用到配置文件中的数据,将这些 mount_option 全部加入 fstab 中去。如何测试效果测试效果的办法简单得很,但是不要急着插入优盘,而是应当先运行 代码:
service haldaemon restart然后插入优盘。几秒钟之后,桌面上会出现优盘图标。看看你的 fstab,如果多了这样一行 代码:
/dev/sda1 /media/YUAN vfat pamconsole,utf8,users,dmask=0,fmask=111,noatime,sync,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0那么说明没什么问题。也许你的系统中 selinux 已经被关闭了,所以参数没有这么长。访问优盘,应该不会再出错了。可能的问题如果你的语言环境是 gb2312,那么要把上面的配置文件稍微修改一下,把两次出现的 utf8 修改为 iocharset=cp936小心配置文件中的拼写错误如果仍然会挂起或死机,那么可能 haldaemon 没有重启动,甚至可能被关闭了。运行
上一页 [1] [2] [3] [4] 下一页
代码:
chkconfig haldaemon on chkconfig messagebus on service messagebus restart service haldaemon restart命令的可重复性不要手动修改 /etc/fstab,所有修改都会被丢弃掉,应该只修改 hal 的配置文件因为我们只新建了一个配置文件,然后重启了一个服务,因此可重复性应该很好。配置文件中的选项如果发生冲突,据说将使用读取时靠后的一个,也就是说 95userpolicy 将比 90defaultpolicy 后读取?与其他方案的兼容性autofs 修改的是 /etc/auto.misc 和 /etc/auto.master,不会有冲突手动挂载,或手动修改 /etc/fstab, 在重启后都将失效,因为 haldaemon 将接管 fstab 文件,除非在 fstab 中加入选项 unmanaged (?)如何回退到最初的状态因为只添加了一个配置文件,因此只要将它删除就可以了。另外最好执行一次 代码:
service haldaemon restart正文结束后记这篇文档中的配置文件已经没有意义了,因为它的主要目的是添加 utf8 选项,而新版本的 hal 中已经包含了这个配置。并且,新版本的配置文件中使用 volume.fstype 作为匹配时的关键字,具有更好的通用性,当优盘是其他格式时仍然可用。代码如下,节选自新的 90defaultpolicy/storage-policy.fdi 代码:
<!-- Use UTF-8 charset for vfat --> <match key="volume.fstype" string="vfat"> <merge key="volume.policy.mount_option.iocharset=utf8" ype="bool">true</merge> </match>所以仿照这个文件,将自定义的策略文件 /usr/share/hal/fdi/95userpolicy/storage-policy.fdi 修改如下 代码:
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="block.is_volume" bool="true">
<match key="volume.fsusage" string="filesystem">
<match key="volume.fstype" string="vfat">
<merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge>
上一页 [1] [2] [3] [4] 下一页
<merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge>
<merge key="volume.policy.mount_option.users" type="bool">true</merge>
<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
</match>
</match>
</match>
</device>
</deviceinfo>update:在新的 hal-0.50 中,配置文件的位置发生了变化,因此如果以前做过上面所说的设置,那么必须在安装之后,将 /usr/share/hal/fdi/95userpolicy 移动到 policy 子目录中,也就是说,移动后成为 /usr/share/hal/fdi/policy/95userpolicy 目录如果以前没有做过任何设置,那么只要新建 /usr/share/hal/fdi/policy/95userpolicy 目录,并按照上面的内容复制配置文件就可以了
(出处:http://www.sheup.com)
(出处:http://www.sheup.com/)