热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

脚本实现U盘自动挂载(linux平台)

原文地址:https:blog.csdn.netu011784994articledetails73878822这里是通过对udev的设置,让udev收到内核发来的U盘消息后自动挂

https://blog.csdn.net/u011784994/article/details/73878822/

这里是通过对udev 的设置,让 udev 收到内核发来的 U 盘消息后自动挂载,首先你要确保你的系统有udev的支持,如果有直接进行对udev设置,如果没有请先移植udev,移植方法在本文最后面。 



自动挂载:



  1、在/etc/udev/rules.d目录里面创建11-usb-mount.rules,



         11-usb-mount.rules里面的内容如下:



              ACTION!="add",GOTO="farsight"

              KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mount-usb.sh %k"

              LABEL="farsight"



 2、  在/sbin/目录里创建mount-usb.sh脚本文件



        mount-usb.sh的内容如下:


#!/bin/sh

mkdir -p /mnt/usb

/bin/mount -t vfat /dev/$1 /mnt/usb

sync

重启下即可在linux上实现自动挂载,u盘自动挂载到/tmp目录里



自动卸载:



  1、在/etc/udev/rules.d目录里面11-usb-mount.rules添加内容如下:



        ACTION!="remove",GOTO="farsight"

       SUBSYSTEM!="block",GOTO="farsight"

        KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh"

        LABEL="farsight"



   2、在/sbin/目录里创建umount-usb.sh脚本文件



           umount-usb.sh的内容如下:

#!/bin/sh

/bin/umount /dev/$1

sync




.udev的移植

1.下载UDEV源码udev-080.tar.bz2或udev-100.tar.bz2 ,并解压



http://download.csdn.net/detail/sphone89/4092734



2.交叉编译。



  修改Makefile,具体修改如下:

        CROSS = arm-linux-



        保存退出。

        执行命令:make 进行编译



没有什么意外的话当前目录下生成 udev,udevcontrol,udevd,udevinfo,udevmonitor,udevsettle,udevstart, udevtest,udevtrigger九个工具程序,在嵌入式系统里,我们只需要udevd和udevstart就能使udev工作得很好,其他工具 则帮助我们完成udev的信息察看、事件捕捉或者更高级的操作。



。并拷贝这些文件到/sbin(这个目录根据你系统的目录来定)目录下面



3.添加udev的支持



  下面三种方法功能相同 

        (1)并修改etc/init.d/rcS脚本,然后添加如下命令: 

        /bin/mount -t sysfs sysfs /sys

        (首先创建这个目录) 

        /bin/mount -t tmpfs tmpfs /dev

        /bin/udevd --daemON

        /bin/udevstart

        (2)如果linuxrc是二进制文件的话 (可省)

        rm /linuxrc

        vi /linuxrc 

        添加如下内容 

        /bin/mount -t sysfs sysfs /sys

        (首先创建这个目录) 

        /bin/mount -t tmpfs tmpfs /dev

        /bin/udevd --daemon

        /bin/udevstart

        exec /sbin/init

        (3)修改/etc/fstab为 

        #device mount-point type options dump fsck order

        proc /proc proc defaults 0 0

        tmpfs /tmp tmpfs defaults 0 0

        sysfs /sys sysfs defaults 0 0

        tmpfs /dev tmpfs defaults 0 0



我的fstab的内容为:



#    



/dev/root /  auto defaults,errors=remount-ro 0 0

none  /proc  proc noauto   0 0

none  /sys  sysfs noauto   0 0

none  /dev/pts devpts noauto,gid=5,mode=620  0 0

none  /dev/shm tmpfs noauto   0 0



##############################################

        修改/etc/init.d/rcS,添加如下内容 

        /bin/udevd --daemon

        /bin/udevstart

        有这上面写些,重新启动系统后,我们的文件系统就有了自动创建节点的功能了。



  二、自动挂载U盘或sd卡



  1.在/etc下创建udev目录



  2.在/etc/udev下穿件目录rules.d和文件udev.conf



  3.在udev.conf中添加如下内容



# udev.conf

        # The initial syslog(3) priority: "err", "info", "debug" or its

        # numerical equivalent. For runtime debugging, the daemons internal

        # state can be changed with: "udevcontrol log_priority=".

        udev_log="err"



  4.在rules.d下创建规则文件



  如实现U盘自动挂载 

        Vim 11-add-usb.rules



  添加如下内容 

        ACTION!="add",GOTO="farsight"

        KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mount-usb.sh %k"

        LABEL="farsight"



  这个文件中ACTION后是说明是什么事件,KERNEL后是说明是什么设备比如sda1,mmcblk0p1等,RUN这个设备插入后去执行哪个程序%k是传入这个程序的参数,这里%k=KERNEL的值也就是sda1等。



  在/sbin/下创建mount-usb.sh文件添加如下内容 

        #!/bin/sh

        /bin/mount -t vfat /dev/$1 /tmp

        sync



  修改文件权限为其添加可执行的权限。

 



推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了如何使用MATLAB调用摄像头进行人脸检测和识别。首先需要安装扩展工具,并下载安装OS Generic Video Interface。然后使用MATLAB的机器视觉工具箱中的VJ算法进行人脸检测,可以直接调用CascadeObjectDetector函数进行检测。同时还介绍了如何调用摄像头进行人脸识别,并对每一帧图像进行识别。最后,给出了一些相关的参考资料和实例。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
author-avatar
艾薇卡皮草它_791
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有