u盘自动挂载-udev

2024-03-15 07:48
文章标签 自动 挂载 udev

本文主要是介绍u盘自动挂载-udev,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux传统上使用静态设备创建的方法,在dev下创建了大量的节点,而不管这些节点相应的硬件设备是否存在。采用udev的方法,系统检测到设备才会往创建这些设备对应的节点。

  这里我们简单的说一下udev的工作原理:

  Udev是依靠于sysfs的,当系统中添加一个新的设备后,内核检测到后就会产生一个hotplug event并查找/proc/sys/kernel/hotplug往找出治理设备连接的用户空间程序,若udev已经启动,内核会通知udev往检测sysfs中关于这个新设备的信息并创建设备节点。如/dev/vcs,在/sys/class/tty/vcs/dev存放的是”7:0”,既/dev/vcs的主次设备号。

  并且udev还会根据/etc/udev/rules.d中的规则文件实现一些相应的功能。

  下面我们先容一下如何实现设备节点的自动创建及U盘或SD卡的自动挂载。

  一、.udev的移植(现在的文件系统中一般默然对udev进行了支持)

  由于文件系统中默认是没有对udev进行支持的,所以我们移植一个udev。

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

  网址:http://www.us.kernel.org/pub/linux/uTIls/kernel/hotplug

  2.交叉编译。

  修改Makefile,具体修改如下:
    CROSS = arm-softfloat-linux-gnu-
    保存退出。
    执行命令:make 进行编译,然后执行arm-softfloat-linux-gnu-STrip udev udevd udevstart udevinfo udevtest。并拷贝这些文件到rootfs/bin目录下面

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
    修改/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

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

  这样就实现了U盘的自动挂载,下面附上U盘的卸载规则文件和sd卡的文件

  Usb卸载

11-add-remove.rules
    ACTION !="remove",GOTO="farsight"
    SUBSYSTEM!="block",GOTO="farsight"
    KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh"
    LABEL="farsight"

umount-usb.sh
    #!/bin/sh
    sync
    umount /tmp/

SD卡挂载

ACTION!="add",GOTO="farsight"
    KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/mount-sd.sh %k"
    LABEL="farsight"

mount-sd.sh
    #!/bin/sh
    /bin/mount -t vfat /dev/$1 /tmp
    Sync

SD卡卸载
    ACTION !="remove",GOTO="farsight"
    SUBSYSTEM!="block",GOTO="farsight"
    KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/umount-sd.sh"
    LABEL="farsight"

umount-sd.sh
    #!/bin/sh
    sync
    umount /tmp/
  “本文由华清远见http://www.embedu.org/index.htm提供”

这篇关于u盘自动挂载-udev的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811263

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e