我走了很长的路才遇到这个问题,因此将省略几个死胡同的步骤。
我试图创建一个 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
。现在一切正常