`
lippeng
  • 浏览: 450850 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[转] 解决Xfce下不能自动挂载U盘的问题

    博客分类:
  • Life
阅读更多

原文地址:http://blog.simophin.net/?p=564

 

本人用的是Archlinux + Xfce4,长久以来一直不能使用双击U盘图标自动挂载U盘的功能。

首先一个问题是拒绝挂载,显示为:
Rejected send message, 1 matched rules; type=”method_call”, sender=”:1.5″ (uid=1000 pid=3135 comm=”exo-mount) interface=”org.freedesktop.Hal.Device.Volume” member=”Mount” error name=”(unset)” requested_reply=0 destination=”org.freedesktop.Hal” (uid=82 pid=2848 comm=”/usr/sbin/hald)).

 

大概的意思是有一条规则拒绝了这个盘的挂载。我们知道系统中只有root用户才能真正地去挂载一个设备。作为桌面使用的操作系统,一般是不用 root作为常用帐户的,为了让普通用户能挂载一些可移动设备,就要使用DBUS和HAL了。DBUS是一个所谓系统消息总线的 东西,它用于程序之间交换信息。HAL是所谓硬件抽象层,能提供硬件的信息。于是某个程序要挂载设备时,通过DBUS 首先询问是否有权限这么做,权限通过后从HAL获取硬件的信息(这里就可以提供设备是否能挂载等信息),然后再挂载。

以上的提示正是因为DBUS拒绝了此请求。可以通过编辑/etc/dbus-1/system.d/hal.conf来解决。

在空间里,新增加

<policy group="hal">
<allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Device.Storage"/>
<allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Device.Storage.Removable"/>
</policy>

它的意思就是说,组为hal的政策为允许访问Hal中有关Storage或者Storage.Removable的信息
然后将用户加入hal组,重启dbus即可
#usermod -a -G hal username
#/etc/rc.d/dbus restart

再次,就是中文乱码的问题
挂载文件系统时,我们需要指定文件系统的编码。不指定的话中文可能会乱码(这取决于内核挂载默认的编码以及用户空间的Locale)。指定文件系统的编码 可以有两个地方,一个是在HAL中指定,一个是在挂载程序中指定。网上流传的很多老方法都是通过增加HAL中的一个选项,类似于

<merge key="volume.policy.mount_option.iocharset=utf8" type="bool">true</merge>

然而,从HAL本身的功能来说,增加这样的选项并不明智,因为HAL只是“提供设备的信息”,至于“怎么使用”,应该交给调用者自己决定。再 者,Xfce里负责自动挂载的程序exo-mount并不识别这个选项,有人说是个BUG,还搞了个Patch给它,本人不敢苟同。为了解决这个问题,我 们应该试图设置exo-mount,让它挂载时使用系统的编码。于是有添加或者编辑 ~/.config/xfce4/mount.rc

[vfat]
uid=<auto>
iocharset=<auto>
umask=0000
 
[ntfs-3g]
uid=<auto>
nls=<auto>
umask=0000

这里的意思显而易见,对于某种文件系统格式,指定了其挂载的参数值。这里用的umask=0000是不安全的标志,它让所有的用户都能读入写入设 备。然而对于桌面用户而言,这个影响不大,反而方便了使用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics