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 行,前两行是您所关心的:NAME
和HCTL
。NAME
表示驱动器名称(如sda
),HCTL
表示总线 ID(如2:0:0:0
)。
现在在查找时使用此总线 IDudevadm
udevadm info --path=/sys/bus/scsi/devices/[bus ID] -a
当我这样做时,输出组之一是针对像您的/devices/vbd-768/block/xvda
以及ATTRS
.您在此处指定的路径似乎仅适用于驱动器信息的子集。