简单的 udev 规则无法通过 uuid 识别我的驱动器

简单的 udev 规则无法通过 uuid 识别我的驱动器

我在让 udev 通过 uuid 识别驱动器时遇到了困难。我将用一个更简单的问题版本来概述这个问题。如果我尝试这个简单的规则(在 /etc/udev/rules.d/50-backupdrive.rules 中):

ENV{ID_FS_UUID}=="8eddab0f-de61-4220-bc7f-749665c40758", RUN +="/usr/bin/logger udev rule success, drive: %k with uuid $env{ID_FS_UUID}"

并且我插入了包含该 uuid 的分区的 USB 驱动器,但没有看到预期输出到 /var/log/syslog 的消息。

但是,如果我运行以下更通用的命令:

KERNEL=="sd?[0-9]",RUN +="/usr/bin/logger udev rule success, drive: %k with uuid $env{ID_FS_UUID}"

我确实看到了输出到 /var/log 的文本:

4 月 22 日 18:06:35 xxxxxx root:udev 规则成功,驱动器:sdd2,uuid 为 8eddab0f-de61-4220-bc7f-749665c40758

这包括 uuid,因此 uuid 肯定是正确的。此外,这也证实了 udev 也一定在正常工作。

有人知道可能发生了什么吗?我搜索了这些论坛,但没有找到与我的问题相关的内容 :-(。谢谢!

更多细节可能有帮助:

运行:udevadm info /dev/sdd2返回([...]表示省略的文本):

P:/设备/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host12/target12:0:0/12:0:0:0/block/sdd/sdd2
N:sdd2
S:磁盘/按 ID/ata-ST1000LM024_HN-M101MBB_S30CJ9CF767710-part2
S:磁盘/by-id/wwn-0x50004cf20d9dfd11-part2
S:磁盘/按路径/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0-part2
S:磁盘/by-uuid/8eddab0f-de61-4220-bc7f-749665c40758
E:DEVLINKS = / dev /磁盘/by-id/wwn-0x50004cf20d9dfd11-part2 / dev /磁盘/by-uuid/8eddab0f-de61-4220-bc7f-749665c40758 / dev /磁盘/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0-part2 / dev /磁盘/by-id/ata-ST1000LM024_HN-M101MBB_S30CJ9CF767710-part2
E: DEVNAME=/dev/sdd2
E:DEVPATH = /设备/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host12/target12:0:0/12:0:0:0/block/sdd/sdd2
E:DEVTYPE=分区
[...]
E: ID_FS_TYPE=ext4
E:ID_FS_USAGE=文件系统
E: ID_FS_UUID=8eddab0f-de61-4220-bc7f-749665c40758

另外,当我插入 USB 驱动器时,dmesg显示内容为:

[551.257166]sd 12:0:0:0:附加 scsi 通用 sg4 类型 0
[ 551.257410] sd 12:0:0:0:[sdd] 启动磁盘...
[ 552.260087] ..准备好了
[ 553.264377] sd 12:0:0:0:[sdd] 1953525167 512 字节逻辑块:(1.00 TB/932 GiB)
[ 553.264382] sd 12:0:0:0: [sdd] 2048 字节物理块
[ 553.438972] sd 12:0:0:0: [sdd] 写保护已关闭
[553.438979]sd 12:0:0:0:[sdd] 模式感知:4f 00 00 00
[ 553.439367] sd 12:0:0:0:[sdd] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA
[553.450360]sdd:sdd1sdd2
[ 553.452429] sd 12:0:0:0:[sdd] 连接的 SCSI 磁盘

最后fdisk -l得到:

磁盘 /dev/sdd:931.5 GiB,1000204885504 字节,1953525167 个扇区
单位:扇区 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0x709da5d9

设备启动开始结束扇区大小ID类型
/dev/sdd1 2048 102402047 102400000 48.8G b W95 FAT32
/dev/sdd2 102402048 1953523711 1851121664 882.7G 83 Linux

答案1

你需要运行你的规则首先学习UUID的内置规则。

例如,我的是 /etc/udev.rules/30-foo.rules,但将其更改为“zz-foo.rules”效果很好,因为它保证在所有规则末尾运行:

udevadm test /devices/pci0000:00/0000:00:16.2/usb3/3-4/3-4:1.0/host13/target13:0:0/13:0:0:0/block/sde/sde1
(snip)
run: '/usr/bin/logger udev rule success, drive: sde1 with uuid 456bBLAH-3399-4fec-a304-BLAH388e2bc3'
(snip)

通过阅读找到了答案 在 udev 规则中使用 UUID 并将 USB 驱动器挂载在 /media/$UUID 上

相关内容