AmneziaWG в OpenWrt: ошибка загрузки модуля kmod-amneziawg (Symbol Mismatch)
- Ошибка
kmod: failed to insert module amneziawg.ko: Unknown symbol in moduleпри запуске на OpenWrt роутере. - Сообщение
opkg install kmod-amneziawg: satisfies_dependencies_for: Cannot satisfy the following dependencies for kmod-amneziawg: kernel (= ...). - Сетевой интерфейс
awg0не создается через UCI или командную строку. - Роутер падает в перезагрузку при попытке старта туннеля через LuCI.
1. Причина ошибки Symbol Mismatch / Kernel Checksum
Модули ядра Linux в OpenWrt строго привязаны к контрольной сумме ядра (vermagic). Если сборка роутера и скомпилированный пакет kmod-amneziawg имеют малейшие различия в опциях сборки ядра, модуль блокируется защитой ядра.
2. Проверка текущей версии ядра и vermagic роутера
# Версия ядра на роутере
uname -a
# Хеш vermagic
opkg status kernel | grep Version3. Установка с флагом игнорирования зависимостей (Workaround)
Если ядро отличается лишь минорным билдом, выполните установку с пропуском проверки контрольной суммы:
opkg install --nodeps --force-depends kmod-amneziawg
# Попытка ручной загрузки модуля
insmod amneziawg4. Проверка зарегистрированных символов в dmesg
dmesg | grep -i amneziawg5. Корректная сборка под точный vermagic через OpenWrt SDK
При наличии реального конфликта символов выполните сборку модуля в официальном SDK вашей версии прошивки:
# Внутри контейнера с OpenWrt SDK
./scripts/feeds update -a && ./scripts/feeds install amneziawg-kmod
make package/amneziawg-kmod/compile -j$(nproc)
# Перенесите полученный .ipk файл на роутер через scp Частые вопросы (FAQ)
Опасно ли использовать флаг --force-depends для модуля ядра?
Если API структур ядра изменилось между минорными версиями, принудительная загрузка может вызвать Kernel Panic роутера и циклическую перезагрузку (Bootloop).
Можно ли использовать пользовательский amneziawg-go вместо модуля ядра на OpenWrt?
Да, можно использовать Go-реализацию (amneziawg-go). Она работает в пространстве пользователя через TUN-интерфейс и не зависит от версии ядра, но потребляет больше CPU роутера.
Как удалить аварийный модуль из автозагрузки OpenWrt?
Удалите символическую ссылку из /etc/modules.d/: rm -f /etc/modules.d/*amneziawg, после чего выполните reboot.
Где взять готовые пакеты kmod-amneziawg под официальные релизы OpenWrt?
В официальном репозитории релизов Amnezia VPN на GitHub в разделе Releases представлены предсобранные пакеты под популярные архитектуры (MIPS, ARM, AArch64, x86_64).