最全udev简介与使用方法

udev简介与使用方法

1、udev简介

udev 是一个用户空间系统,它使操作系统管理员能够为事件注册用户空间处理程序。udev 守护程序接收的事件主要由 (Linux) 内核生成,以响应与外围设备相关的物理事件。因此,udev的主要目的是对外设检测和热插拔采取行动,包括将控制权返回给内核的操作,udev 可提供所需的基础结构来动态维护 /dev 目录中的设备节点文件和符号链接。udev 规则提供了将外部工具插入内核设备事件处理的方式。

2、使用方法:

信息查询方法:

udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/video2)            //查询节点
udevadm info --attribute-walk --path=$(udevadm info --query=path --path=/sys/class/net/eth0)      //查询路径

2.1 语法:

所选条目有助于描述规则文件的语法。

  1. 注释以 # 符号开头。

  2. 在 udev 规则中使用替换项

    udev 规则支持使用占位符和替换项。请按照在其他任何脚本中的相同方式使用。在 udev 规则中可使用以下替换项:

    • %r$root

      设备目录 /dev(默认)。

    • %p$devpath

      DEVPATH 的值。

    • %k$kernel

      KERNEL 的值或内部设备名称。

    • %n$number

      设备号。

    • %N$tempnode

      设备文件的临时名称。

    • %M$major

      设备的主编号。

    • %m$minor

      设备的次编号。

    • %s{ATTRIBUTE}, $attr{ATTRIBUTE}

      sysfs 属性的值(通过 ATTRIBUTE 指定)。

    • %E{VARIABLE}, $env{VARIABLE}

      环境变量的值(通过 VARIABLE 指定)。

    • %c$result

      PROGRAM 的输出。

    • %%

      % 字符。

    • $$

  3. 规则文件中的每个非注释行都由一个或多个键值对的列表组成,这些键值对由逗号分隔。有两种类型的键:

  • 匹配键
    • ACTION: 匹配事件操作的名称.如 add 或 remove(添加或删除设备时。
    • DEVPATH: 匹配事件设备的开发路径.如 DEVPATH=/bus/pci/drivers/ipw3945,用于搜索与 ipw3945 驱动程序有关的所有事件。
    • KERNEL: 匹配事件设备的名称。
    • KERNELS:让 udev 向上搜索设备路径,以查找匹配的设备名称。
    • SUBSYSTEM: 匹配事件设备的子系统.如 SUBSYSTEM=usb(用于与 USB 设备有关的所有事件)。
    • SUBSYSTEMS: 让 udev 向上搜索设备路径,以查找匹配的设备子系统名称。
    • ENV{KEY}:环境变量的值,如 ENV{ID_BUS}="ieee1394,用于搜索与该 FireWire 总线 ID 有关的所有事件。
    • ATTR{FILENAME}:事件设备的 sysfs 属性。例如,要匹配 vendor 属性文件名中包含的字符串,可以使用 ATTR{vendor}==“On[sS]tream”。
    • ATTRS{FILENAME}:让 udev 向上搜索设备路径,以查找与 sysfs 属性值匹配的设备。
    • TEST{octal mode mask}: 测试文件是否存在。您可以指定八进制模式掩码。
  • 分配键
    • NAME – 用于网络接口的名称。Udev 无法更改设备节点的名称,只能创建其他符号链接.
    • SYMLINK – 面向节点的符号链接的名称
    • OWNER, GROUP, MODE – 设备节点的权限
    • ATTR{KEY}:指定要写入事件设备的 sysfs 属性的值。如果使用 == 运算符,也将使用该键匹配 sysfs 属性的值。
    • ENV{KEY}:告知 udev 将变量导出到环境。如果使用 == 运算符,也将使用该键匹配环境变量。
    • RUN:告知 udev 向程序列表添加要为该设备执行的程序。请记住,将此程序限制于很短的任务,以免妨碍此设备的后续事件。
    • OPTIONS – 规则和设备选项。
  1. 如果所有匹配键都匹配其各自的值,则应用规则并为分配键分配指定的值。每个键都有不同的操作,具体取决于运算符。有效运算符包括:
  • ==:比较相等
  • != : 比较不等式
  • =:为键赋值
  • +=:将值添加到键的当前值中
  • := : 将最终值分配给键。禁止任何后续规则进行任何后续更改。

2.2 udev 使用的文件

  • /sys/

    Linux 内核提供的虚拟文件系统,用于导出所有当前已知设备。此信息由 udev 用于在 /dev 中创建设备节点

  • /dev/

    动态创建的设备节点和使用 systemd-tmpfiles 创建的静态内容。

以下文件和目录包含 udev 基础结构的关键元素:

  • /etc/udev/udev.conf

    主 udev 配置文件。

  • /etc/udev/rules.d/*

    系统特定的 udev 事件匹配规则。可在此处添加自定义规则,以修改或覆盖 /usr/lib/udev/rules.d/* 中的默认规则。文件将以字母数字顺序进行分析。文件中优先级较高的规则将会修改或覆盖优先级较低的规则。数字越小,优先级越高。

  • /usr/lib/udev/rules.d/*

    默认的 udev 事件匹配规则。此目录中的文件由包拥有,将在更新时重写。请勿在此处添加、去除或编辑文件,而是应使用 /etc/udev/rules.d。

  • /usr/lib/udev/*

    从 udev 规则调用的帮助程序。

  • /usr/lib/tmpfiles.d/ 和 /etc/tmpfiles.d/

    负责静态 /dev 内容。

2.3 例子:

1、修改网卡名字

使用

udevadm info --attribute-walk --path=$(udevadm info --query=path --path=/sys/class/net/eth0) 

打印沿着eth0的父设备遍历的所有匹配

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/soc0/soc/2100000.aips-bus/2188000.ethernet/net/eth0':
    KERNEL=="eth0"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{mtu}=="1500"
    ATTR{type}=="1"
    ATTR{netdev_group}=="0"
    ATTR{flags}=="0x1003"
    ATTR{speed}=="1000"
    ATTR{dormant}=="0"
    ATTR{addr_assign_type}=="0"
    ATTR{dev_id}=="0x0"
    ATTR{duplex}=="full"
    ATTR{gro_flush_timeout}=="0"
    ATTR{iflink}=="4"
    ATTR{addr_len}=="6"
    ATTR{address}=="02:0a:17:9f:13:72"
    ATTR{operstate}=="up"
    ATTR{carrier_changes}=="1"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{tx_queue_len}=="1000"
    ATTR{dev_port}=="0"
    ATTR{ifalias}==""
    ATTR{ifindex}=="4"
    ATTR{link_mode}=="0"
    ATTR{carrier}=="1"

  looking at parent device '/devices/soc0/soc/2100000.aips-bus/2188000.ethernet':
    KERNELS=="2188000.ethernet"
    SUBSYSTEMS=="platform"
    DRIVERS=="fec"
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/soc0/soc/2100000.aips-bus':
    KERNELS=="2100000.aips-bus"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/soc0/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/soc0':
    KERNELS=="soc0"
    SUBSYSTEMS=="soc"
    DRIVERS==""
    ATTRS{revision}=="1.5"
    ATTRS{machine}=="Freescale i.MX6 Quad SABRE Smart Device Board"
    ATTRS{family}=="Freescale i.MX"
    ATTRS{soc_id}=="i.MX6Q"

为了可以修改eth0的名字,我们可以从中选取几个规则:

创建

/etc/udev/rules.d/11-fixed.rules

文件,加入下面代码:

KERNEL=="eth0", SUBSYSTEM=="net", SUBSYSTEMS=="platform", DRIVERS=="fec", NAME+="eth10"

保存之后,使用

udevadm trigger

命令或者重启,可以看到网卡名字已经被修改了

udevd[214]: starting version 3.1.5
[    5.395399] random: udevd urandom read with 38 bits of entropy available
[    5.620584] fec 2188000.ethernet eth10: renamed from eth0

root@imx6qsabresd:~# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0e:c6:87:72:01  
          UP BROADCAST MULTICAST DYNAMIC  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth10     Link encap:Ethernet  HWaddr 02:0a:17:9f:13:72  
          inet6 addr: fe80::a:17ff:fe9f:1372/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST DYNAMIC  MTU:1500  Metric:1
          RX packets:49 errors:0 dropped:1 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7689 (7.5 KiB)  TX bytes:5280 (5.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

2、创建符号链接

使用

udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/ttyUSB4)

打印沿着ttysUSB4的父设备遍历的所有匹配

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB4/tty/ttyUSB4':
    KERNEL=="ttyUSB4"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB4':
    KERNELS=="ttyUSB4"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ch341-uart"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2/2-1.2:1.0':
    KERNELS=="2-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="ch341"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"

  looking at parent device '/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2':
    KERNELS=="2-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="1a86"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="4"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="98mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0264"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="20"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="7523"
    ATTRS{bDeviceClass}=="ff"
    ATTRS{product}=="USB Serial"

为了可以将ttyUSB4链接到ttyUSB5,我们可以从中选取几个规则:

创建

/etc/udev/rules.d/12-usb.rules

文件,加入下面代码:

KERNEL=="ttyUSB4", SUBSYSTEM=="tty",  SUBSYSTEMS=="usb-serial", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777, SYMLINK+="ttyUSB5"

保存之后,使用

udevadm trigger

命令或者重启,可以看到ttyUSB5 链接到了ttyUSB4

root@imx6qsabresd:~# ls -l /dev/ttyUSB5
lrwxrwxrwx 1 root root 7 Jun 20 18:51 /dev/ttyUSB5 -> ttyUSB4

3、利用规则运行特定脚本

该方式主要是在热插拔时执行特定脚本

使用

udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/sda1)

打印沿着sda1的父设备遍历的所有匹配

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda1':
    KERNEL=="sda1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="3072000"
    ATTR{stat}=="      60        5     4155      280        0        0        0        0        0      140      280"
    ATTR{partition}=="1"
    ATTR{start}=="102400"
    ATTR{discard_alignment}=="0"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda':
    KERNELS=="sda"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{ro}=="0"
    ATTRS{size}=="31116288"
    ATTRS{stat}=="     165       18    10422      840        0        0        0        0        0      370      840"
    ATTRS{range}=="16"
    ATTRS{discard_alignment}=="0"
    ATTRS{events}=="media_change"
    ATTRS{ext_range}=="256"
    ATTRS{events_poll_msecs}=="-1"
    ATTRS{alignment_offset}=="0"
    ATTRS{inflight}=="       0        0"
    ATTRS{removable}=="1"
    ATTRS{capability}=="51"
    ATTRS{events_async}==""

为了可以挂载sd设备,我们可以从中选取几个规则:

创建

/etc/udev/rules.d/13-sd.rules

文件,加入下面代码:

ACTION=="add",KERNEL=="sd[a-z][0-9]",RUN+="/etc/mount-sd.sh %k"     //%k、$kernel,KERNEL 的值或内部设备名称。

ACTION=="remove",KERNEL=="sd[a-z][0-9]",RUN+="/etc/umount-sd.sh %k"

保存之后,使用

udevadm trigger

命令或者重启,发现对应脚本已经运行

/etc/mount-sd.sh脚本内容:

#!/bin/sh
mkdir -p media/$1                    //创建/media/sdxx 文件夹
mount /dev/$1 /media/$1               //挂载存储设备
sync

/etc/umount-sd.sh脚本内容:

#!/bin/sh
umount /media/$1                    //取消挂载
rm /media/$1 -rf                    //删除文件夹
sync

4、查询设备信息

使用

udevadm info /dev/ttyUSB4

查询关于ttyUSB4相关的设备信息

root@imx6qsabresd:~# udevadm info /dev/ttyUSB4 
P: /devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB4/tty/ttyUSB4
N: ttyUSB4
S: serial/by-id/usb-1a86_USB_Serial-if00-port0
S: serial/by-path/platform-ci_hdrc.1-usb-0:1.2:1.0-port0
S: ttyUSB5
E: DEVLINKS=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 /dev/serial/by-path/platform-ci_hdrc.1-usb-0:1.2:1.0-port0 /dev/ttyUSB5
E: DEVNAME=/dev/ttyUSB4
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB4/tty/ttyUSB4
E: ID_BUS=usb
E: ID_MODEL=USB_Serial
E: ID_MODEL_ENC=USB\x20Serial
E: ID_MODEL_ID=7523
E: ID_PATH=platform-ci_hdrc.1-usb-0:1.2:1.0
E: ID_PATH_TAG=platform-ci_hdrc_1-usb-0_1_2_1_0
E: ID_REVISION=0264
E: ID_SERIAL=1a86_USB_Serial
E: ID_TYPE=generic
E: ID_USB_DRIVER=ch341
E: ID_USB_INTERFACES=:ff0102:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=1a86
E: ID_VENDOR_ENC=1a86
E: ID_VENDOR_ID=1a86
E: MAJOR=188
E: MINOR=4
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=5982939

5、 使用udevadm监视器命令,可以实时点击udev,并查看当插入不同设备时它看到的内容,程序 udevadm monitor 可以用于将驱动程序核心事件和 udev 事件处理的计时可视化

udevadm monitor

监视功能为以下各项打印收到的事件:

  • UDEV:规则处理后 udev 发出的事件
  • 内核:内核uevent

拔u盘

KERNEL[15625.254668] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0 (scsi_device)
KERNEL[15625.254875] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (scsi_disk)
KERNEL[15625.270971] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda2 (block)
KERNEL[15625.271741] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda1 (block)
KERNEL[15625.272426] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda (block)
KERNEL[15625.272718] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0 (scsi)
KERNEL[15625.272958] remove   /devices/virtual/bdi/8:0 (bdi)
KERNEL[15625.273172] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0 (scsi)
KERNEL[15625.273447] remove   /devices/s[15625.356130] FAT-fs (sda2): FAT read failed (blocknr 5514)
oc0/soc/2100000.aips-bus/2184000.[15625.356137] FAT-fs (sda1): FAT read failed (blocknr 32)
usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/scsi_host/host2 (scsi_host)
KERNEL[15625.273734] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2 (scsi)
KERNEL[15625.273926] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[15625.274747] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1 (usb)
UDEV  [15625.331242] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (scsi_disk)
UDEV  [15625.331400] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0 (scsi_device)
UDEV  [15625.334157] remove   /devices/virtual/bdi/8:0 (bdi)
UDEV  [15625.334694] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/scsi_host/host2 (scsi_host)
UDEV  [15625.515462] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda2 (block)
UDEV  [15625.518099] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda1 (block)
UDEV  [15625.586140] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda (block)
UDEV  [15625.586507] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0 (scsi)
UDEV  [15625.586785] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2/target2:0:0 (scsi)
UDEV  [15625.587036] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host2 (scsi)
UDEV  [15625.587314] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [15625.587952] remove   /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1 (usb)

插u盘

[15686.653687] usb 1-1: new high-speed USB device number 6 using ci_hdrc
KERNEL[15686.807514] add      /de[15686.811589] usb-storage 1-1:1.0: USB Mass Storage device detected
vices/soc0/soc/2100000.aips-bus/2[15686.820849] scsi host4: usb-storage 1-1:1.0
184000.usb/ci_hdrc.0/usb1/1-1 (usb)
KERNEL[15686.807890] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[15686.825639] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4 (scsi)
KERNEL[15686.826013] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/scsi_host/host4 (scsi_host)
UDEV  [15686.881234] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1 (usb)
UDEV  [15686.885282] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [15686.887995] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4 (scsi)
UDEV  [15686.889568] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/scsi_host/host4 (scsi_host)
[15687.825597] scsi 4:0:0:0: Direct-Access     Generic  MassStorageClass 1536 PQ: 0 ANSI: 6
KERNEL[15687.830984] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0 (scsi)
KERNEL[15687.831559] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[15687.832063] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
KERNEL[15687.832631] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
UDEV  [15687.833333] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0 (scsi)
UDEV  [15687.834597] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
UDEV  [15687.838256] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
UDEV  [15687.840878] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
[15688.152011] sd 4:0:0:0: [sda] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB)
[15688.161096] sd 4:0:0:0: [sda] Write Protect is off
[15688.168232] sd 4:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
KERNEL[15688.175155] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [15688.176855] add      /devices/virtual/bdi/8:0 (bdi)
[15688.188956]  sda: sda1 sda2
KERNEL[15688.191736] add      /devices/soc0/soc/2100000.aips-bus/[15688.200237] sd 4:0:0:0: [sda] Attached SCSI removable disk
2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda (block)
KERNEL[15688.191965] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
KERNEL[15688.192159] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
UDEV  [15688.335984] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda (block)
[15688.557464] FAT-fs (sda2): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[15688.635874] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
UDEV  [15688.678727] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
UDEV  [15688.733982] add      /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极……星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值