首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

USB不能自动挂载解决办法

2012-12-31 
USB不能自动挂载各位大神,我在开机前插上U盘,U盘能自动挂载。但是开机后拔下U盘再插上就不能自动挂载,但手

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盘哦。

热点排行