由于 fc3 内核默认 fat32 文档系统字符编码是 ascii,假如优盘的文档名包含中文,那么在转换时会出问题,应用程式就会失去响应。具体的表现有多种,比如桌面假死,关机时提示无法卸载分区等等
解决的办法是在挂载时,根据语言环境 locale 的值,使用挂载参数。假如是 UTF-8 那么就用 mount -o utf8,假如是 GB*
那么就用 mount -o iocharset=cp936。但是这样繁琐地手动挂载就失掉了 FC3
的好处。正确的解决办法,是添加自己的配置文档,我的是这样
代码:
[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 没有重启动,甚至可能被关闭了。运行
代码:
chkconfig haldaemon on chkconfig messagebus on service messagebus restart service haldaemon restart
|
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!