使用 udev 规则在内核模块加载和卸载上创建和删除设备节点

using udev rules create and remove device node on a kernel module load and unload

试图找出当我插入特定内核模块时可以自动创建设备节点并在删除内核模块时删除设备节点的 udev 规则。

你必须了解 udev 的工作原理

尝试添加脚本:

cat >/path/to/myscript  <<"eof"
#!/bin/sh

newfile=`mktemp /tmp/udev-test-XXXXXXXXXX`
echo "[=10=] -- $@" >$newfile
set >>$newfile
eof
chmod +x /path/to/myscript

然后(作为 root)

echo >/etc/udev/rules.d/99-myscript.rules 'RUN+="/path/to/myscript"'

service udev restart

然后尝试 add/remove 设备并查看 /tmp/udev-test-*

... 阅读 man udev,查看 /etc/udev/rules.d 中的其他文件,并通过优化您个人规则的条件来构建您自己的脚本。

详细探索了 udev 规则,在 udevadm 工具的帮助下,我能够导出以下 udev 规则,我的内核模块名称是 "amdtPwrProf".

在 ACTION=="add" 上创建设备节点,在 ACTION=="remove" 上删除设备节点。

 # Create the device file when the module is inserted.

 SUBSYSTEM=="module", ACTION=="add", KERNEL=="amdtPwrProf", RUN+="/opt/codexl/amdtPwrProf_mknod.sh"


 # Remove the device file when the module is removed.

 SUBSYSTEM=="module", ACTION=="remove", KERNEL=="amdtPwrProf", RUN+="/bin/rm /dev/amdtPwrProf"

脚本"amdtPwrProf_mknod.sh"的内容是,

mknod /dev/amdtPwrProf -m 666 c `cat /proc/amdtPwrProf/device` 0