通过gnome-volume-manager自动挂载u盘与光盘
时间:2007-01-10
来源:互联网
虽然在linux下挂载轻而易举,但是实现自动挂载曾经还是一件比较麻烦的事情。这里介绍利用gnome-volume-manager实现自动挂载的主要流程,不敢妄称完美,但的确可以达到与windows自动挂载相同的效果。
linux发现并自动挂载可移动设备的原理比较繁琐,简单描述如下:
1. 当插入可移动设备时,内核首先发现,并通知hotplug和udev,hotplug负责加载相应的模块(如usb-storage),udev负责创建相应的设备(如/dev/sda1);
2. udev再将消息传给hald守护程序,并告诉它相关挂载的信息,例如权限信息等;
3. hald知道后,通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),将如何挂载的信息通过dbus这个通道发出去;
4. gnome-volume-manager订阅dbus的消息,调用gnome-mount来实现可移动设备的挂载与卸载。KDE在kde-volume-manager未发布之前也采用gnome-volume-manager。
更详细的过程请参考这里和这张流程图。
根据以上流程,不难知道自动挂载的安装和配置过程:
1. 编译内核,让其支持hotplug和可移动设备。
2. 安装udev,hotplug,hal,dbus,gnome-mount,gnome-volume-manager。
3. 启动hotplug,hal 和 dbus 服务,并将这些服务加入到开机自启动列表
4. 添加"gnome-volume-manager --sm-disable"这一行到System->preferences->Sessions->Startup programs,并重新登录gnome,这样可以保证gnome-volume-manager随gnome启动。
5. 删除或者注释掉/etc/fstab中有关可移动设备挂载的部分,因为hald的script会检查/etc/fstab中的内容,如果已经挂载或者存在相关选项,就忽略该设备。
6. 将想要使用自动挂载的用户加入plugdev组,"gpasswd -a someuser plugdev",因为非plugdev组的普通用户不能使用自动挂载功能。
检验方法:
插入usb存储设备或者将光盘放入光驱,如果桌面上出现相应的图标,并*出窗口,则说明自动挂载成功。
缺陷及解决办法:
挂载u盘时,如果u盘是vfat的格式,gnome-volume-manager-2.15.0的mount结果是
我曾经在传说中的fdi文件里设置过iocharset和codepage,lshal命令显示这些设置已被hald读取,但是gnome- volume-manager的mount结果依然如此,这说明它没有读取policy中的指定选项,这样的结果是某些locale(例如我的 zh.CN_GBK)下挂载的目录下中文文件是乱码。其实更科学的应该根据用户自己的locale来自动选择。
解决办法就是在编译内核的时候,指定vfat文件系统的默认编码:iocharset=gb2312,codepage=936
原文见:http://pinker.3322.org/?p=47
linux发现并自动挂载可移动设备的原理比较繁琐,简单描述如下:
1. 当插入可移动设备时,内核首先发现,并通知hotplug和udev,hotplug负责加载相应的模块(如usb-storage),udev负责创建相应的设备(如/dev/sda1);
2. udev再将消息传给hald守护程序,并告诉它相关挂载的信息,例如权限信息等;
3. hald知道后,通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),将如何挂载的信息通过dbus这个通道发出去;
4. gnome-volume-manager订阅dbus的消息,调用gnome-mount来实现可移动设备的挂载与卸载。KDE在kde-volume-manager未发布之前也采用gnome-volume-manager。
更详细的过程请参考这里和这张流程图。
根据以上流程,不难知道自动挂载的安装和配置过程:
1. 编译内核,让其支持hotplug和可移动设备。
2. 安装udev,hotplug,hal,dbus,gnome-mount,gnome-volume-manager。
3. 启动hotplug,hal 和 dbus 服务,并将这些服务加入到开机自启动列表
4. 添加"gnome-volume-manager --sm-disable"这一行到System->preferences->Sessions->Startup programs,并重新登录gnome,这样可以保证gnome-volume-manager随gnome启动。
5. 删除或者注释掉/etc/fstab中有关可移动设备挂载的部分,因为hald的script会检查/etc/fstab中的内容,如果已经挂载或者存在相关选项,就忽略该设备。
6. 将想要使用自动挂载的用户加入plugdev组,"gpasswd -a someuser plugdev",因为非plugdev组的普通用户不能使用自动挂载功能。
检验方法:
插入usb存储设备或者将光盘放入光驱,如果桌面上出现相应的图标,并*出窗口,则说明自动挂载成功。
缺陷及解决办法:
挂载u盘时,如果u盘是vfat的格式,gnome-volume-manager-2.15.0的mount结果是
代码:
/dev/sda1 on /media/disk type vfat (rw,noexec,nosuid,nodev,shortname=winnt,uid=1000)
解决办法就是在编译内核的时候,指定vfat文件系统的默认编码:iocharset=gb2312,codepage=936
代码:
File systems ---> DOS/FAT/NT Filesystems ---> <*> VFAT (Windows-95) fs support (936) Default codepage for FAT (gb2312) Default iocharset for FAT
作者: arping 发布时间: 2007-01-10
现在用submount,比较小巧。
作者: vincent339 发布时间: 2007-01-10
谢谢了,马上试试!
作者: ldh168 发布时间: 2007-01-11
http://zh.gentoo-wiki.com/HOWTO_%E8%...B8%AD%E6%96%87
作者: xep007 发布时间: 2007-01-11
引用:
作者: vincent339
现在用submount,比较小巧。
|
submount太老了,它的最新更新是在2004年的
作者: arping 发布时间: 2007-01-11
多谢楼上各位,搞定了。
我现用的是utf8。原来是cp936,乱码。
引用:
(gb2312) Default iocharset for FAT |
作者: ldh168 发布时间: 2007-01-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28