Linux|centos操作系统|USB设备的驱动如何寻找和USB设置的自动挂载,卸载(备忘)

仅做一个记录,Linux命令实在太多了,有些比较有趣的命令还是需要记录一下哈

1,

usb-devices命令

该命令会打印输出现有机器上所有的USB设备,此命令等同于cat /sys/kernel/debug/usb/devices

其中部分输出如下:


T:  Bus=02 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=2717 ProdID=503a Rev=02.05
S:  Manufacturer=Telink
S:  Product=Xiaomi Wireless Mouse Lite 2
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=50mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhidT:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=b711 Rev=02.00
S:  Manufacturer=Realtek
S:  Product=802.11n WLAN Adapter
S:  SerialNumber=00E04CB82101
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8710bu

关键信息解读:

Product=Xiaomi Wireless Mouse Lite 2  小米无线鼠标

Vendor=2717 ProdID=503a Rev=02.05  2717 设备编号,503a 生产编号

下面的就不用说了,802.11n WLAN Adapter  表示此USB是一个网卡,当然了,此网卡驱动是已经安装好的才会这样显示

2,

lsusb 命令

该命令是软件包usbutils内的一个命令,主要是打印输出机器目前在用的USB设备, 参数tv 表示详细层级输出

例如,只简单显示在用的USB设备:

串行总线 只有001 002  003 ,表示只有三个USB设备

[root@control-plane ~]# lsusb
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 2717:503a  
Bus 002 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0bda:b711 Realtek Semiconductor Corp. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

详细层级输出在用的USB设备:

和上面的输出互相印证了,确实是三个USB设备,并且最后一个网卡已经被Linux正确识别了,如果没识别,driver将是usb-storage

[root@control-plane ~]# lsusb -tv
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtl8710bu, 480M

3,

udevadm

usb设备监控程序,检测USB设备是否插入或者拔出

常用形式是udevadm monitor --property ,此时USB设备的插拔将会实时显示,并且给出详细的信息,上面两个命令的所有信息一并给出

例如,插入一个无线USB鼠标接受端,可以看到内核的挂载动作,比如挂载到目录/dev/bus/usb/002/003, 生产序号 PRODUCT=3/2717/503a/111

[root@control-plane ~]# udevadm monitor --property
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel ueventKERNEL[215.228496] add      /devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1 (usb)
ACTION=add
BUSNUM=002
DEVNAME=/dev/bus/usb/002/003
DEVNUM=003
DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1
DEVTYPE=usb_device
MAJOR=189
MINOR=130
PRODUCT=2717/503a/205
SEQNUM=3730
SUBSYSTEM=usb
TYPE=0/0/0KERNEL[215.230646] add      /devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0
DEVTYPE=usb_interface
INTERFACE=3/1/2
MODALIAS=usb:v2717p503Ad0205dc00dsc00dp00ic03isc01ip02in00
PRODUCT=2717/503a/205
SEQNUM=3731
SUBSYSTEM=usb
TYPE=0/0/0KERNEL[215.237769] add      /devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:2717:503A.0001 (hid)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:2717:503A.0001
HID_ID=0003:00002717:0000503A
HID_NAME=Telink Xiaomi Wireless Mouse Lite 2
HID_PHYS=usb-0000:06:00.0-1.1/input0
MODALIAS=hid:b0003g0001v00002717p0000503A
SEQNUM=3732
SUBSYSTEM=hid

此命令在USB设备驱动没有安装的时候,可以配合lsusb命令来查询该usb设备的具体型号,从而得到正确的usb驱动

4,

查询设备挂载详情

例如LVM的其中一个分区详情,其它种类查询没有太多意义,就不举例了,比如

  1. udevadm info --query=path --name=sda 查看sda的path

  2. udevadm info --attribute-walk --name=/dev/nvme0n1  查看nvme0n1的所有父设备一直到sysfs的根节点

[root@control-plane ~]# udevadm info --query=all --name=dm-2
P: /devices/virtual/block/dm-2
N: dm-2
S: centos/home
S: disk/by-id/dm-name-centos-home
S: disk/by-id/dm-uuid-LVM-PyGUtcJjQsvFN7OXScUCZk0CoWW1k02S96xuWxV0OJE6rbqgWHaBMLGZAlh0rifi
S: disk/by-uuid/111780e4-2780-4497-9214-25d845cefb7c
S: mapper/centos-home
E: DEVLINKS=/dev/centos/home /dev/disk/by-id/dm-name-centos-home /dev/disk/by-id/dm-uuid-LVM-PyGUtcJjQsvFN7OXScUCZk0CoWW1k02S96xuWxV0OJE6rbqgWHaBMLGZAlh0rifi /dev/disk/by-uuid/111780e4-2780-4497-9214-25d845cefb7c /dev/mapper/centos-home
E: DEVNAME=/dev/dm-2
E: DEVPATH=/devices/virtual/block/dm-2
E: DEVTYPE=disk
E: DM_ACTIVATION=1
E: DM_LV_NAME=home
E: DM_NAME=centos-home
E: DM_SUSPENDED=0
E: DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG=1
E: DM_UDEV_PRIMARY_SOURCE_FLAG=1
E: DM_UDEV_RULES_VSN=2
E: DM_UUID=LVM-PyGUtcJjQsvFN7OXScUCZk0CoWW1k02S96xuWxV0OJE6rbqgWHaBMLGZAlh0rifi
E: DM_VG_NAME=centos
E: ID_FS_TYPE=xfs
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=111780e4-2780-4497-9214-25d845cefb7c
E: ID_FS_UUID_ENC=111780e4-2780-4497-9214-25d845cefb7c
E: MAJOR=253
E: MINOR=2
E: MPATH_SBIN_PATH=/sbin
E: SUBSYSTEM=block
E: TAGS=:systemd:
E: USEC_INITIALIZED=96943

查看小米的无线USB鼠标 


[root@control-plane ~]# ls /dev/h
hidraw0    hpet       hugepages/ hwrng      
[root@control-plane ~]# ls /dev/hidraw0 
/dev/hidraw0[root@control-plane ~]# udevadm info --query=all --name=hidraw0
P: /devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:2717:503A.0001/hidraw/hidraw0
N: hidraw0
E: DEVNAME=/dev/hidraw0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:2717:503A.0001/hidraw/hidraw0
E: ID_BUS=usb
E: ID_MODEL=Xiaomi_Wireless_Mouse_Lite_2
E: ID_MODEL_ENC=Xiaomi\x20Wireless\x20Mouse\x20Lite\x202
E: ID_MODEL_ID=503a
E: ID_REVISION=0205
E: ID_SERIAL=Telink_Xiaomi_Wireless_Mouse_Lite_2
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030102:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Telink
E: ID_VENDOR_ENC=Telink
E: ID_VENDOR_ID=2717
E: MAJOR=245
E: MINOR=0
E: SUBSYSTEM=hidraw
E: USEC_INITIALIZED=215290694

 

5,

USB设备的自动卸载和挂载

例如,网卡的自动挂载:

[root@control-plane ~]# cat /etc/udev/rules.d/70-persistent-ipoib.rules 
# This is a sample udev rules file that demonstrates how to get udev to
# set the name of IPoIB interfaces to whatever you wish.  There is a
# 16 character limit on network device names though, so don't go too nuts
#
# Important items to note: ATTR{type}=="32" is IPoIB interfaces, and the
# ATTR{address} match must start with ?* and only reference the last 8
# bytes of the address or else the address might not match on any given
# start of the IPoIB stack
#
# Note: as of rhel7, udev is case sensitive on the address field match
# and all addresses need to be in lower case.
#
# ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib3"ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="1a2b", RUN+="/bin/bash -c 'modprobe 8188gu && echo 0bda 1a2b > /sys/bus/usb-serial/drivers/option1/new_id'"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="1a2b", RUN+="/bin/bash -c 'modprobe 8188gu && echo 0bda 1a2b > /sys/bus/usb-serial/drivers/option1/new_id'"

那么,卸载如何写呢?

ACTION=="remove",KERNELS=="*:0:0:1",ATTRS{idVendor}=="05e3",ATTRS{idProduct}=="0716",RUN+="/bin/umount -l /opt/usb_sd1_1"

我想这个应该是可以算作禁用特定USB设备吧,当然了,先自动挂载,指定挂载点,然后在卸载就等于禁用了嘛

拔出的时候有个PRODUCT ,它是 idVendor 和 idProduct 值的一个组合,可以使用它来区分不同的设备。最终就可以正常卸载设备了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么提升数据分析能力?——功法篇(下)

先来复习一下上篇提到的3个疑问: 为什么我做出来的分析总觉得没有别人的那么高级? 老板为什么总说我的分析“太浅了”? 数据分析师每天的工作就是取数做需求? 看完上篇讲的金字塔原理,如果你还有疑问,不妨再…

【江科大】STM32:TIM输入捕获(理论部分)

文章目录 IC(Input Capture)输入捕获PWM频率 知识点补充1. 滤波器的工作原理:2. 边沿检测器:自动化清零CNT输入捕获的基本结构PWMI基本结构滤波器和分频器的区别误差分析pwm.cmain.cIC.c PWM模式测频率和占空比 IC(Inp…

手机备忘录设置提醒后不通知怎么办 解决方法来了

在这个快节奏的时代,我们每个人都像是旋转的陀螺,总有无数的事项需要记录。手机备忘录,无疑成为了我们的得力助手。它轻便、简单,随时随地都能捕捉那些一闪而过的灵感和任务。 然而,有时我们会遇到这样的困扰&#xf…

部署开源的团队协作工具

简介 Zulip 是一个开源的团队协作工具,拥有独特的基于主题的线程功能,结合了电子邮件和聊天的优点,使远程工作更加高效和愉快。它是唯一设计用于实时和异步对话的现代团队聊天应用程序。其核心优势包括: 适用于大型企业、领先的开…

CSS的浮动(float)布局效果

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>浮动(float)布局效果</title> <style> *{ margin: 0; padding: 0; box-sizing: border-box; } /*.box1{ width: 300px; height: 300px; background-colo…

react后端开发:如何根据特定ID创建新的用户信息?

以音乐app开发为例&#xff0c;我们想要在想要创建新的唱片库&#xff0c;就需要使用Post连接服务器端新建唱片ID&#xff0c;并在该ID处插入唱片信息。怎么做呢&#xff1f; 使用create同时创建id和唱片信息 existingAlbum await Album.create({ _id: albumId, ...albumDat…

Django入门,十分钟学会登录网页

我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装&#xff0c;且安装的是哪个版本&#xff0c;通过在命令提示行输入命令 cmd黑窗口运行&#xff0c;不懂cmd百度一下 python -m django --version 如果没出现版本&#xff0c;就是没安装&#xff0c;那么用pip安装…

《WebKit 技术内幕》学习之十(2): 插件与JavaScript扩展

2 Chromium PPAPI插件 2.1 原理 插件其实是一种统称&#xff0c;表示一些动态库&#xff0c;这些动态库根据定义的一些标准接口可以跟浏览器进行交互&#xff0c;至于这个标准接口是什么都可以&#xff0c;重要的是大家都遵循它们&#xff0c;NPAPI接口标准只是其中的一种&a…

C语言第六弹---分支语句(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符&#xff1a;&& , || , &#xff01;4.1、 逻辑取反运算符 &#xff01;4.2、 与运算符4.3、 或运算符4.4、 练习&#xff1a;闰…

vue3.0规范学习记录

组合式函数使用usename进行命名&#xff0c;例如useMouse&#xff1b; 自定义指令使用v name进行命名&#xff0c;例如vFocus&#xff1b; 在组件使用v-model实现“双向绑定”时&#xff0c;子组件默认通过emits(‘update:modelValue’, params)触发更新&#xff1b; setup…

灵眸边缘计算产品学习

EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com) 产品简介 支持4路1080P30fps视频流采集&#xff0c;四核CPU1.5GHz与2Tops AI边缘算力能力。集成有以太网、Wi-Fi、4G等网络通信外设&#xff1b;RS232、RS485、UART等本地通信接口。HDMI显示屏接口、音频输入输出等交互…

[计算机网络]基本概念

目录 1.ip地址和端口号 1.1IP地址 1.2端口号 2.认识协议 2.1概念&#xff1a; 2.2知名协议的默认端口 3.五元组 4.协议分层 4.1分层的作用 4.2OSI七层模型 4.3TCP/IP五层&#xff08;四层&#xff09;模型 ​编辑4.4网络设备对应的分层&#xff1a; ​编辑以下为跨…

TestNG中的@AfterSuite注释

目录 什么是AfterSuite annotation&#xff1f; 代码示例 是时候来点头脑风暴了 我们可以在一个类中使用多个AfterSuite注释方法吗&#xff1f; AfterSuite放在超类上时如何工作&#xff1f; TestNG是Java中广泛使用的测试框架&#xff0c;用于进行单元&#xff0c;功能和…

大数据开发之Spark(入门)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

CSS实现文本和图片无限滚动动画

Demo图如下&#xff1a; <style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: Poppins, sans-serif;}body {min-height: 100vh;background-color: rgb(11, 11, 11);color: #fff;display: flex;flex-direction: column;justify-content: center;align-i…

Python无人系统

Python无人系统全方位自动坦克在现代军事中具有重要性。以下是几个重要原因&#xff1a; 自动化作战能力&#xff1a;Python无人系统全方位自动坦克能够在没有人类干预的情况下进行作战。它可以通过计算机视觉、传感器和算法来自主地感知环境、分析情报&#xff0c;制定战术和执…

Vision Mamba:将Mamba应用于计算机视觉任务的新模型

Mamba是LLM的一种新架构&#xff0c;与Transformers等传统模型相比&#xff0c;它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域&#xff0c;让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirec…

Kubernetes operator(一)client-go篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第一篇&#xff0c;主要对client-go进行学习&#xff0c;从源码阅读角度&#xff0c;学习client-go各个组件的实现原理、如何协同工作等参考视频&#xff1a;Bilibili 2022年最新k…

程序员裁员潮:技术变革下的职业危机

程序员裁员潮&#xff1a;技术变革下的职业危机 一对来自中国的工程师夫妻在美身亡&#xff0c;疑因谷歌裁员致悲剧发生。在技术变革下&#xff0c;裁员对于程序员的影响到底有多大&#xff1f;快来和我们分享一下你的看法吧~ 哎&#xff0c;这是悲哀&#xff0c;让我又想起来…

pod的亲和性和反亲和性

pod的亲和性和反亲和性 调度策略&#xff1a; 匹配标签 操作符 拓扑域 调度目标 node的亲和性 主机标签 In Notin exists doesexists Gt Lt 不支持 指定主机 pod的亲和性 pod的标签 In Notin exists doesexists 支持 pod和指…