hwmon:添加缺少的内核模块

hwmon:添加缺少的内核模块

长话短说:
内核模块 sht3x (https://www.kernel.org/doc/html/latest/hwmon/sht3x.html) 在标准的 Debian 安装中似乎缺失了。我需要它来读取外部传感器。我怎样才能安装这个内核模块?

整个故事
我尝试将 SHT31 温度/湿度传感器连接到我的 Debian 笔记本电脑。为此,我闪存了一个 ATtiny85 微控制器来充当i2c-微型-USB界面。

我让这部分工作 -lsusb将设备列为

Bus 003 Device 003: ID 0403:c631 Future Technology Devices International, Ltd i2c-tiny-usb interface

我也得到了有希望的回应i2cdetect

$ sudo i2cdetect -l
i2c-3   i2c         i915 gmbus dpc                      I2C adapter
i2c-1   i2c         i915 gmbus vga                      I2C adapter
i2c-8   i2c         i2c-tiny-usb at bus 001 device 017  I2C adapter
i2c-6   i2c         AUX B/port B                        I2C adapter
i2c-4   i2c         i915 gmbus dpb                      I2C adapter
i2c-2   i2c         i915 gmbus panel                    I2C adapter
i2c-0   i2c         i915 gmbus ssc                      I2C adapter
i2c-7   i2c         AUX D/port D                        I2C adapter
i2c-5   i2c         i915 gmbus dpd                      I2C adapter
$ sudo i2cdetect 8
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-8.
I will probe address range 0x08-0x77.
Continue? [Y/n] Y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- 45 -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

但是,我无法读取传感器数据,因为内核模块 sht3x未安装在我的(标准 Debian)系统上,并且未在lsmod.

问题
如何在 Debian 笔记本上安装并使用 sht3x 内核模块?

答案1

我假设您运行的是 Debian 10,但更高版本的说明类似。 Debian 10 中使用的内核版本支持您要的模块,但未启用;让我们解决这个问题。

  1. 安装您发行版中默认版本的内核源代码:

    sudo apt install linux-source
    
  2. 提取它:

    cd /usr/src
    tar xf linux-source-*.tar.xz
    

    (假设只有一个linux-sourcetarball 可用,除非您安装了多个软件包,否则就会出现这种情况linux-source)。

  3. 复制当前内核配置:

    cd linux-source-*/
    cp /boot/config-$(uname -r) .config
    
  4. 启用模块的配置sht3x

    make menuconfig
    

    (这可能会抱怨缺少工具,例如编译器;sudoapt install build-essential应该修复问题)。

    要查找需要启用的选项及其位置,请按/并输入“SHT3X”:

    显示“SHT3X”搜索结果的 make menuconfig 屏幕截图

    这给出了一些信息:

    • 该选项称为SENSORS_SHT3X;
    • 它列在“设备驱动程序”、“硬件监控支持”下;
    • 它所依赖的选项已经启用;
    • 但它被禁用了。

    Enter退出搜索结果,进入“设备驱动程序”,按Enter,然后进入“硬件监控支持”,Enter再次按,找到“SHT3x”选项,然后按 将M其启用为模块。

    Tab直到突出显示“保存”,然后Enter确认要写入的文件名 ( .config),然后多次选择“退出”,直到返回提示符。

  5. 最后,构建模块:

    make drivers/hwmon/sht3x.ko
    

    这可能需要额外的依赖项,至少libelf-devlibssl-dev( sudo apt install libelf-dev libssl-dev)。

    如果一切顺利,您最终将得到一个drivers/hwmon/sht3x.ko可以作为模块加载的文件。

相关内容