目录

前言

一、hotplug相关子目录

block 文件夹脚本中的变量

二、相关内核勾选

三、脚本示例

总结



前言

openwrt USB外挂U盘的时候很需要热插拔功能(内核版本21.02内测版本)

openwrt官网传送门

当某些事件发生时,Procd(init系统和进程管理守护进程)执行位于/etc/hotplug.d/中的脚本,例如当接口启动或关闭时,检测到新的存储驱动器时,或者按下按钮时.

当使用PPPoE连接或者在不稳定的网络中,或使用硬件按钮时非常有用。

该功能模块模拟/扩展了长期未用的Hotplug2程序包所执行的操作。


提示:以下是本篇文章正文内容,下面案例可供参考

一、hotplug相关子目录

在 /etc/hotplug.d 文件夹你可以发现 block ifacenet 和 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)相关推荐

  1. Linux下自动检测USB热插拔

    做嵌入式开发,尤其在网关.路由器或者其他支持USB设备的终端上,为了提高用户体验,我们常常需要支持自动识别并挂载USB设备功能.某些应用程序,在使用USB设备的过程中,也希望能够侦测到USB断开事件, ...

  2. Linux内核驱动开发-USB热插拔信息调取

    前言: 前段时间上科大嵌入式安卓开发溜了个作业,开发一个驱动,可以实现读取USB热插拔信息,程序调用显示USB设备名称和插拔时间.代码已经放在了我的Github上,供大家参考. 思路: USB热插拔的 ...

  3. Linux热插拔hotplug处理流程

    将可移动设备连入系统时,系统的后台中会依次发生如下事件: 1. 内核检测到新硬件插入,然后分别通知hotplug和udev.前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev ...

  4. 热插拔是什么?(Hot Swap hot-plugging hot plugging 带电插拔)USB热插拔

    什么是热插拔? 热插拔 (Hot Swap) 即带电插拔,指的是在不关闭系统电源的情况下,将模块.板卡插入或拔出系统而不影系统的正常工作,从而提高了系统的可靠性.快速维修性.冗余性和对灾难的及时恢复能 ...

  5. linux下 USB动态监测 hotplug事件监测

    From: http://blog.csdn.net/qwyang/article/details/6425555 总体规划: 使用netlink接口向内核注册hotplug事件通知,获取事件通知后进 ...

  6. android的usb热插拔,Android M能让外部存储变成内部存储 支持U盘热插拔

    在此之前,Android一直对mirco SD卡之类的外部存储设备不太待见,最明显的例子就是和系统内部存储分得很清,俨然是庶出和嫡出的区别.今天发布的Android M,将有一个重大改变. 在Andr ...

  7. 华硕K40in黑苹果更新USB热插拔支持

    添加支持方法: dsdt中,对于USB的标识,微软是USB0,USB1.....这样子. 而苹果是UHC1,UHC2...这种. 因此先把对应的修改过来.最后如果有USB0的,要修改为UHC1.

  8. linux initrd usb热插拔,linux技术之制作USB启动盘

    linux技术之制作USB启动盘 USB闪存存储装置(优盘)由于具有轻巧精致.使用方便.便于携带等优点,特别是对比软盘具有容量较大.安全可靠.读取速度较快等特性,越来越多人 使用这种装置取代了软驱与软 ...

  9. linux initrd usb热插拔,8.3 发行注记 Red Hat Enterprise Linux 8 | Red Hat Customer Portal

    5.18. 虚拟化 现在,将虚拟机迁移到不兼容 TSC 设置的主机会更快地失败 在以前的版本中,将虚拟机迁移到没有兼容时间戳计数器(TSC)设置的主机会失败.在这个版本中,尝试这样的迁移会在迁移过程开 ...

  10. OpenWrt支持usb tethering

    OpenWrt支持usb tethering 一.概述 OpenWrt支持usb tethering的应用场景主要是,手机打开usb网络共享(Android)或个人热点(iOS),经过USB的连接,使 ...

最新文章

  1. 解读网络“攻城狮”的发展---老赵带你铺一段路
  2. JAVA-retry 重试
  3. android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例
  4. python自定义函数详解_Python自定义函数
  5. linux下c语言按q退出_Linux C编程之一:Linux下C语言的开发环境
  6. javascript图书
  7. 虚拟化技术知识点初步梳理
  8. android 先拍照后对焦,先拍照后对焦 荣耀6或搭全焦拍摄功能
  9. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  10. HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
  11. 标准控件(二)——Calendar
  12. linux中不同版本的gcc切换,Ubuntu 14.04中升级gcc到版本4.9.2并切换使用它们
  13. matlab报童模型推导,报童模型推导
  14. python条件句格式_python条件语句是什么?条件语句的一般格式是什么样的?
  15. sox处理mp3,使用SoX将mp3文件拆分为TIME秒
  16. 你要悄悄学习3D城市,然后惊艳所有人(1)
  17. SDN学习继续(二)
  18. 免费截图工具PicPick 2.1.2绿色版
  19. python2 x和python3 x_python2.x 和python3.x 哪个比较好?老男孩Python
  20. app与后台通信完整流程

热门文章

  1. 无法安装驱动程序此计算机上不存在,在win7中安装打印机时,如果“找不到打印机驱动程序包所需的核心驱动程序包”怎么办?...
  2. 如何对Pandas DataFrame进行自定义排序
  3. 论文翻译:Dual-path RNN: efficient long sequence modeling for time-domain single-channel speech separatio
  4. 微积分Z2J5 两个重要极限
  5. springboot+vue+elementUI 公司财务固定资产管理系统#毕业设计
  6. 【杂学笔记-表观遗传学-updating】
  7. maker win10有movie_手把手解决win10系统出现windows MovieMaker故障的方法
  8. 带常数项指数函数的非线性回归方法(python实现)
  9. 关于信号发生器的功能和参数介绍(一)
  10. python 曲线拟合 画图+公式