+ -
当前位置:首页 → 问答吧 → 添加Udev规则,让Linux自动挂载U盘。。(支持热插拔)

添加Udev规则,让Linux自动挂载U盘。。(支持热插拔)

时间:2008-02-17

来源:互联网

参考文章:http://wiki.archlinux.org/index.php/Udev
http://mlsx.xplore.cn/read.php?666
http://blog.chinaunix.net/u/22153/showart_399658.html
添加一下内容到/etc/udev/rules.d/10-my-udev.rules里
代码:
KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usbhd-%k", GROUP="users", OPTIONS="last_rule" 
ACTION=="add", KERNEL=="sd[b-z][0-9]", SYMLINK+="usbhd-%k", GROUP="users", NAME="%k" 
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p /media/usbhd-%k" 
ACTION=="add", KERNEL=="sd[b-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,utf8=true,codepage=936,noauto,flush,quiet,nodev,nosuid,noexec,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule" 
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mount -t auto -o rw,locale=zh_CN.UTF-8,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /media/usbhd-%k", OPTIONS="last_rule" 
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l /media/usbhd-%k" 
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rm -rf /media/usbhd-%k", OPTIONS="last_rule"
然后sudo udevcontrol reload_rules就可以了。。

作者: lufeng369   发布时间: 2008-02-17

经测试支持自动挂载VFAT格式的U盘,并能正确显示包含中文的文件名,其它文件格式未测试。。默认挂载到/media/usbhd-sdb1文件夹上。。

作者: lufeng369   发布时间: 2008-02-17

只要你安装了hal,并在rc.conf中开启,那么就可以自动挂载这些东西的,除非你不用主流桌面环境。

作者: zhuqin_83   发布时间: 2008-02-17

别用 hal 作这个事情,装 ivman 吧,如果一定要这么做的话。

我以前就这么做过的。

作者: 晨想   发布时间: 2008-02-17

引用:
作者: 晨想
别用 hal 作这个事情,装 ivman 吧,如果一定要这么做的话。

我以前就这么做过的。
好东西阿,装了这个的话hal还要启动么?

作者: tpxc   发布时间: 2008-02-17

试了一下ivman果然会自动挂

作者: tpxc   发布时间: 2008-02-17

引用:
作者: lufeng369
经测试支持自动挂载VFAT格式的U盘,并能正确显示包含中文的文件名,其它文件格式未测试。。默认挂载到/media/usbhd-sdb1文件夹上。。
根据内容可以看出只支持fat格式,没有定义判断fat or ntfs的语句,就更没有挂载ntfs的语句了~

感觉这种办法有点多余吧,为何不用hal?

作者: blance   发布时间: 2008-02-17

哈。这个方法最好。多谢楼主分享。

作者: xblx   发布时间: 2008-02-17

hal不好么,默认就可以

作者: struq   发布时间: 2008-02-17

这样似乎挂不了extX,ntfs,reiserfs等格式的分区,如需要,可以试试pmount。另外,用sync时复制大文件会很慢,而且有些设备可能会不支持(比如我的索爱手机)。我是在移除设备前执行“xterm -e sync”(可给WM设置一个快捷键),等xterm的窗口消失后再拔下设备。

作者: sssslang   发布时间: 2008-02-17

引用:
作者: struq
hal不好么,默认就可以
用过hal。后来转用rox文件管理器发觉用不了,就一直在fstab文件设个usb挂载点,这样在Rox实现 usb 挂载。但不能同时挂载两个U盘。
反正我使用的U盘都是vfat格式的,所以楼主的方法最方便。而且不用开hal服务。

作者: xblx   发布时间: 2008-02-17

我也不喜欢多开服务,既然udev能完成的工作,我也不需要挂载的磁盘自动出现在桌面上,hal就不必了,有洁癖,呵呵

作者: jarryson   发布时间: 2008-02-17

昨天晚上刚刚想到这点,今天就有人发了,真好。^ ^

作者: jarryson   发布时间: 2008-02-17

使用hal然后加载U盘,FAT格式,中文显示有问题,还没有解决

作者: archlinux007   发布时间: 2008-03-18

还是用Udev好。。。。

作者: james6688   发布时间: 2008-03-21

好复杂……
单论挂U盘而言。

用桌面环境的,也不在乎多开几个服务。
用wm、有洁癖的,还不如直接用命令行呢。。。

作者: ssflying   发布时间: 2008-03-21

> ~/pacman -Si ivman
软件仓库 : extra
名称   : ivman
版本   : 0.6.14-1
URL  : 无
软件许可 : 无
软件组  : 无
提供   : 无
倚赖于  : hal>=0.5.8.1-2 libxml2 pmount>=0.9.13-2
可选倚赖 : 无
冲突与  : 无
取代   : 无
需下载大小: 46.36 K
安装后大小: 46.36 K
打包者  : 无
架构   : 无
编译日期 : 无
MD5值 : c54277d34752539952ef53d4bae7e805
描述   : Console based device manager

总觉得ivman要依赖hal

我从前用autofs:
代码:
> ~ pacman -Si autofs
软件仓库 : extra
名称   : autofs
版本   : 4.1.4-4
URL  : 无
软件许可 : 无
软件组  : 无
提供   : 无
倚赖于  : libldap 
可选倚赖 : 无
冲突与  : 无
取代   : 无
需下载大小: 89.46 K
安装后大小: 89.46 K
打包者  : 无
架构   : 无
编译日期 : 无
MD5值 : d11790038a586850ff332d87aa826b60
描述   : A kernel-based automounter for Linux.
autofs有个重要特性就是你退出挂载的U盘的时候,比如挂载到 /usb目录
你退出这个目录,比如在这个目录运行 cd .. 就自动的被umount了 。。可以随时插拔,而不用去告诉系统我要卸载

作者: easycat   发布时间: 2008-03-21

不错,回去试试
收到blog先

作者: axlrose   发布时间: 2008-03-21

不错,有空试试,不过sd(b-z)这个循环有点大,可以根据实际情况改改。

作者: dreamawake   发布时间: 2008-03-23

引用:
作者: archlinux007
使用hal然后加载U盘,FAT格式,中文显示有问题,还没有解决
上图,自己看
上传的图像
11.jpg (64.9 KB, 157 次查看)

作者: loujch   发布时间: 2008-03-23

刚才试了,不错,符合我的使用要求,
再次赞一下

作者: axlrose   发布时间: 2008-03-23

这个方法不错,刚刚试了一下,好使!

作者: sijunlee   发布时间: 2008-03-23

@ easycat

autofs 现在更新到5版了。不知有什么更新。

作者: james6688   发布时间: 2008-03-31

很棒!另外我这里hal用不起来,这个完美。

作者: deepwater   发布时间: 2008-05-23

我用的是rox.
这个是能挂载,但是有个小问题,退出usb 文件夹的时候,会*出对话框:卸除挂载。点击会出现:
解除挂载 /mnt/usb-sdb1
umount: /mnt/usb-sdb1 is not in the fstab (and you are not root)
解除挂载失败

完成
发现错误.

作者: rabbit407   发布时间: 2008-05-23

RUN+="/bin/mount -t vfat -o rw,utf8=true,

把 mount -t vfat 换成 mount -t auto 应该可以挂载更多文件类型的设备吧?

作者: 312100   发布时间: 2008-05-23

引用:
作者: 312100
RUN+="/bin/mount -t vfat -o rw,utf8=true,

把 mount -t vfat 换成 mount -t auto 应该可以挂载更多文件类型的设备吧?
这个不行啊。谁可以完善这个。让它挂载Linux的文件类型。

作者: xblx   发布时间: 2008-10-02

这个只是简单工作而已。更复杂的hal+exo-mount或者gnome-mount帮你完成就好了

作者: jarryson   发布时间: 2008-10-02

在哪里可以下载啊?

作者: zoyon   发布时间: 2009-07-10

mark it

作者: Havanna   发布时间: 2009-08-24

不错,呵呵。

作者: ShinyGuo   发布时间: 2009-10-11

HAL可以用, 但每次挂都是utf8, 不知道怎么配.

作者: whatiwant   发布时间: 2009-10-12

标记一个,占位

作者: Adbear   发布时间: 2010-01-03

刚装的archlinux操作系统,本来好好的,昨天只是装了几个软件,然后今天在启动系统时,到loading UDev events to be processed这一步之后就花屏死机了,怎么也进不了系统,而电脑上的其它系统则可以正常进入,现在不知道怎么弄了,难道只能重装了么?

作者: hcfse   发布时间: 2010-01-04