当前位置: 技术问答>linux和unix
请问linux自动挂载U盘怎么实现?
来源: 互联网 发布时间:2016-06-15
本文导语: 我想在2440开发板上实现Linux系统下的U盘自动挂载,即支持U盘的热插拔,怎么实现啊?谢谢! 附:是Linux2.6的内核 | udev 很大, 开发板一般用busybox里带的mdev。 执行mdev -s :以‘-s’为参数...
我想在2440开发板上实现Linux系统下的U盘自动挂载,即支持U盘的热插拔,怎么实现啊?谢谢!
附:是Linux2.6的内核
附:是Linux2.6的内核
|
udev 很大, 开发板一般用busybox里带的mdev。
执行mdev -s :以‘-s’为参数调用位于 /sbin目录写的mdev(其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它),mdev扫描 /sys/class 和 /sys/block 中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev 下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。
热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于 /sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
执行mdev -s :以‘-s’为参数调用位于 /sbin目录写的mdev(其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它),mdev扫描 /sys/class 和 /sys/block 中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev 下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。
热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于 /sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
|
这个在应用里面可以做到判断u盘插入,然后挂载,简单的做法是开一个线程不断去判断设备文件,判断设备文件可以调用fdisk命令把信息定位到一个临时文件,然后分析临时文件,如果有U盘插入,则挂载。
另一种方法是修改驱动程序,我以前的一种做法是在中断判断有设备插入的时候,用*userhelp*函数(名称具体是什么我忘了)进行调用系统命令来挂载。
不过卸载就比较麻烦了,因为U盘被拔出后再进行卸载命令的话,会有问题的。一般做法还是先卸载,后拔盘。
另一种方法是修改驱动程序,我以前的一种做法是在中断判断有设备插入的时候,用*userhelp*函数(名称具体是什么我忘了)进行调用系统命令来挂载。
不过卸载就比较麻烦了,因为U盘被拔出后再进行卸载命令的话,会有问题的。一般做法还是先卸载,后拔盘。