LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1999|回复: 19

udev自动挂载新解

[复制链接]
发表于 2011-1-31 13:00:25 | 显示全部楼层 |阅读模式
来自 archwiki 的 udev 条目。

其实 udev(简体中文) 也有。但是脚本的这一行:
  1. ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule"
复制代码
有问题,具体地就是当前版本的 udev 中,没有 /lib/udev/vol_id 这个软件。所以更新有问题。(话说这是翻译不到位啊~)

archwiki udev 中有新的例子,能用而且似乎更规范。我稍作改动如下:
  1. # 检测,如果不是存储设备就跳过
  2. KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"

  3. # 检测设备
  4. IMPORT{program}="/sbin/blkid -o udev -p %N"

  5. # 命名设备,如果有标签就以标签命名,如果没有就按设备名称
  6. ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
  7. ENV{ID_FS_LABEL}=="", ENV{dir_name}="u-%k"

  8. # 通用挂载选项
  9. ACTION=="add", ENV{mount_options}="relatime,sync"

  10. # 特殊挂载选项,fat 和 ntfs
  11. ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="$env{mount_options},iocharset=utf8,umask=000"
  12. ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="$env{mount_options},utf8,umask=000"

  13. # 挂载设备
  14. ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

  15. # 如果拔出设备:
  16. ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

  17. # 退出
  18. LABEL="media_by_label_auto_mount_end"
复制代码


ps: udev 不支持任何形式的行连接符
发表于 2011-1-31 17:07:34 | 显示全部楼层
非root用户能用吗?
回复 支持 反对

使用道具 举报

发表于 2011-1-31 18:00:50 | 显示全部楼层
这么牛叉的东东,晚上回去试试。
虽然我对我现在rox挂载u盘的方式很满意
回复 支持 反对

使用道具 举报

发表于 2011-1-31 20:38:20 | 显示全部楼层
留个脚印,以备要用到,我现在是用KDE的,它自己会挂的。
回复 支持 反对

使用道具 举报

发表于 2011-2-1 00:49:49 | 显示全部楼层
wiki上的udev條目似乎有些問題
我前些時候照著wiki上的方法添加自動掛載規則
但開機時都會把ext2分區識別為損毀的狀態
刪除此規則再用ex2fsck修復既正常
但卻把我嚇了一身冷汗...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-1 07:38:48 | 显示全部楼层
Post by dkeehl;2127150
非root用户能用吗?

这个正是解决非 root 用户无挂载权限问题的。
回复 支持 反对

使用道具 举报

发表于 2011-2-1 08:42:04 | 显示全部楼层
其实我想让他挂载后,并调用rox来打开,我在add那一行最后加上RUN+="/usr/bin/rox  /media/%E{dir_name}"好像没有反应啊
这是什么情况呢?
回复 支持 反对

使用道具 举报

发表于 2011-2-1 09:29:02 | 显示全部楼层
Post by flay0303;2127152
这么牛叉的东东,晚上回去试试。
虽然我对我现在rox挂载u盘的方式很满意


你的方式是怎样的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-1 09:38:31 | 显示全部楼层
Post by flay0303;2127193
其实我想让他挂载后,并调用rox来打开,我在add那一行最后加上RUN+="/usr/bin/rox  /media/%E{dir_name}"好像没有反应啊
这是什么情况呢?

这个应该不行。这个 rules 的执行者应该是 root ,而登入 X 的用户不是 root 。所以不行。
具体怎样我就不知道了…
回复 支持 反对

使用道具 举报

发表于 2011-2-1 09:41:49 | 显示全部楼层
留个脚印.  zswlb9999 关键字  UDEV
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表