使用 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
试图找出当我插入特定内核模块时可以自动创建设备节点并在删除内核模块时删除设备节点的 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