热门标签 | 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



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

 



推荐阅读
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 本文详细介绍了在 Android 7.1 系统中调整屏幕分辨率和默认音量设置的方法。针对系统默认音量过大的问题,提供了具体的步骤来降低系统、铃声、媒体和闹钟的默认音量,以提升用户体验。此外,还涵盖了如何通过系统设置或使用第三方工具来优化屏幕分辨率,确保设备显示效果更加清晰和流畅。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
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社区 版权所有