当前位置: 代码迷 >> 驱动开发 >> USB不能自动挂载,该怎么处理
  详细解决方案

USB不能自动挂载,该怎么处理

热度:63   发布时间:2016-04-28 10:45:04.0
USB不能自动挂载
各位大神,我在开机前插上U盘,U盘能自动挂载。但是开机后拔下U盘再插上就不能自动挂载,但手动可以挂载,不知道是什么原因。以下是我相关文件的内容
 
rcS文件中挂载的相关内容:
echo -n " Mounting /proc : "
mount -n -t proc /proc /proc
status $? 1

echo -n " Mounting /sys : "
mount -n -t sysfs sysfs /sys
status $? 1

echo -n " Mounting /dev : "
mount -n -t tmpfs mdev /dev
status $? 1

echo -n " Mounting /dev/pts : "
mkdir /dev/pts
mount -t devpts devpts /dev/pts
status $? 1

echo -n " Enabling hot-plug : "
echo "/sbin/mdev" > /proc/sys/kernel/hotplug

status $? 0

echo -n " Populating /dev : "
mkdir /dev/input

mdev -s
status $? 0

fstab文件内容:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0

mdev.conf文件内容:
sd[a-z][0-9] 0:0 666 @(/etc/hotplug/usb/udisk_insert $MDEV $SUBSYSTEM)
sd[a-z] 0:0 666 $(/etc/hotplug/usb/udisk_remove $MDEV $SUBSYSTEM)
ub[a-z][0-9] 0:0 666 @(/etc/hotplug/usb/udisk_insert $MDEV $SUBSYSTEM)
ub[a-z] 0:0 666 $(/etc/hotplug/usb/udisk_remove $MDEV $SUBSYSTEM)

audio 0:5 0666
console 0:5 0600
control.* 0:0 0660 @/bin/mv /dev/$MDEV /dev/snd/
dsp 0:5 0666
event.* 0:0 0600 @/bin/mv /dev/$MDEV /dev/input/
fb 0:5 0666
nfs 0:5 0770
null 0:0 0777
pcm.* 0:0 0660 @/bin/mv /dev/$MDEV /dev/snd/
rtc 0:0 0666
tty 0:5 0660
tty0* 0:5 0660
tty1* 0:5 0660
tty2* 0:5 0660
tty3* 0:5 0660
tty4* 0:5 0660
tty5* 0:5 0660
tty6* 0:5 0660
ttyS* 0:5 0640
urandom 0:0 0444
zero 0:0 0666

etc/hotplug/usb/udisk_insert内容:
if [ -n "$1" ] ; then
  if [ -b /dev/$1 ]; then

  if [ ! -d /mnt/usb ]; then
  mkdir -p /mnt/usb
  fi
   
  mount /dev/$1 /mnt/usb
  if [ $? -ne 0 ]; then
  rm -rf /mnt/usb
  fi

  fi
fi

etc/hotplug/usb/udisk_remove内容:
MOUNTS=$(mount | grep $1 | cut -d' ' -f3)
umount $MOUNTS
rm -rf $MOUNTS

各位大神帮帮忙

------解决方案--------------------
可以移植udev实现自动挂载:

Udev 是Linux kernel 2.6系列的设备管理器。它的主要功能是管理/dev目录下设备节点。同时用来接替devfs及hotplug的功能,也就是它要在添加/删除硬件、加载firmware时处理/dev目录以及所有用户空间的行为。

从网站http://www.us.kernel.org/pub/linux/utils/kernel/hotplug/下载udev-080.tar.bz2源码,
解压udev源码包
Host# tar jxvf udev-080.tar.bz2
解压后生成目录udev-080。
进入udev-080文件目录,执行如下命令进行编译:
Host# cd udev-080
Host# make clean
Host# make 
编译遇到有“offsetof”字样提示的错误信息时,将udevmonitor.c文件第53行
addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path +1) + 1;
改为
addrlen = __builtin_offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
编译就能通过。
进入udev-080文件目录,将udev udevd udevstart udevinfo udevtest拷贝到板卡文件系统bin目录下,将etc/udev目录拷贝到板卡文件系统etc目录下。
在板卡文件系统etc/init.d/rcS文件中添加如下内容:
/bin/udevd --daemon
/bin/udevstart

这样以后就能实现自动挂载了。不仅仅是U盘哦。
  相关解决方案