lm75内核模块在用户空间中可用

时间:2017-12-01 14:37:11

标签: linux kernel file-permissions kernel-module udev

我正在使用lm75内核模块与自定义板上的传感器进行交互。一切正常,我的设备安装在/ sys / bus / i2c / devices / 5-0048中。但我想让用户设置最大临时滞后,换句话说让用户写入temp_max_hyst文件。除root

外,此文件的权限是只读的

我的问题是,有没有办法在/ dev中安装我的设备?

1 个答案:

答案 0 :(得分:1)

挂载并不是正确的术语,因此您无法找到搜索该内容的任何内容。带有文件系统的块设备在目录上挂载,然后成为挂载点

此处设备5-0048 绑定到驱动程序lm75。您会发现设备在那里,假设它出现在设备树或电路板信息中,是否存在lm75驱动程序。如果lm75驱动程序绑定到设备,它将创建类hwmon的新设备。您感兴趣的是具有属性的设备,如temp_max_hyst

您在/ dev中看到的内容称为设备节点。虽然许多设备一旦绑定到驱动程序,就会创建一个与设备交互的设备节点,但这并非必须发生。可能有许多设备出现在/sys/class/regulator/sys/class/net中,/dev中没有与之关联的节点。

hwmon类型的驱动程序,如lm75,通常不会创建任何设备节点来为硬件提供字符设备或块设备用户空间接口。所以在这个设备的开发中没有任何东西出现。 hwmon设备的属性就是你得到的。

但是你的问题有一个简单的解决方案。以root身份,只需chmod a+w temp_max_hystchown user_account temp_max_hyst或(这可能是最好的)chmod g+w temp_max_hyst ; chgrp hw_access_group temp_max_hyst并将用户添加到组hw_access_group。您可以使用现有的组,可能有一个名为wheeladm的组可用于此类内容,或者只为hwmon访问创建一个新组。

当然,这不会在重新启动时持续存在,因为sysfs不是磁盘上的真实文件系统。要使更改持久化,最好的方法是创建一个udev规则,在检测到hwmon设备时自动影响chmod / chown。它是你关心的hwmon设备,而不是i2c设备。尝试运行udevadm info -a /sys/class/hwmon/hwmon0