当前位置: 首页 > news >正文

八、热插拔

一、概述

  1. udev设备文件系统,基于netlink-socket,用户态监听内核发出的uevent事件处理设备的插入和拔出
  2. mdev设备文件系统,是udev的轻量级,基于uevent_helper,内态调用用户注册的回调函数处理设备的插入和拔出
  3. udevadm monitor监听uevent事件
  4. netlink的用户态实现参开socket,但是没有bind函数
  5. usbmount可以配合udev实现U盘的自动挂载,文件系统中添加该工具即可

二、关键结构体和API

// 内核发送一个事件,对应的kobj必须有对应的kset
int kobject_uevent(struct kobject *kobj, enum kobject_action action);
// kset中的uevent_ops成员对发送的uevent进行操作
struct kset_uevent_ops {int (* const filter)(struct kset *kset, struct kobject *kobj);            // 对kset的kobject进行过滤const char *(* const name)(struct kset *kset, struct kobject *kobj);      // 获得kset的kobject的nameint (* const uevent)(struct kset *kset, struct kobject *kobj,        struct kobj_uevent_env *env);                                   // 设置env
};
// kobject_uevent函数关于udev监听的重要函数
kobject_uevent_net_broadcast      // 该函数广播uevent
// kobject_uevent函数关于mdev的重要函数
call_usermodehelper_setup         // 启动一个用户空间进程

三、使用udev自动挂载

  1. 配置文件系统,/dev/management (Dynamic using devtmpfs+eudev)
  2. 添加规则文件/etc/udev/rules.d/001.rules
  3. 实现规则文件和其配套文件,参数sd对应U盘,参数mmcblk对应SD卡
KERNEL=="sd[a-z][0-9]", SUBSYSTEM=="block", ACTION=="add", RUN+="/etc/udev/rules.d/usb/usb-add.sh %k" SUBSYSTEM=="block", ACTION=="remove", RUN+="/etc/udev/rules.d/usb/usb-remove.sh"
  1. 挂载脚本
#!/bin/sh
/bin/mount -t vfat /dev/$1 /mnt
sync
  1. 卸载脚本
#!/bin/sh
sync
/bin/umount -l /mnt

四、使用mdev自动挂载

  1. 配置文件系统,/dev/management (Dynamic using devtmpfs+mdev)
  2. 配置busybox的mdev
  3. 添加规则文件/etc/mdev.conf,,参数sd对应U盘,参数mmcblk对应SD卡
  4. 添加规则
sd[a-z][0-9] 0:0 666 @/etc/mdev/usb_insert.sh
sd[a-z] 0:0 666 $/etc/mdev/usb_remove.sh
  1. 挂载脚本
#!/bin/sh
if [ -d /sys/block/*/$MDEV ]; then
mount /dev/$MDEV /mnt
sync
fi
  1. 卸载脚本
#!/bin/sh
sync
/bin/umount -l /mnt
http://www.gsyq.cn/news/62028.html

相关文章:

  • [LangChain] 23. 回调机制
  • 一文入门 LangChain 开发
  • Scrum冲刺阶段 Day Three
  • 深入解析:MTK5G旗舰系列——天玑9500/9400/9300/9200/9000在AI和处理器性能、DDR频率及UFS的深度对比分析
  • the badness of USA
  • 完整教程:内核里常用宏BUG_ON/WARN_ON/WARN_ONCE
  • Agent编写全攻略(超详细)从零基础到精通,一篇搞定,不看后悔,赶紧收藏!
  • 动态规划可能性展开
  • Day3-20251126
  • SCTimer/PWM定时器(续二)
  • QT TCP服务器构建及网络通信实现 - 详解
  • 自指自洽即因果,可知可行,很烦很好
  • 2025年11月二代木塑地板厂家,防水木塑地板厂家,环保木塑地板厂家推荐:无醛环保认证品牌盘点
  • 11月26日日记
  • 3D scanning with structured light(使用结构光进行三维扫描)
  • 求导幂法则 - ukyo-
  • web框架——flask-异常处理/全局钩子/jinja2引擎
  • 2025年秋招-华为-11月19号开发岗
  • 求导幂法则, - ukyo-
  • VMware虚拟机Ubuntu系统问题集
  • 从文件结构、索引、信息更新、版本控制等全面对比Apache hudi和Apache paimon
  • 考前复习1
  • 开发指南
  • 项目启动
  • 2025-11-26
  • 2025年11月砝码,无磁不锈钢砝码,定制砝码厂家推荐:行业权威盘点与品质红榜发布
  • 2025年11月不锈钢砝码,无磁不锈钢砝码,挂钩砝码厂家推荐,高精度与可靠性兼具的优质品牌
  • 上下文无关文法序列
  • ARCGIS Pro 绘图技巧——水文站的尖尖垂直于河流的水流方向
  • 优美的字符串