[ask] how to mount usb devices automaticlly?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
zhuzhzh
帖子: 265
注册时间: 2005-07-28 15:08

[ask] how to mount usb devices automaticlly?

#1

帖子 zhuzhzh » 2007-07-10 14:14

I am using RedHat Enterprise 3.
I want to know how to mount usb devices automaticlly without mounting manully
无声胜有声
头像
zmcbb30
帖子: 2717
注册时间: 2006-09-30 0:32
来自: 巴拉特星系第四行星──海尼森

#2

帖子 zmcbb30 » 2007-07-10 14:22

把 fstab 文件的usb 盘的那行去掉, 然后保存一下
头可断,血可流,靓女不可不追求
相艾唔好口,够姜就只抽

BARTON 2500+/1536MDDR400
EP8RDA3G/MX4000 128M64bit 8X
DiamondPlus9-6Y080L0-ATA133
Samsung743DF
HiweedDesktop-1.0
zhuzhzh
帖子: 265
注册时间: 2005-07-28 15:08

#3

帖子 zhuzhzh » 2007-07-10 14:37

I am using Redhat Enterprise version.

There are no lines related to "USB" in /etc/fstab
无声胜有声
oldniu
帖子: 172
注册时间: 2006-08-10 16:01

#4

帖子 oldniu » 2007-07-10 15:00

dmesg |tail
#find the info about your usb driver; it should be /dev/sda or /dev/sdb
mkdir /mnt/usb
#creat mount point, make sure you are root
mount -t vfat /dev/sda /mnt/usb
#make sure you are root, pls check the usb file system by yourself

redhat请参考
http://www.linuxsir.org/bbs/showthread.php?t=157065

ubuntu 自动挂载U盘优盘上的分区 应该是udev在起作用
请man udev

以下内容转载自
http://blog.chinaunix.net/u/22153/showart.php?id=399658

通过udev自动挂载U盘的方法
目前一些主流桌面系统(如Gnome,KDE,Xfce)的较新版本都支持自动挂载(mount)U盘了. 一个流传很广的说法是 HAL(硬件抽象层) 起了自动挂载的作用, 其实这是误解. 对于2.6内核而言, udev 才是直接从内核接收设备连接或断开信息的主体.

udev 从内核得到信息后,根据一些简单规则(注意,是简单规则), 在 /dev 目录下创建相应的设备节点, 并进行某些相关操作. HAL 所做的事情是在 udev 的规则中加上一条(或几条), 让 udev 把收到的信息也传递给 HAL. 接下来, HAL 用更为复杂的规则来匹配和描述当前连接着的硬件. 举一个简单的例子, udev 知道的是U盘已经连接了并且有一个分区; 而 HAL 能更进一步知道这个分区的卷标名及其它一些信息.

上面这些都还不能自动挂载U盘. Gnome 等桌面系统会启动一个守护进程(daemon), 通过 D-Bus 从 HAL 那里得到硬件信息, 如果发现有U盘连接了就由它们来挂载它(实际是调用 pmount).

问题是, 如果你不想用Gnome,KDE,Xfce这些桌面系统, 那么由它们提供的U盘自动挂载功能也就失效了,有解决办法么?

解决的办法之一, 便是让 udev 来干这件事情!

udev 的主要功能是实时地在 /dev 目录下创建和删除设备节点, 但它也能在创建节点的同时, 执行一个额外地程序. 具体的原理这里就不详说了, 有时间请仔细阅读 Writing udev rules 这篇文章. 写规则时特别注意 KERNEL, SUBSYSTEM 等这些关键字单数和复数(最后有没有'S')的区别. 复数(比如 KERNELS)表示你想用父设备的属性来匹配, 单数(比如 KERNEL)是要匹配设备本身的属性.

在 /etc/udev/rules.d 目录下创建文件 10_usbkey.rules, 其内容如下

KERNEL=="sda1", SUBSYSTEM=="block", RUN+="/root/usbmount.sh"



然后, 在 /root 目录中创建文件 usbmount.sh, 其内容为

#!/bin/bash

LOG=/var/log/usb-hotplug.log

lap=$(date --rfc-3339=ns)
echo "$lap: $DEVPATH requesting $ACTION" >> $LOG

if [ $ACTION == "add" ]
then
mount -t vfat -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \
/dev/sda1 /media/usbkey
elif [ $ACTION == "remove" ]
then
umount -l /media/usbkey
fi


并把该文件属性设置为可执行, chmod a+x usbmount.sh
注意, 如果你的 linux 上 locale 是 zh_CN.utf-8, 需要把上面的 iocharset=gb2312 改成 iocharset=utf8



最后创建目录, mkdir /media/usbkey



这是一个非常简单但可用的例子. U盘插上后自动 mount 到 /media/usbkey , 拔出后自动 umount. 你可以查看 /var/log/usb-hotplug.log , 里面会有些简单的调用记录.


TAG udev u盘 挂载
发表于: 2007-10-12,修改于: 2007-10-13 10:19,已浏览67次,有评论0条 推荐 投诉
螺钉头虽然愚笨但总想在坚实的生活里钻出自己的天地来。
回复