udev 中不可用的属性

udev 中不可用的属性

ATTRS{*}我正在尝试为 USB 设备编写 udev 规则,但是在匹配规则中的属性时遇到问题。使用 进行一些调试后udevadm info,我发现我的设备都没有显示任何属性。

当我udevadm info -a在 Linux 服务器上运行根卷时,我得到以下信息:

  looking at device '/devices/vbd-768/block/xvda':
    KERNEL=="xvda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="83886080"
    ATTR{stat}=="  717683    43803 15924796   381200  8002096  5757360 169243664  6994333        0   635530  7372343"
    ATTR{range}=="16"
    ATTR{discard_alignment}=="0"
    ATTR{ext_range}=="16"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="0"
    ATTR{capability}=="10"

但是,当我在笔记本电脑上运行它时,我得到以下信息:

  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""

任何设备都会发生这种情况。我似乎无法获取ATTR{*}系统上任何设备的变量。可能是什么原因导致此问题?

注意:我正在运行 Arch Linux,股票内核,截至本文为止是最新的。

答案1

我想知道您正在查看 中的正确条目udevadm

/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda你在笔记本电脑上访问,这和/devices/vbd-768/block/xvda在服务器上访问有很大不同。

如果您对磁盘感兴趣,我建议您通过总线 ID 查找。


您可以使用 查找磁盘的总线 ID lsblk -S。应该有 7 行,前两行是您所关心的:NAMEHCTLNAME表示驱动器名称(如sda),HCTL表示总线 ID(如2:0:0:0)。

现在在查找时使用此总线 IDudevadm

udevadm info --path=/sys/bus/scsi/devices/[bus ID] -a


当我这样做时,输出组之一是针对像您的/devices/vbd-768/block/xvda以及ATTRS.您在此处指定的路径似乎仅适用于驱动器信息的子集。

相关内容