udev 在启动时没有运行规则?

dtm*_*and 5 udev symlink

我有一个非常简单的 udev 规则/etc/udev/rules.d/sdcard.rules

KERNEL=="mmcblk1", SUBSYSTEM=="block", SYMLINK+="sdCARD"
Run Code Online (Sandbox Code Playgroud)

问题是符号链接不是在启动时自动为我创建的。我还有许多其他规则,它们在启动时都可以正常工作(我的符号链接已创建)。

但是,如果我运行它,则会创建符号链接:

udevadm test /block/mmcblk1
Run Code Online (Sandbox Code Playgroud)

这里会发生什么?为什么不是在启动时创建?该设备是否还不能使用?我怎么能查出来?


更新一


udevadm 的输出:

 looking at device '/block/mmcblk1':
    KERNEL=="mmcblk1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="3862528"
    ATTR{stat}=="       9        0       74        0        1        0        8        0        0        0        0"
    ATTR{range}=="8"
    ATTR{discard_alignment}=="0"
    ATTR{force_ro}=="0"
    ATTR{ext_range}=="8"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="0"
    ATTR{capability}=="10"
Run Code Online (Sandbox Code Playgroud)

use*_*.dz 1

将规则文件重命名为:/etc/udev/rules.d/99-sdcard.rules,可能需要在其之前运行一些规则。

  • @dtmland,我认为块设备在 `udevd` 可以捕获它之前添加得太早了。 (2认同)