Отсутствует драйвер TUN / TAP во встроенном Linux

535
KateOleneva

Я прошел долгий путь, чтобы столкнуться с этой проблемой, поэтому несколько тупиковых шагов будут опущены.

Я пытался создать интерфейс 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 

Я, честно говоря, понятия не имею, какая информация может быть полезна для решения проблемы, но я прошу любые идеи, которые могли бы продвинуть мое расследование немного дальше

0
Какой дистрибутив? то, что в вашем ядре нет поддержки модулей, пахнет необычно. ARM linux-вариации, как правило, специализированы, так что какое устройство и дистрибутив это работает, будет удобно. Я думаю, что вы читаете о проблеме в ответе, вероятно, правильно, хотя Journeyman Geek 5 лет назад 0
@JourneymanGeek, [this] (https://github.com/analogdevicesinc/linux/tree/altera_4.6) был бы наиболее точным ответом, который я мог бы дать вам KateOleneva 5 лет назад 0

1 ответ на вопрос

0
KateOleneva

Дополнительные исследования привели меня к тому, что кажется ответом на мой вопрос.

Я точно знаю, что некоторые драйверы присутствуют на устройстве, с которым у меня проблемы, но я не смог найти их физически на устройстве (файлы .o / .ko, похоже, как-то отсутствуют).

Кажется, что

драйверы компилируются прямо в ядро

ядро не поддерживает модуль

как было упомянуто Ульрихом Дангелем здесь .

Мне пришлось установить нужный драйвер в .config (можно сделать вручную или с помощью make menuconfig)

# CONFIG_TUN is not set CONFIG_TUN=y 

скомпилируйте ядро ​​и замените старое uImage.

Я проверил, запускается ли нужный драйвер, dmesg | grep tunгде tunнаходится нужное имя драйвера. Теперь все работает отлично

Похожие вопросы