
- Yopitek Ltd/
- Блог/
- Драйвер ALFA перестал работать после обновления ядра? Полное руководство по исправлению/
Драйвер ALFA перестал работать после обновления ядра? Полное руководство по исправлению
Оглавление
Вы запускаете sudo apt upgrade, перезагружаетесь — и адаптер ALFA исчез. Никакого интерфейса, никаких огней, ничего. Это самый распространённый вопрос поддержки, связанный с USB WiFi адаптерами ALFA Network в Linux, и обновления ядра почти всегда являются виновником. Это руководство проведёт вас через систематическую диагностику и устранение неисправностей для двух наиболее затронутых семейств чипсетов: RTL8812AU (используется в AWUS036ACH и AWUS036ACS) и MT7921AUN (используется в AWUS036AXM и AXML). Следуйте каждому разделу по порядку, и ваш адаптер заработает менее чем за 15 минут.
Почему обновления ядра ломают драйверы#
Драйверы WiFi в Linux бывают двух видов: встроенные в ядро драйверы, поставляемые вместе с исходным деревом ядра, и внешние драйверы, существующие за его пределами. Понимание того, какой тип используется, объясняет, почему обновления вызывают проблемы.
Внешние драйверы и DKMS#
Чипсет RTL8812AU использует внешний драйвер, поддерживаемый сообществом (чаще всего форк aircrack-ng/rtl8812au). Поскольку он не является частью официального исходного кода ядра, он должен быть скомпилирован под заголовочные файлы вашего текущего ядра. Каждый раз, когда версия ядра меняется — даже незначительное обновление патча, например 6.6.15 → 6.6.20 — скомпилированный модуль больше не совместим, и ядро отказывается его загружать.
DKMS (Dynamic Kernel Module Support — динамическая поддержка модулей ядра) является стандартным решением. DKMS регистрирует исходный код драйвера в системном хуке, который автоматически перекомпилирует модули при установке нового пакета ядра. При правильной настройке DKMS обновления ядра становятся прозрачными: вы перезагружаетесь в новое ядро, и адаптер уже работает.
DKMS может незаметно дать сбой по двум причинам:
- Отсутствуют заголовочные файлы ядра — компилятор требует установленного
linux-headers-$(uname -r)в момент прихода нового ядра. Если заголовки приходят после ядра, DKMS упускает окно сборки. - Устаревший
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_install5.6.4.2 в команде dkms remove — распространённый выпуск, но ваша версия может отличаться. Сначала запустите sudo dkms status и используйте точную строку версии из вывода.После завершения сборки:
sudo modprobe 88XXau
ip link show | grep wlan4.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 rebootfull-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 |
Режим мониторинга не работает с SIOCSIFFLAGS | RTL8812AU | Неверная ветка драйвера | Клонировать aircrack-ng/rtl8812au и переустановить |
iwconfig не показывает беспроводных расширений | Любой | Модуль не загружен | sudo modprobe 88XXau или sudo modprobe mt7921u |
| Интерфейс есть, но сети не находятся | MT7921AUN | Ядро < 5.18 | sudo apt full-upgrade && sudo reboot |
dkms status показывает broken | RTL8812AU | Несовпадение исходного кода/заголовков | sudo apt install linux-headers-$(uname -r), затем пересборка |
| Мощность TX ограничена 20 dBm | RTL8812AU | Блокировка регуляторного домена | 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 wlansudo 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 в качестве стандартной команды обновления, что обеспечивает синхронизацию заголовков и ядра.
Связанные руководства:
- Как установить драйвер ALFA USB WiFi на Kali Linux и Ubuntu — начните здесь, если вы никогда не устанавливали драйвер раньше
- Руководство по настройке AWUS036ACH на Kali Linux — полное пошаговое руководство по настройке, включая проверку режима мониторинга и инъекции пакетов
Источники#
Здесь пока нет статей.