Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Установка драйвера r8168

profile picture
Author
Hetzner Online
Published
2019-03-08
Time to read
4 minutes reading time

Введение

Linux r8169 драйвер для сетевых чипов Realtek не всегда работает корректно в ядре 4.16 и более ранних версиях. Могут случаться тайм-ауты, частые смены состояний link up/link down, проблемы с производительностью и даже крах системы.

Одно из решений — это использование официального драйвера Realtek r8168 (вместо r8169). Его можно установить из сторонних репозиториев или скомпилировать самостоятельно. Также можно обновить ядро до версии 4.17+.

Эта статья описывает, как установить сетевой драйвер.

Вариант А - Использование kmod-r8168 из elrepo.org

ELRepo — это RPM репозиторий пакетов для Enterprise Linux. ELRepo поддерживает Red Hat Enterprise Linux и её ответвления (CentOS, Scientific Linux и другие). Это самый простой способ получить r8168 драйвер для стандартных ядер.

ПРИМЕЧАНИЕ: Если используется особенное ядро: как Virtuozzo, OpenVZ или что-то подобное, то ПРИДЁТСЯ скомпилировать модуль самостоятельно!

Импорт публичного ключа:

rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org

Установка ELRepo для RHEL 6, CentOS 6 или SL 6:

rpm -Uhv http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

Для RHEL 7, CentOS 7 или SL 7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

Установка kmod-r8168 Realtek r8168 драйвера:

yum --enablerepo=elrepo install kmod-r8168

Новый драйвер будет использован системой после перезагрузки. Он остаётся активным даже после обновления ядра.

Вариант Б - Установка из исходного кода

Шар 1 - Необходимые условия

Пожалуйста, убедитесь, что у вас работает самая последняя версия ядра с помощью команд yum или apt-get и перезагрузки сервера.

CentOS

Для замены драйвера в CentOS должны быть установлены пакеты kernel, kernel-devel и kernel-headers, а также компилятор:

yum install gcc gcc-c++ kernel-devel kernel-headers

Debian/Ubuntu

В Debian/Ubuntu название пакета заголовочных файлов зависит от выбранного ядра. Это может быть, например linux-headers-generic или linux-headers-server. Все остальные необходимые для сборки пакеты будут уставлены вместе пакетом build-essentials:

aptitude install build-essential linux-headers-`uname -r`

Proxmox

В Proxmox заголовочные файлы расположены в пакете pve-headers

aptitude install pve-headers-`uname -r`

Шаг 2 - Получение исходного кода

cd /tmp
wget http://mirror.hetzner.de/tools/Realtek/drivers/r8168-8.046.00.tar.bz2
tar xf r8168-8.046.00.tar.bz2

Шаг 3 - Компиляция драйвера

В пакете содержится скрипт autorun.sh, компилирующий драйвер и заменяющий используемый в настоящий момент драйвер r8169. При замене драйвера прерывается сетевое соединение — запускайте скрипт в сессии screen, чтобы выполнение скрипта гарантированно не прервалось. Также, чтобы убедиться в том, что модуль компилируется, можно вручную выполнить команду make modules.

cd r8168-8.046.00
make modules

или

make all

Если make modules не выдаёт ошибок, то можно заменить драйвер. В этом случае сетевое соединение будет прервано и драйвер r8169 отключится!

screen
cd r8168-8.046.00
./autorun.sh

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

Шаг 4 - Активирование нового драйвера

CentOS

Необходимо изменить драйвер для eth0. Для этого в файла /etc/modprobe.conf строка

alias eth0 r8169

должна быть заменена на

alias eth0 r8168

Для активирования нового драйвера создаём простой shell-скрипт, который выполняет необходимые действия.

echo "rmmod r8169" > /tmp/r8168
echo "depmod -a" >> /tmp/r8168
echo "modprobe r8168" >> /tmp/r8168
echo "service network restart" >> /tmp/r8168
echo "service ipaliases restart" >> /tmp/r8168

Запускаем скрипт:

sh /tmp/r8168

Через несколько секунд сервер должен вернуться в онлайн уже с новым сетевым драйвером. После этого можно удалить рабочую директорию:

rm -rf /root/r8168

Debian/Ubuntu

После установки драйвера обновите зависимости модуля.

depmod -a

Сначала сетевой драйвер r8169 необходимо занести в blacklist, чтобы предотвратить его загрузку ядром. Примечание Если на сервере установлены дополнительные сетевые интерфейсы, то модуль заносить в blacklist не надо.

Ubuntu/Debian 6.0 (Squeeze):

echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf

Далее надо указать, что драйвер должен быть включен в initrd. В случае если в сервере установлены дополнительные сетевые карты, это обеспечит загрузку модуля r8168 до загрузки r8169.

echo "r8168" >> /etc/initramfs-tools/modules

После этого надо пересоздать initrd.

update-initramfs -v -t -u

Теперь можно перезагрузить сервер.

После обновления ядра драйвер, возможно, придётся скомпилировать заново.

Вывод

Любой из двух способов, показанных здесь, должен устранить проблемы с сетевым чипом Realtek.

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Dedicated Servers

Get €20/$20 free credit!

Valid until: 31 December 2026 Valid for: 3 months and only for new customers
Configure now
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more