一、方法一
因为我调试的系统是基于LSDK的,所以无法直接使用openwrt中的hotplug完成此功能。所以使用了以下的技巧。
我实现的方式很简单linux就该这么学,主要是周期读取文件/proc/partitions文件linux 挂载u盘 中文linux下载,当有硬盘插入时,该文件中都会有硬盘的信息:“sdb1、sdb2”等,当系统监测到这种信息时,就执行命令mount,将硬盘挂载到文件系统中。可以在应用程序中开一个线程来周期读取文件/proc/partition
我实现的方式很简单,主要是周期读取文件/proc/partitions文件,当有硬盘插入时,该文件中都会有硬盘的信息:“sdb1、sdb2”等linux 挂载u盘 中文,
当系统监测到这种信息时,就执行命令mount,将硬盘挂载到文件系统中。
可以在应用程序中开一个线程来周期读取文件/proc/partitions文件,实习文件的手动挂载。
这只是简单的硬盘手动挂载,还可以使用hotplug实现U盘的手动挂载。
二、方法二
下边是在网上听到的使用mdev的方式:
在ARM嵌入式Linux下,要让U盘手动挂载,可以用到mdev方法实现(mdev是busybox中的一个udev管理程序的一个精简版,它可以实现设备节点的手动创建和设备的手动挂载),下边是实现的步骤:
1、确认Busybox做的根文件系统如下选项有选中:
LinuxSystemUtilities—>
[*]mdev
[*]Support/etc/mdev.conf
[*]Supportcommandexecutionatdeviceaddition/removal
2、由于是借助到Linux内核的hotplug功能,要确定CONFIG_HOTPLUG=y。
3、修改根文件系统上面的etc/init.d/rcS文件,添加如下内容:
mount-ttmpfsmdev/dev
mount-tsysfssysfs/sys
mkdir/dev/pts
mount-tdevptsdevpts/dev/pts
#mdevfor/dev
echo/sbin/mdev>/proc/sys/kernel/hotplug
mdev-s
echo“***************Startingmdev………[OK]”
4、添加对热拔插风波的相应,支持U盘手动挂载:
更改根文件系统中的etc/mdev.conf文件,内容如下:
sd[a-z][0-9]0:0666@/etc/mdev/udisk_insert
sd[a-z]0:0666$/etc/mdev/udisk_remove
注:@表示是在插入(创建设备结点)后执行前面的脚本,$表示在拔出(删掉设备结点)前执行前面的脚本。
5、添加对应的脚本文件:
根文件系统中的etc/mdev/udisk_insert文件内容:
#!/bin/sh
if[-d/sys/block/*/$MDEV];then
mkdir-p/media/$MDEV
mount/dev/MDEV/media/MDEV-tvfat-outf8=1
fi
根文件系统中的etc/mdev/udisk_remove文件内容:
#!/bin/sh
umount-l/media/$MDEV
rm-rf/media/$MDEV
至此,就可以实现手动的拔插挂载