我无法加载 Raspberry Pi 的内核并在之后使用 modprobe 以使用 i2c_stub

I cannot load the kernel of a Raspberry Pi and use modprobe afterward in order to use i2c_stub

我正在尝试读取 Raspberry Pi B3 上的虚拟传感器。我想在 i2c 端口上创建虚拟传感器。我做的第一件事当然是启用 i2c 端口。使用下面的命令,我可以查看 i2c 接口是否正常工作:

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
# ls /dev/*i2c*
/dev/i2c-1

然后我尝试 运行 这两个 make 命令 uname -r 与具有 build 子目录的目录不匹配。如果我将 uname -r 硬编码到包含 build 子目录的目录,我可以继续,但是我必须在之后执行的命令 sudo modprobe -r i2c_stub 将不起作用。错误:modprobe: FATAL: Module i2c_stub not found.。我已经关注了这个问题 https://superuser.com/questions/952688/installing-new-driver-on-linux-missing-the-build-directory 但它并没有解决我的问题。

# sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
make: *** /lib/modules/4.4.16-v7+/build: No such file or directory.  Stop.
# sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
make: *** /lib/modules/4.4.16-v7+/build: No such file or directory.  Stop.
# uname -r
4.4.16-v7+
# ls -l /lib/modules/4.4.16-v7+/
total 1716
drwxr-xr-x 11 root root   4096 Aug  2  2016 kernel
-rw-r--r--  1 root root 447387 Aug  2  2016 modules.alias
-rw-r--r--  1 root root 463774 Aug  2  2016 modules.alias.bin
-rw-r--r--  1 root root   4574 Aug  2  2016 modules.builtin
-rw-r--r--  1 root root   6025 Aug  2  2016 modules.builtin.bin
-rw-r--r--  1 root root 142062 Aug  2  2016 modules.dep
-rw-r--r--  1 root root 207587 Aug  2  2016 modules.dep.bin
-rw-r--r--  1 root root    302 Aug  2  2016 modules.devname
-rw-r--r--  1 root root  58127 Aug  2  2016 modules.order
-rw-r--r--  1 root root     55 Aug  2  2016 modules.softdep
-rw-r--r--  1 root root 175706 Aug  2  2016 modules.symbols
-rw-r--r--  1 root root 218826 Aug  2  2016 modules.symbols.bin
# ls -l /lib/modules/4.9.35-v7+/
total 1848
lrwxrwxrwx  1 root root     33 Jul  3  2017 build -> /usr/src/linux-headers-4.9.35-v7+
drwxr-xr-x 11 root root   4096 Jun 23 08:54 kernel
-rw-r--r--  1 root root 478139 Jul  3  2017 modules.alias
-rw-r--r--  1 root root 492852 Jul  3  2017 modules.alias.bin
-rw-r--r--  1 root root   4778 Jul  3  2017 modules.builtin
-rw-r--r--  1 root root   6290 Jul  3  2017 modules.builtin.bin
-rw-r--r--  1 root root 153132 Jul  3  2017 modules.dep
-rw-r--r--  1 root root 222028 Jul  3  2017 modules.dep.bin
-rw-r--r--  1 root root    302 Jul  3  2017 modules.devname
-rw-r--r--  1 root root  61224 Jul  3  2017 modules.order
-rw-r--r--  1 root root     55 Jul  3  2017 modules.softdep
-rw-r--r--  1 root root 198792 Jul  3  2017 modules.symbols
-rw-r--r--  1 root root 245292 Jul  3  2017 modules.symbols.bin

我必须恢复到当前库存 Raspbian 内核。

sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel https://www.raspberrypi.org/documentation/linux/kernel/updating.md