Перейти к основному содержимому
Драйвер ALFA перестал работать после обновления ядра? Полное руководство по исправлению
  1. Блог/

Драйвер ALFA перестал работать после обновления ядра? Полное руководство по исправлению

Оглавление

Вы запускаете sudo apt upgrade, перезагружаетесь — и адаптер ALFA исчез. Никакого интерфейса, никаких огней, ничего. Это самый распространённый вопрос поддержки, связанный с USB WiFi адаптерами ALFA Network в Linux, и обновления ядра почти всегда являются виновником. Это руководство проведёт вас через систематическую диагностику и устранение неисправностей для двух наиболее затронутых семейств чипсетов: RTL8812AU (используется в AWUS036ACH и AWUS036ACS) и MT7921AUN (используется в AWUS036AXM и AXML). Следуйте каждому разделу по порядку, и ваш адаптер заработает менее чем за 15 минут.

TL;DR: Главная причина поломки драйверов ALFA после обновления ядра — рассинхронизация заголовков и модулей. RTL8812AU пересобирается через dkms autoinstall, MT7921AUN требует firmware-misc-nonfree, долгосрочное решение — apt full-upgrade.

Почему обновления ядра ломают драйверы
#

Драйверы WiFi в Linux бывают двух видов: встроенные в ядро драйверы, поставляемые вместе с исходным деревом ядра, и внешние драйверы, существующие за его пределами. Понимание того, какой тип используется, объясняет, почему обновления вызывают проблемы.

Внешние драйверы и DKMS
#

Чипсет RTL8812AU использует внешний драйвер, поддерживаемый сообществом (чаще всего форк aircrack-ng/rtl8812au). Поскольку он не является частью официального исходного кода ядра, он должен быть скомпилирован под заголовочные файлы вашего текущего ядра. Каждый раз, когда версия ядра меняется — даже незначительное обновление патча, например 6.6.156.6.20 — скомпилированный модуль больше не совместим, и ядро отказывается его загружать.

DKMS (Dynamic Kernel Module Support — динамическая поддержка модулей ядра) является стандартным решением. DKMS регистрирует исходный код драйвера в системном хуке, который автоматически перекомпилирует модули при установке нового пакета ядра. При правильной настройке DKMS обновления ядра становятся прозрачными: вы перезагружаетесь в новое ядро, и адаптер уже работает.

DKMS может незаметно дать сбой по двум причинам:

  1. Отсутствуют заголовочные файлы ядра — компилятор требует установленного linux-headers-$(uname -r) в момент прихода нового ядра. Если заголовки приходят после ядра, DKMS упускает окно сборки.
  2. Устаревший dkms.conf — если файл конфигурации установленной версии драйвера больше не соответствует дереву исходных файлов, сборка завершается с непонятными ошибками.

Встроенные драйверы (MT7921AUN)
#

Чипсет MT7921AUN включён в основное ядро начиная с версии 5.18. Это означает, что никакого шага компиляции не требуется — ядро уже знает, как взаимодействовать с оборудованием. Однако драйвер по-прежнему зависит от бинарного файла прошивки (mt7921u.bin), предоставляемого отдельным пакетом. Если этот пакет отсутствует или обновление ядра меняет ожидаемый API прошивки, адаптер может казаться загруженным, но не подключаться ни к одной сети.

Команды быстрой диагностики
#

Прежде чем что-либо трогать, выполните эти две команды для понимания текущего положения дел:

# Какое ядро сейчас запущено?
uname -r

# Какие модули DKMS собраны (и для каких ядер)?
sudo dkms status

Если dkms status показывает, что драйвер RTL8812AU собран для старого ядра, а не для текущего — вы нашли проблему.


Шаг 1: Диагностика драйвера
#

Пройдите эту последовательность диагностики сверху вниз. Каждая проверка сужает круг причин до того, как вы начнёте вносить изменения.

# Проверить текущее ядро
uname -r

# Проверить наличие беспроводного интерфейса
ip link show | grep -E "wlan|wlp"

# Проверить, загружен ли модуль драйвера
lsmod | grep -E "88XXau|rtl8812au|mt7921u"

# Проверить статус сборки DKMS для адаптеров RTL8812AU
sudo dkms status

# Проверить буфер сообщений ядра на предмет ошибок
sudo dmesg | grep -E "ALFA|rtl8812|mt7921" | tail -20

Интерпретация результатов:

ВыводЗначение
ip link не возвращает беспроводных интерфейсовМодуль ядра не загружен или оборудование не обнаружено
lsmod не показывает подходящего модуляЗагрузка модуля не удалась — проверьте dmesg на ошибки
dkms status показывает broken или отсутствие для текущего ядраСборка DKMS не удалась — следуйте инструкциям по исправлению RTL8812AU
dmesg показывает firmware: failed to load mt7921uПакет прошивки отсутствует — следуйте инструкциям по исправлению MT7921AUN
dmesg показывает disagrees about version of symbolМодуль собран под неверные заголовочные файлы ядра
Если ip link показывает интерфейс, но он исчезает при попытке использования, переходите сразу к таблице устранения неисправностей для конкретного адаптера. Видимый, но нефункциональный интерфейс имеет другие причины, нежели полностью отсутствующий.

Исправление: Драйвер RTL8812AU (AWUS036ACH, ACS, EACS)
#

RTL8812AU — наиболее широко используемый чипсет ALFA для тестирования на проникновение благодаря поддержке двух диапазонов и надёжному режиму мониторинга. Он требует внешнего драйвера и поэтому является чипсетом, который чаще всего ломается при обновлениях ядра.

4.1 — Установить заголовочные файлы ядра
#

Первый шаг перед любыми изменениями — убедиться, что установлены заголовки для текущего ядра:

sudo apt update
sudo apt install linux-headers-$(uname -r)

Если команда завершится успешно, заголовки установлены и пересборка DKMS может продолжиться. Если сообщается, что пакет не найден, ваше ядро может быть слишком новым для текущего снимка репозитория — сначала запустите sudo apt full-upgrade для получения соответствующих заголовков, затем перезагрузитесь перед продолжением.

4.2 — Пересборка через DKMS (самый быстрый путь)
#

При наличии заголовков попросите DKMS пересобрать все зарегистрированные модули для текущего ядра:

sudo dkms autoinstall

Внимательно следите за выводом. Успешная сборка заканчивается строкой DKMS: install completed. В случае успеха перезагрузите модуль без перезапуска системы:

sudo modprobe 88XXau
ip link show | grep wlan

Если интерфейс появился — готово. Переходите к шагу 4.4 для проверки режима мониторинга.

4.3 — Полная переустановка из исходного кода (если DKMS не работает)
#

Если dkms autoinstall сообщает об ошибках, зарегистрированный исходный код драйвера повреждён или устарел. Полностью удалите его и переустановите из последней версии upstream:

# Удалить все зарегистрированные в DKMS версии драйвера
sudo dkms remove rtl8812au/5.6.4.2 --all 2>/dev/null

# Клонировать последний исходный код драйвера
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au

# Зарегистрировать исходный код в DKMS, скомпилировать и установить за один шаг
sudo make dkms_install
Номер версии 5.6.4.2 в команде dkms remove — распространённый выпуск, но ваша версия может отличаться. Сначала запустите sudo dkms status и используйте точную строку версии из вывода.

После завершения сборки:

sudo modprobe 88XXau
ip link show | grep wlan

4.4 — Проверка режима мониторинга
#

Адаптер физически присутствует и драйвер загружен. Убедитесь, что режим мониторинга — функция, ради которой этот адаптер используется для тестирования безопасности — по-прежнему работает:

sudo airmon-ng start wlan0

Замените wlan0 на фактическое имя интерфейса из ip link. Успешный ответ показывает monitor mode vif enabled с новым именем интерфейса, например wlan0mon.

4.5 — Метод пакета Kali (самый простой)
#

Kali Linux поставляется с предварительно собранным DKMS пакетом драйвера RTL8812AU, синхронизированным с ядром Kali. Если вы используете Kali, используйте этот подход вместо клонирования с GitHub:

sudo apt update && sudo apt install realtek-rtl88xxau-dkms

Эта единственная команда устанавливает исходный код драйвера, регистрирует его в DKMS и собирает под текущее ядро. Будущие запуски apt full-upgrade будут автоматически синхронизировать заголовки и драйвер.


Исправление: Драйвер MT7921AUN (AWUS036AXM, AXML)
#

Чипсет MT7921AUN (Wi-Fi 6E) идёт совершенно другим путём. Поскольку это встроенный в ядро драйвер начиная с Linux 5.18, не нужно ни DKMS, ни компиляция, ни клонирование с GitHub. Обновления ядра не должны его ломать — но проблемы с упаковкой прошивки иногда всё же происходят.

5.1 — Установить пакет прошивки
#

Модуль ядра (mt7921u.ko) уже присутствует, но ему нужен бинарный файл прошивки из пространства пользователя для инициализации оборудования:

sudo apt install firmware-misc-nonfree

В Ubuntu этот пакет находится в компоненте репозитория non-free. Если команда завершается ошибкой, убедитесь, что источники non-free включены в /etc/apt/sources.list.

5.2 — Перезагрузить драйвер
#

После установки прошивки принудительно перезагрузите драйвер без перезагрузки системы:

sudo modprobe -r mt7921u && sudo modprobe mt7921u

Затем проверьте интерфейс:

ip link show | grep -E "wlan|wlp"

5.3 — Проверить версию ядра
#

Драйвер MT7921AUN требует ядро 5.18 или новее. Если вы установили минимальный образ Kali или Ubuntu, выпущенный до этой версии ядра, модуль просто не существует:

uname -r
# Вывод должен быть 5.18.x или выше

Если ваше ядро старше 5.18, обновите его (шаг 5.4).

5.4 — Обновить ядро
#

sudo apt update && sudo apt full-upgrade && sudo reboot
Используйте full-upgrade, а не upgrade. Подкоманда upgrade удерживает пакеты, требующие удаления других — это часто означает, что сам пакет ядра остаётся устаревшим. full-upgrade позволяет выполнить необходимое разрешение зависимостей.

5.5 — Проверка после перезагрузки
#

После перезагрузки в новое ядро убедитесь, что всё работает:

sudo modprobe mt7921u
ip link show
sudo dmesg | grep mt7921 | tail -10

Здоровый вывод dmesg показывает успешную загрузку прошивки и регистрацию USB-устройства как сетевого интерфейса.


Сохранение работоспособности драйверов после будущих обновлений
#

Профилактика проще, чем ремонт. Следующие практики предотвращают повторное нарушение работы адаптера при обновлениях ядра.

Всегда используйте full-upgrade на Kali rolling:

sudo apt update && sudo apt full-upgrade

Команда full-upgrade гарантирует, что при установке нового пакета ядра соответствующий пакет linux-headers устанавливается в той же транзакции. Хуки DKMS срабатывают во время установки пакета — если заголовки приходят в последующем запуске apt после ядра, DKMS пропускает сборку.

Установить мета-пакет DKMS:

sudo apt install dkms linux-headers-generic

Это подтягивает linux-headers-generic как зависимость пакета DKMS, чтобы заголовки всегда оставались актуальными вместе с ядром.

Стек ядра Ubuntu HWE:

В Ubuntu LTS стек ядра Hardware Enablement получает более частые обновления и лучшую аппаратную поддержку, чем ядро GA. Установите один раз, и обновления обрабатываются автоматически:

sudo apt install linux-generic-hwe-24.04

Проверить, включена ли автоустановка DKMS:

cat /etc/dkms/framework.conf | grep autoinstall

Если эта строка закомментирована или установлена в no, DKMS не будет автоматически пересобирать модули. Раскомментируйте её или установите yes в /etc/dkms/framework.conf.


Таблица устранения неисправностей для конкретных адаптеров
#

СимптомВероятный чипсетПервопричинаБыстрое исправление
Интерфейс исчезает после перезагрузкиRTL8812AUСборка DKMS не удаласьsudo dkms autoinstall
Интерфейс исчезает, dmesg показывает ошибку прошивкиMT7921AUNПакет прошивки отсутствуетsudo apt install firmware-misc-nonfree
Интерфейс появляется, но исчезает через 30 секундRTL8812AUНесовпадение версии модуляsudo dkms remove --all && sudo make dkms_install
Режим мониторинга не работает с SIOCSIFFLAGSRTL8812AUНеверная ветка драйвераКлонировать aircrack-ng/rtl8812au и переустановить
iwconfig не показывает беспроводных расширенийЛюбойМодуль не загруженsudo modprobe 88XXau или sudo modprobe mt7921u
Интерфейс есть, но сети не находятсяMT7921AUNЯдро < 5.18sudo apt full-upgrade && sudo reboot
dkms status показывает brokenRTL8812AUНесовпадение исходного кода/заголовковsudo apt install linux-headers-$(uname -r), затем пересборка
Мощность TX ограничена 20 dBmRTL8812AUБлокировка регуляторного доменаsudo iw reg set US (укажите свой регион)

Если ничего не помогает: метод чистой установки
#

Когда несколько попыток пересборки провалились и dkms status показывает запутанный вывод от нескольких частичных установок, начать с нуля быстрее, чем отлаживать:

# Удалить пакет Kali, если он был установлен
sudo apt purge realtek-rtl88xxau-dkms

# Удалить все записи DKMS для rtl8812au
for ver in $(sudo dkms status | grep rtl8812au | awk -F'[,/]' '{print $2}' | tr -d ' '); do
    sudo dkms remove rtl8812au/$ver --all
done

# Удалить оставшийся каталог с исходным кодом, если он есть
sudo rm -rf /usr/src/rtl8812au*

# Очистить устаревший кэш модулей
sudo depmod -a

# Свежее клонирование и установка
git clone https://github.com/aircrack-ng/rtl8812au.git /tmp/rtl8812au
cd /tmp/rtl8812au
sudo make dkms_install
sudo modprobe 88XXau
ip link show | grep wlan
Цикл, удаляющий записи DKMS, завершится тихо, если версии не найдены — это нормально. Важный шаг — sudo rm -rf /usr/src/rtl8812au*, который удаляет любое дерево исходного кода, которое могло оказаться в нерабочем состоянии.

Контрольный список профилактики
#

Используйте этот список перед каждым обновлением системы, чтобы избежать сюрпризов во время работы:

Перед apt upgrade:

# Посмотреть, какие именно пакеты ядра ожидают обновления
apt list --upgradable 2>/dev/null | grep linux-image

Если ожидается новое ядро, спланируйте тестовую перезагрузку перед любой продуктивной работой.

После каждого обновления и перезагрузки:

# Убедиться, что адаптер вернулся
ip link show | grep -E "wlan|wlp"

# Убедиться, что режим мониторинга всё ещё работает
sudo airmon-ng check

Держите запасной вариант:

  • Держите USB-накопитель с образом Kali Live (или второй адаптер с работающим драйвером). Проблемы с подключением во время запланированного мероприятия обходятся дорого — физический запасной вариант занимает минуты на подготовку и может спасти положение.

Закрепить критические пакеты драйверов в Kali:

# Предотвратить автоматическое удаление пакета драйвера при обновлениях
sudo apt-mark hold realtek-rtl88xxau-dkms

Снимите фиксацию перед явным обновлением драйвера:

sudo apt-mark unhold realtek-rtl88xxau-dkms && sudo apt upgrade realtek-rtl88xxau-dkms

常見問題

Почему драйвер ALFA перестаёт работать после обновления ядра?

RTL8812AU использует внешний драйвер, после изменения версии ядра скомпилированный модуль становится несовместимым. DKMS может пересобрать автоматически, но отсутствие заголовков ядра или устаревшие настройки приводят к ошибке.

Как быстро диагностировать причину сбоя драйвера ALFA?

Выполните uname -r для проверки версии ядра, dkms status для проверки состояния модуля, dmesg для просмотра ошибок загрузки прошивки или модуля.

Какой самый быстрый способ восстановления драйвера RTL8812AU?

Установите соответствующие заголовки ядра и выполните dkms autoinstall. Если не работает, клонируйте свежую копию aircrack-ng/rtl8812au и выполните make dkms_install.

Что делать, если MT7921AUN не подключается после обновления ядра?

MT7921AUN использует встроенный драйвер, проблема обычно в прошивке. Установите пакет firmware-misc-nonfree и убедитесь, что версия ядра не ниже 5.18.

Как предотвратить поломку драйвера при обновлении ядра?

Используйте apt full-upgrade вместо apt upgrade, чтобы заголовки и ядро устанавливались синхронно. Установите dkms и linux-headers-generic для поддержания зависимостей.

Заключение
#

Сбои драйвера ALFA после обновлений ядра следуют предсказуемой схеме и имеют предсказуемые решения. Адаптерам RTL8812AU нужен dkms autoinstall (или свежее клонирование из aircrack-ng/rtl8812au) плюс соответствующие заголовочные файлы ядра. Адаптерам MT7921AUN нужны firmware-misc-nonfree и ядро версии 5.18 или новее. Долгосрочное решение в обоих случаях — использовать apt full-upgrade, а не apt upgrade в качестве стандартной команды обновления, что обеспечивает синхронизацию заголовков и ядра.


Связанные руководства:

Источники
#

  1. Драйвер aircrack-ng rtl8812au
  2. Официальная документация DKMS
  3. Документация управления пакетами Kali Linux
  4. Официальная документация Linux Kernel
  5. Драйвер MediaTek MT7921

Здесь пока нет статей.