使用udev根据加载的驱动程序创build一个字符设备

我正在为许多使用PERC 6i集成卡的Dell服务器设置RAID监视。 目前我们正在使用Nagios,check_megasasctl插件似乎符合这个法案。 但是,插件依赖于:

/dev/megaraid_sas_ioctl_node 

该设备节点默认情况下不存在,您必须使用类似于以下的方式手动创build它:

 mknod /dev/megaraid_sas_ioctl_node c 253 0 

现在,为了使这个设备节点在重启时保持不变,我想我可以写一个udev规则,但像往常一样,我错过了一些东西。 我以为我可以创build一个文件,如/etc/udev/rules.d/10-local/rules其中包含:

 DRIVER=="megasas" NAME="megaraid_sas_ioctl_node" MODE="0600" 

但是这不起作用 – 重启后没有设备节点。 Dmesg输出表示megasas驱动程序已加载并可用:

 megasas: 00.00.04.01-RH1 Thu July 10 09:41:51 PST 2008 megasas: 0x1000:0x0060:0x1028:0x1f0c: bus 1:slot 0:func 0 megasas: FW now in Ready state 

此外,我没有看到任何方法指示udev要创build哪种types的设备节点:字符或块。 我怀疑我不明白udev是如何工作的。

我意识到我可以在/etc/rc.local中作弊并运行MegaCLI,将输出redirect到/ dev / null; 它会创buildmegaraid_sas_ioctl_node设备节点作为其执行的一部分。 我只是认为使用udev规则将是更清洁和b)一个有用的学习练习。 也许我应该把上面的mknod命令转储到/etc/rc.local中

那么,如何根据megasas驱动程序的存在来获取udev来创build/ dev / megaraid_sas_ioctl_node设备节点?

干杯

史蒂夫

您需要运行一个外部脚本才能真正创build设备节点。