Вопрос или проблема
Сегодня утром на двух моих установках Ubuntu, которые обе 22.04.3 LTS
с HWE, была выполнена миграция на ядро 6.5.0-14-generic
. После перезагрузки обеих систем сетевые карты RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
не заработали. При загрузке на более старом ядре 6.2.0-39-generic
сетевая карта работает отлично. При попытке переустановить драйвер r8168-dkms
, который устанавливает версию драйвера 8.049.02
, возникает ошибка. А команда sudo lshw -C network
показывает карту как UNCLAIMED
.
Проблема заключается в том, что драйвер r8168-dkms
, который находится в стандартных репозиториях, имеет версию 8.049.02-1ubuntu1
, которая несовместима с ядром 6.5.0-14-generic
.
$ apt-cache policy r8168-dkms
r8168-dkms:
Установлено: 8.049.02-1ubuntu1
Кандидат: 8.049.02-1ubuntu1
Версия:
*** 8.049.02-1ubuntu1 100
100 /var/lib/dpkg/status
8.049.02-1ubuntu1.2 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Пакеты
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe i386 Пакеты
8.049.02-1ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Пакеты
500 http://us.archive.ubuntu.com/ubuntu jammy/universe i386 Пакеты
При попытке собрать драйвер 8.049.02
на ядре 6.5.0-14-generic
возникает следующее сообщение об ошибке:
$ sudo dkms build r8168/8.049.02
Сборка модуля:
очистка области сборки...
make -j8 KERNELRELEASE=6.5.0-14-generic -C /lib/modules/6.5.0-14-generic/build M=/var/lib/dkms/r8168/8.049.02/build..........(плохой статус выхода: 2)
ОШИБКА (dkms apport): бинарный пакет для r8168: 8.049.02 не найден
Ошибка! Плохой статус возврата при сборке модуля на ядре: 6.5.0-14-generic (x86_64)
Обратитесь к /var/lib/dkms/r8168/8.049.02/build/make.log для получения дополнительной информации.
$ cat /var/lib/dkms/r8168/8.049.02/build/make.log
/var/lib/dkms/r8168/8.049.02/build/r8168_n.c:27733:24: ошибка: неявное объявление функции ‘skb_gso_segment’; вы имели в виду ‘skb_gso_reset’? [-Werror=implicit-function-declaration]
27733 | segs = skb_gso_segment(skb, features);
| ^~~~~~~~~~~~~~~
| skb_gso_reset
Даже если вы измените исходный код так, чтобы он соответствовал вы имели в виду...
, он все равно будет выдавать ошибку. Но драйвер 8.049.02
собирается без проблем на более старых ядрах 6.2
и 5.15
.
Существует ли более современный драйвер, который я могу использовать?
Р.S. Я не буду использовать драйвер r8169
для моего чипсета r8168
, так как он будет работать нормально в начале, но через некоторое время будет давать непредсказуемое поведение, в некоторых случаях до такой степени, что потребуется полная перезагрузка системы, чтобы вернуть интерфейс в рабочий режим.
ПРИМЕЧАНИЕ: Я заметил, что если я загружался в Windows 10, то при последующей загрузке обратно в Ubuntu без жесткой перезагрузки сетевая карта не работала корректно. Это было связано с версией драйвера в Windows, которая по какой-то причине вызывала эту проблему. Чтобы исправить это, я снова загрузился в Windows и скачал и установил драйвер 10.73
непосредственно с сайта Realtek. Теперь, перезагрузившись из Windows обратно в Ubuntu, проблем нет.
Установка драйвера:
Обновление 2024-07-04: Самый новый драйвер, сейчас указанный на сайте Realtek, — это 8.053.00
, поэтому убедитесь, что вы внесли изменения в инструкции ниже, чтобы соответствовать текущей загруженной версии драйвера.
- ПРИМЕЧАНИЕ: Я бы подал баг на
r8168-dkms
, но он утверждает, что это не официальный пакет.
Версия 8.049.02
или драйвер r8168-dkms
, который в настоящее время находится в репозиториях для 22.04 LTS, кажется, несовместим с ядром 6.5.0-14-generic
, и dkms
не может установить драйвер.
Загрузитесь на рабочее ядро и скачайте драйвер Realtek 8.052.01
здесь.
p.s. Файл autorun.sh
не настраивает драйвер в dkms
, что потребует от вас переустановки драйвера при следующем обновлении ядра.
Перед установкой нового драйвера я рекомендую удалить драйвер 8.049.02
из дерева, чтобы dkms
не пытался установить его в более новые ядра, в которых он не сработает.
sudo dkms remove r8168/8.049.02 --all
После загрузки драйвера извлеките файлы.
tar xvf r8168-8.052.01.tar.bz2
Перейдите в новую созданную директорию.
cd r8168-8.052.01/src
Создайте новую директорию исходного кода ядра для драйвера.
sudo mkdir /usr/src/r8168-8.052.01
И скопируйте все файлы в новую директорию.
sudo cp -v * /usr/src/r8168-8.052.01/
Создайте новый файл dkms.conf
для драйвера.
sudo nano /usr/src/r8168-8.052.01/dkms.conf
Теперь добавьте следующее содержимое в файл.
PACKAGE_NAME="r8168"
PACKAGE_VERSION="8.052.01"
BUILT_MODULE_NAME[0]="$PACKAGE_NAME"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="YES"
REMAKE_INITRD="YES"
Сохраните файл и выполните следующие команды для сборки и установки драйвера.
sudo dkms add r8168/8.052.01
sudo dkms build r8168/8.052.01 -k 6.5.0-14-generic
sudo dkms install r8168/8.052.01 -k 6.5.0-14-generic
Убедитесь, что вы изменили версию ядра (6.5.0-XX-generic) в двух строках выше, чтобы соответствовать вашему текущему ядру, в которое вы пытаетесь установить.
Теперь, когда вы проверите dkms status
, вы должны увидеть новый драйвер, установленный в ядро.
$ dkms status
r8168/8.052.01, 5.15.0-91-generic, x86_64: установлен
r8168/8.052.01, 6.2.0-39-generic, x86_64: установлен
r8168/8.052.01, 6.5.0-14-generic, x86_64: установлен
Перезагрузите систему и загрузитесь в самое новое ядро, и контроллер RTL8111/8168/8411 PCI Express Gigabit Ethernet должен работать нормально.
Проверьте, работает ли r8169
, который встроен в ядро, нормально с вашим контроллером. Удаление r8168-dkms
помогло мне.
Ответ или решение
Краткий обзор проблемы с сетевым адаптером RTL8111/8168/8411 на Ubuntu 22.04.3 с ядром 6.5.0-14-generic
Ваша ситуация касается проблемы совместимости сетевого драйвера r8168-dkms с новым ядром Linux, установленным в Ubuntu 22.04.3. С обновлением до версии ядра 6.5.0-14-generic возникают трудности с работоспособностью Ethernet-контроллеров RTL8111/8168/8411, которые были нормальными при использовании более старых версий ядра, таких как 6.2.0-39-generic.
Суть проблемы
После обновления ядра вы столкнулись с тем, что сеть больше не функционирует, а команда lshw -C network
показывает адаптер как UNCLAIMED. Вы также обнаружили, что попытка переустановить драйвер r8168-dkms версии 8.049.02 завершается неудачей из-за ошибок компиляции, указывая на различные конфликты в коде и совместимости. Проблема, как видно из журнала компиляции, может быть связана с изменениями в самом ядре, что делает текущую версию драйвера несовместимой.
Решения
-
Удаление несовместимого драйвера
Вы уже упомянули, что в вашем случае необходимо удалить устаревшую версию драйвера. Для этого введите в терминале:sudo dkms remove r8168/8.049.02 --all
-
Установка более нового драйвера
Чтобы разрешить проблему с совместимостью, рекомендуется установить более свежую версию драйвера. Посетите официальный сайт Realtek и загрузите последнюю версию драйвера, например, 8.052.01 или более новую, если она доступна. -
Подготовка к установке
После загрузки драйвера выполните следующие шаги:- Распакуйте архив:
tar xvf r8168-8.052.01.tar.bz2
- Перейдите в созданную директорию:
cd r8168-8.052.01/src
- Создайте новую директорию для исходников Kernel:
sudo mkdir /usr/src/r8168-8.052.01
- Скопируйте файлы драйвера:
sudo cp -v * /usr/src/r8168-8.052.01/
- Распакуйте архив:
-
Создание конфигурационного файла DKMS
Создайте конфигурационный файлdkms.conf
:sudo nano /usr/src/r8168-8.052.01/dkms.conf
И добавьте туда следующие строки:
PACKAGE_NAME="r8168" PACKAGE_VERSION="8.052.01" BUILT_MODULE_NAME[0]="$PACKAGE_NAME" DEST_MODULE_LOCATION[0]="/updates/dkms" AUTOINSTALL="YES" REMAKE_INITRD="YES"
После чего сохраните файл.
-
Добавление и установка драйвера через DKMS
Выполните команды для добавления и сборки нового драйвера:sudo dkms add r8168/8.052.01 sudo dkms build r8168/8.052.01 -k 6.5.0-14-generic sudo dkms install r8168/8.052.01 -k 6.5.0-14-generic
-
Перезагрузка системы
Перезагрузите вашу систему и выберите новую версию ядра в меню загрузки. После повторной загрузки проверьте статус вашего адаптера Ethernet через команду:dkms status
Заключение
Если после выполнения всех шагов ваш сетевой адаптер всё ещё не работает, вы можете попробовать использовать встроенный драйвер r8169
. Помните, что некоторые пользователи сообщали о нестабильной работе этого драйвера, но это всё же может быть временным решением.едение необходимых действий поможет вам восстановить работоспособность сетевого адаптера на вашем устройстве и обеспечить стабильное соединение с интернетом.