嵌入式 Linux 上缺少 TUN/TAP 驱动程序

嵌入式 Linux 上缺少 TUN/TAP 驱动程序

我走了很长的路才遇到这个问题,因此将省略几个死胡同的步骤。

我试图创建一个 TAP 接口。第一步是检查我是否有所需的工具(我似乎有):

root@analog:~# ip tuntap help
Usage: ip tuntap { add | del } [ dev PHYS_DEV ] 
          [ mode { tun | tap } ] [ user USER ] [ group GROUP ]
          [ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ]

Where: USER  := { STRING | NUMBER }
       GROUP := { STRING | NUMBER }

我决定检查一下是否安装/编译/插入了所需的内核模块,但结果发现我还没有

root@analog:~# lsmod | grep tun
root@analog:~#

模块安装出现问题

root@analog:~# modprobe tun
modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/4.6.0-ga94cfb9/modules.dep.bin'

这让我开始怀疑自己,依赖关系等是否都很好

root@analog:~# depmod
depmod: ERROR: could not open directory /lib/modules/4.6.0-ga94cfb9: No such file or directory

这使得问题变得更加复杂,因为我唯一遇到过这种神秘符号组合的地方是

root@analog:~# uname -a
Linux analog 4.6.0-ga94cfb9 #5 SMP Mon Dec 12 10:50:01 GMT 2016 armv7l armv7l armv7l GNU/Linux

说实话,我不知道什么样的信息可能对解决这个问题有用,但我恳请大家提供任何可以推动我进一步调查的想法

答案1

进一步的研究让我找到了似乎可以回答我的问题的东西。

我确信我遇到问题的设备上存在一些驱动程序,但我无法在设备上找到它们(.o/.ko 文件似乎以某种方式丢失了)。

似乎

驱动程序直接编译到内核中

内核没有模块支持

正如 Ulrich Dangel 所提到的这里

我必须在 .config 中设置所需的驱动程序(可以手动完成或使用make menuconfig

# CONFIG_TUN is not set
CONFIG_TUN=y

编译内核,并替换旧的uImage

我检查了所需驱动程序是否运行,所需驱动程序名称在dmesg | grep tun哪里tun。现在一切正常

相关内容