为什么 udev 规则在 `DEVPATH=="/kernel"` 上不起作用?

为什么 udev 规则在 `DEVPATH=="/kernel"` 上不起作用?

我正在使用文件测试 udev 规则/etc/udev/rules.d/10-test.rules

这行:

DEVPATH=="/devices/system/node/node0", ATTR{hugepages/hugepages-1048576kB/nr_hugepages}="4"

使/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages成为4

但这行:

DEVPATH=="/kernel/mm", ATTR{hugepages/hugepages-1048576kB/nr_hugepages}="4"

不影响/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

这行也没有:

DEVPATH=="/kernel", ATTR{mm/hugepages/hugepages-1048576kB/nr_hugepages}="4"

(即使重启也不起作用。)

为什么?

答案1

/sys/devices/system/node/node0代表一个 NUMA 硬件节点,它可以接受命令以独立于系统的其余部分进入离线状态。所以它可以作为主题udev事件,它可以根据udev规则

/sys/kernel/mm代表不特定的硬件:它只是内核的一般内存管理参数的地方。它在内核启动时就存在并且无法消失,因此不会有 udev 事件引用它。并且当没有udev事件时,无法触发udev规则。

或者,您可以说只有下面的事物/sys/devices才能具有与其关联的 udev 规则。/sys/kernel不下/sys/devices

使用 udev 规则来操作一般内存管理参数是相当不寻常的。/etc/sysctl.conf[.d]将是定制它们的更标准的地方。

相关内容