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来实现可移动设备的挂载与卸载。
根据以上流程,可知自动挂载的安装和配置过程:
1. 编译内核,让其支持hotplug和可移动设备。
并且在此选中:
File systems --> DOS/FAT/NT Filesystems -->
<*> VFAT (Windows-95) fs support
(936) Default codepage for FAT
(gb2312) Default iocharset for FAT
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组的普通用户不能使用自动挂载功能。
可以用groups查看自己所在的组。