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

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

0

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

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

Кажется, что

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

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

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

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

# CONFIG_TUN is not set
CONFIG_TUN=y

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .