我在让 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)