openwrt USB热插拔(hotplug)
目录
前言
一、hotplug相关子目录
block 文件夹脚本中的变量
二、相关内核勾选
三、脚本示例
总结
前言
openwrt USB外挂U盘的时候很需要热插拔功能(内核版本21.02内测版本)
openwrt官网传送门
当某些事件发生时,Procd(init系统和进程管理守护进程)执行位于/etc/hotplug.d/
中的脚本,例如当接口启动或关闭时,检测到新的存储驱动器时,或者按下按钮时.
当使用PPPoE连接或者在不稳定的网络中,或使用硬件按钮时非常有用。
该功能模块模拟/扩展了长期未用的Hotplug2程序包所执行的操作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、hotplug相关子目录
在 /etc/hotplug.d
文件夹你可以发现 block iface, net 和 ntp 等文件夹.
触发事件触发后,Procd将按字母顺序执行该触发器子文件夹中的所有脚本。 这就是为什么那里的大多数脚本都使用数字前缀。
block 文件夹用于块设备事件(块设备已连接/已断开连接)
iface 文件夹用于接口事件(当LAN或WAN等接口连接/断开时)
net 文件夹用于:(可能与网络相关)
ntp 文件夹用于时间同步事件(Time step,时间服务器层变化)
button 文件夹用于按钮事件 (缺省不创建, 由 /etc/rc.button 代替)
usb 文件夹用于类似3g-modem和tty*的USB设备
对于其他类型的触发器,可能(应该)是其他的。通过查看源码 in git 他们可以是按钮, 声音设备, 串口和USB串口加密狗。
block 文件夹脚本中的变量
对于 block文件夹中的脚本,他们是这些(相关的)环境变量
变量名 | 描述 |
---|---|
ACTION | “add” 或 “remove” |
DEVICENAME | 与下面的DEVNAME相同 |
DEVNAME | 设备或分区名称(如果连接驱动器,你会得到一个使用“sda”的热插拔调用,另一个使用“sda1”进行热插拔调用) |
DEVPATH | 完整的设备路径(如 “/devices/pci0000:00/0000:00:0b.0/usb1/1-1/1-1:1.0/host7/target7:0:0/7:0:0:0/block/sdc/sdc1 “) |
DEVTYPE | DEVNAME和DEVICENAME的名称是什么类型,当插入具有可读分区的设备时,该值为“partition”,当移除该设备时,该值为“disk”。 |
MAJOR | 主设备号 |
MINOR | 次要设备号 |
SEQNUM | 序号(一个数字) |
SUBSYSTEM | 固定值 “block” |
二、相关内核勾选
添加USB相关支持
Kernel modules —> USB Support —> <*> kmod-usb-core. ##默认已经选了
Kernel modules —> USB Support —> <*> kmod-usb-ohci. ##默认已选 old usb1.0
Kernel modules —> USB Support —> <*> kmod-usb-uhci. ## usb2.0
Kernel modules —> USB Support —> <*> kmod-usb-storage.
OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。
1.OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE 1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
2.UHCI(Universal Host Controller Interface),是Intel主导的对USB1.0、1.1的接口标准,与OHCI不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件的USB控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
3.EHCI(Enhanced Host Controller Interface),是Intel主导的USB2.0的接口标准。EHCI仅提供USB2.0的高速功能,而依靠UHCI或OHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。
4.xHCI(eXtensible Host Controller Interface),是最新最火的USB3.0的接口标准,它在速度、节能、虚拟化等方面都比前面3中有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)。
添加文件系统支持
这里我只勾选了VFAT格式
Kernel modules —> Filesystems —> < > kmod-fs-ext4 (移动硬盘EXT4格式选择)
Kernel modules —> Filesystems —> <*> kmod-fs-vfat(FAT16 / FAT32 格式 选择)
Kernel modules —> Filesystems —> < > kmod-fs-ntfs (NTFS 格式 选择)
添加USB挂载
注意:如果不勾选,etc/hotplug.d/block 会不存在
Base system —> <*>block-mount
三、脚本示例
源码添加位置:penwrt/target/linux/ramips/base-files/etc/hotplug.d/block (package/base-files/files/etc/hotplug.d/block/)
如果没有hotplug.d/block 自己新建就可以,脚本放到block/下
脚本的名称为:20-udisk-mount
关于linux下 dev/sda dev/sda1 .......... dev/sdb 说明
意义如下:
第一个软驱
/dev/fd0
.第二个软驱
/dev/fd1
.第一块硬盘
/dev/sda
.第二块硬盘
/dev/sdb
, 以此类推.第一个SCSI CD-ROM
/dev/scd0
, 可以用/dev/sr0
.sda1, sda2是sda这块硬盘上的两个分区。
如果没有分区比如dev/sda1 直接挂载 dev/sda 即可
脚本如下(示例):
#!/bin/ash
udisk_folder=/mnt/udiskcase "$ACTION" inadd)for i in $(ls /dev/ | grep 'sd[a-z][1-9]')domkdir $udisk_folderchmod 777 $udisk_foldermount -t vfat /dev/$i $udisk_folderdone;;remove)umount $udisk_folder;;
esac
总结
总结了openwrt官网热插拔的相关资料和自动挂载脚本
openwrt USB热插拔(hotplug)相关推荐
- Linux下自动检测USB热插拔
做嵌入式开发,尤其在网关.路由器或者其他支持USB设备的终端上,为了提高用户体验,我们常常需要支持自动识别并挂载USB设备功能.某些应用程序,在使用USB设备的过程中,也希望能够侦测到USB断开事件, ...
- Linux内核驱动开发-USB热插拔信息调取
前言: 前段时间上科大嵌入式安卓开发溜了个作业,开发一个驱动,可以实现读取USB热插拔信息,程序调用显示USB设备名称和插拔时间.代码已经放在了我的Github上,供大家参考. 思路: USB热插拔的 ...
- Linux热插拔hotplug处理流程
将可移动设备连入系统时,系统的后台中会依次发生如下事件: 1. 内核检测到新硬件插入,然后分别通知hotplug和udev.前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev ...
- 热插拔是什么?(Hot Swap hot-plugging hot plugging 带电插拔)USB热插拔
什么是热插拔? 热插拔 (Hot Swap) 即带电插拔,指的是在不关闭系统电源的情况下,将模块.板卡插入或拔出系统而不影系统的正常工作,从而提高了系统的可靠性.快速维修性.冗余性和对灾难的及时恢复能 ...
- linux下 USB动态监测 hotplug事件监测
From: http://blog.csdn.net/qwyang/article/details/6425555 总体规划: 使用netlink接口向内核注册hotplug事件通知,获取事件通知后进 ...
- android的usb热插拔,Android M能让外部存储变成内部存储 支持U盘热插拔
在此之前,Android一直对mirco SD卡之类的外部存储设备不太待见,最明显的例子就是和系统内部存储分得很清,俨然是庶出和嫡出的区别.今天发布的Android M,将有一个重大改变. 在Andr ...
- 华硕K40in黑苹果更新USB热插拔支持
添加支持方法: dsdt中,对于USB的标识,微软是USB0,USB1.....这样子. 而苹果是UHC1,UHC2...这种. 因此先把对应的修改过来.最后如果有USB0的,要修改为UHC1.
- linux initrd usb热插拔,linux技术之制作USB启动盘
linux技术之制作USB启动盘 USB闪存存储装置(优盘)由于具有轻巧精致.使用方便.便于携带等优点,特别是对比软盘具有容量较大.安全可靠.读取速度较快等特性,越来越多人 使用这种装置取代了软驱与软 ...
- linux initrd usb热插拔,8.3 发行注记 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
5.18. 虚拟化 现在,将虚拟机迁移到不兼容 TSC 设置的主机会更快地失败 在以前的版本中,将虚拟机迁移到没有兼容时间戳计数器(TSC)设置的主机会失败.在这个版本中,尝试这样的迁移会在迁移过程开 ...
- OpenWrt支持usb tethering
OpenWrt支持usb tethering 一.概述 OpenWrt支持usb tethering的应用场景主要是,手机打开usb网络共享(Android)或个人热点(iOS),经过USB的连接,使 ...
最新文章
- 解读网络“攻城狮”的发展---老赵带你铺一段路
- JAVA-retry 重试
- android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例
- python自定义函数详解_Python自定义函数
- linux下c语言按q退出_Linux C编程之一:Linux下C语言的开发环境
- javascript图书
- 虚拟化技术知识点初步梳理
- android 先拍照后对焦,先拍照后对焦 荣耀6或搭全焦拍摄功能
- qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
- HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
- 标准控件(二)——Calendar
- linux中不同版本的gcc切换,Ubuntu 14.04中升级gcc到版本4.9.2并切换使用它们
- matlab报童模型推导,报童模型推导
- python条件句格式_python条件语句是什么?条件语句的一般格式是什么样的?
- sox处理mp3,使用SoX将mp3文件拆分为TIME秒
- 你要悄悄学习3D城市,然后惊艳所有人(1)
- SDN学习继续(二)
- 免费截图工具PicPick 2.1.2绿色版
- python2 x和python3 x_python2.x 和python3.x 哪个比较好?老男孩Python
- app与后台通信完整流程
热门文章
- 无法安装驱动程序此计算机上不存在,在win7中安装打印机时,如果“找不到打印机驱动程序包所需的核心驱动程序包”怎么办?...
- 如何对Pandas DataFrame进行自定义排序
- 论文翻译:Dual-path RNN: efficient long sequence modeling for time-domain single-channel speech separatio
- 微积分Z2J5 两个重要极限
- springboot+vue+elementUI 公司财务固定资产管理系统#毕业设计
- 【杂学笔记-表观遗传学-updating】
- maker win10有movie_手把手解决win10系统出现windows MovieMaker故障的方法
- 带常数项指数函数的非线性回归方法(python实现)
- 关于信号发生器的功能和参数介绍(一)
- python 曲线拟合 画图+公式