【问题标题】:lm75 kernel module available in userspace用户空间中可用的 lm75 内核模块
【发布时间】:2017-12-01 14:37:10
【问题描述】:

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

我的问题是,有没有办法将我的设备挂载到 /dev 中?

【问题讨论】:

  • 您需要在内核配置中启用I2C dev。每条总线将显示一个设备。但这不是推荐的解决方案,最好使用内核驱动程序和适当的接口,如 hwmonIIO

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


【解决方案1】:

Mounting 在这里不是正确的术语,所以你不会找到任何搜索它的东西。具有文件系统的块设备挂载在目录上,然后成为挂载点

这里设备5-0048 绑定到驱动程序lm75。你会发现设备在那里,假设它出现在设备树或板信息中,无论 lm75 驱动程序是否存在。如果 lm75 驱动程序绑定到该设备,它会创建一个 hwmon 类的新设备。您感兴趣的是具有属性的设备,例如temp_max_hyst

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

hwmon 类型的驱动程序,如 lm75,通常不会创建任何设备节点来为硬件提供字符设备或块设备用户空间接口。因此,该设备的 dev 中没有任何内容。 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

【讨论】:

  • 非常感谢您提供如此详细的解释。它帮助了很多,你澄清了很多事情!
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2010-10-21
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多