Ubuntu 22.04.3, Ядро 6.5.0-XX-generic и контроллер Gigabit Ethernet RTL8111/8168/8411 PCI Express

Вопрос или проблема

Сегодня утром на двух моих установках 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 должен работать нормально.

Скачайте версию 8.052.01 с драйверов

выполните sudo autorun.sh

Нет необходимости в перезагрузке

Проверьте, работает ли 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 завершается неудачей из-за ошибок компиляции, указывая на различные конфликты в коде и совместимости. Проблема, как видно из журнала компиляции, может быть связана с изменениями в самом ядре, что делает текущую версию драйвера несовместимой.

Решения

  1. Удаление несовместимого драйвера
    Вы уже упомянули, что в вашем случае необходимо удалить устаревшую версию драйвера. Для этого введите в терминале:

    sudo dkms remove r8168/8.049.02 --all
  2. Установка более нового драйвера
    Чтобы разрешить проблему с совместимостью, рекомендуется установить более свежую версию драйвера. Посетите официальный сайт Realtek и загрузите последнюю версию драйвера, например, 8.052.01 или более новую, если она доступна.

  3. Подготовка к установке
    После загрузки драйвера выполните следующие шаги:

    • Распакуйте архив:
      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/
  4. Создание конфигурационного файла 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"

    После чего сохраните файл.

  5. Добавление и установка драйвера через 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
  6. Перезагрузка системы
    Перезагрузите вашу систему и выберите новую версию ядра в меню загрузки. После повторной загрузки проверьте статус вашего адаптера Ethernet через команду:

    dkms status

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...