(转) 嵌入式 Linux 利用 udev 实现自动检测挂载U盘
udev配置文件是/etc/udev/udev.conf,也许长这样:
# udev.conf
# The initial syslog() priority: "err", "info", "debug" or its
# state can be changed with: "udevcontrol log_priority=<value>".
udev_root="/dev/"
udev_rules="/etc/udev/rules.d"
udev_log="err"
udev_rules这一行表示udev的规则存储的目录,这个目录存储的是以.rules结束的文件。每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。
一般/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另外一部分则是可能是别的硬件或者软件包生成的。这些规则文件的文件名通常是两个数字开头,它表示系统应用该规则的顺序,数字越小优先级越高。
/etc/udev/rules.d/11-usb-hotplug.rules 检测U盘的文件也许长这样:
KERNEL=="sd*", SUBSYSTEM=="block", RUN+="/etc/udev/disk-hotplug.sh"
这一行字面意思可以理解为有节点 /dev/sd* 创建的话,就会去执行 /etc/udev/disk-hotplug.sh 这个脚本
sd*的*是通配符,包含sda/sda1/sda2...,sdb/sdb1/sdb2...
/etc/udev/disk-hotplug.sh 可以这样写:
#!/bin/sh
################################################################################
# Create By Czy
################################################################################ ################################################################################
CONSOLE=/dev/ttyAMA0
################################################################################
show_env ()
{
local RED="\033[31m"
local NORMAL="\033[00m"
{
echo -e ${RED}"ACTION=$ACTION" ${NORMAL}
echo -e ${RED}"DEVNAME=$DEVNAME" ${NORMAL}
echo -e ${RED}"DEVTYPE=$DEVTYPE" ${NORMAL}
echo -e ${RED}"DEVPATH=$DEVPATH" ${NORMAL}
echo -e ${RED}"SUBSYSTEM=$SUBSYSTEM" ${NORMAL}
echo -e ${RED}"SEQNUM=$SEQNUM" ${NORMAL}
} > ${CONSOLE}
}
################################################################################
add_usb ()
{
if [ ss"$SUBSYSTEM" != ss"block" ]; then
return
fi if [ ss"$DEVTYPE" != ss"partition" ]; then
return
fi show_env if [ -e $DEVNAME ]; then
echo "add_usb..." > ${CONSOLE}
mount $DEVNAME /mnt
sync
fi
}
################################################################################
remove_usb ()
{
if [ ss"$SUBSYSTEM" != ss"block" ]; then
return
fi if [ ss"$DEVTYPE" != ss"partition" ]; then
return
fi show_env echo "remove_usb..." > ${CONSOLE}
umount /mnt
}
################################################################################
hotplug_usb ()
{
case "$ACTION" in
"add" )
add_usb
;;
"remove" )
remove_usb
;;
* )
echo "Not recognise ACTION:${ACTION}" > ${CONSOLE}
;;
esac return
}
################################################################################ hotplug_usb
这样既可实现自动检测U盘挂载
CONSOLE=/dev/ttyAMA0 这一句要改成实际用的
测试结果贴一下

想用C/C++在程序代码里监控USB事件的话,可以利用PF_NETLINK NETLINK_KOBJECT_UEVENT来实现
参考:https://blog.csdn.net/yangzhongxuan/article/details/8494570或 https://blog.csdn.net/HAOMCU/article/details/7371801
(转) 嵌入式 Linux 利用 udev 实现自动检测挂载U盘的更多相关文章
- 嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)
在 http://www.cnblogs.com/heat-man/p/4564539.html中,在嵌入式Linux开发板上我们从最底层实现了一个智能家居的远程控制系统,然而采取的是用网线连接到交换 ...
- Linux利用udev提权
友老催我写个webshell+udev localroot的文章.这周末有点空闲时间,捣鼓了一下.公开的udev exploit有两个.一个是kcope写的SHELL版本,一个是jon写的C版本. s ...
- 嵌入式Linux利用ppp实现4G模块联网
https://blog.csdn.net/qq361294382/article/details/52136126 https://blog.csdn.net/qq361294382/article ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一 ...
- linux中udev简单的用法-->【转】
本文转载自:http://blog.csdn.net/qq_29729577/article/details/50825134 udev是Linux提供的一种在用户态管理设备的一种机制,udev的详细 ...
- linux中udev简单的用法【转】
本文转载自:http://blog.csdn.net/qq_29729577/article/details/50825134 udev是Linux提供的一种在用户态管理设备的一种机制,udev的详细 ...
- linux设备驱动----利用mdev(udev)自动创建设备文件节点
1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...
- 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误
嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报 分类: 嵌入式(928) 一般察看函数运行时堆栈的 ...
- Linux利用nc命令脚本批量检测服务器指定端口是否开放
一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程. -w <超时秒数> 设置等待连线的时间. -u 表示使用UDP协议 -z 使 ...
随机推荐
- strace命令 一
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- FineReport 交叉报表
交叉报表 - FineReport报表官网http://www.finereport.com/knowledge/professional/crossreport.html FineReport--- ...
- jenkins结合httprunner配置实现自动化测试
jenkins结合httprunner配置实现自动化测试 自动化测试思路: jenkins发布代码到预发布环境 –> 触发自动化测试预发布环境 à 返回测试结:如果测试通过则将代码推送到生产环境 ...
- zookeeper在windows的常用命令
首先简要讲下安装 安装jdk 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本. 解压zoo ...
- Spring cloud微服务安全实战-3-11API安全机制之登录
流控.认证.审计.授权以上都做了初步的简单的实现. 之前写的代码,base64加密了用户名和密码. 缺点1:每次请求都要带用户名密码 增加了泄露的风险. 每次传上来用户名和密码都要check验证.ch ...
- php cURL error 60: SSL certificate problem: unable to get local issuer certificate 解决办法
错误例子如下: php5.6以上的版本会出现这种问题 关于“SSL证书问题:无法获取本地颁发者证书”错误.很明显,这适用于发送CURL请求的系统(并且没有服务器接收请求) 1)从https://cur ...
- [Scikit-learn] 1.4 Support Vector Regression
SVM算法 既可用于回归问题,比如SVR(Support Vector Regression,支持向量回归) 也可以用于分类问题,比如SVC(Support Vector Classification ...
- Spring MVC 设计概述
MVC设计的根本原因在于解耦各个模块 Spring MVC的架构 对于持久层而言,随着软件发展,迁移数据库的可能性很小,所以在大部分情况下都用不到Hibernate的HQL来满足移植数据库的要求. ...
- Pycharm一些额外使用笔记
(1)关于调试的一个小技巧: 在上面下栏的调试界面中可以修改变量a的值: (2)指定参数执行脚本: 第一步在run中指定edit configuration,然后在Parameters中指定训练的参数 ...
- Sound (audio file) player in java - working source code example
转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/sound-audio-file-player-in-java-working.html ...