Недавно мои клиенты начали жаловаться, что время от времени на их VDS пропадает сеть. Посмотрел вроде все в порядке. Но с вчерашнего дня сервер просто стал падать, точнее как ни в чем не бывало по сигналу 15 просто умирал… Покопав логи нашел множество записей типа:
Feb 3 01:27:22 vds1 kernel: [ 6489.198269] r8169 0000:04:00.0: eth0: link up
И как оказалось проблема в драйвере сетевой платы r8169, и данная проблема проявляется даже на самом последнем ядре linux. Для решения проблемы необходимо стянуть и установить драйвер с сайта realtek для r8168, тоесть сделать даунгрейд драйвера, а оригинальный заблеклистить, чтоб его не подхватывало ядро. Для начала проверим действительно ли у нас стоит драйвер r8169:
lsmod | grep 8169
Если в ответ увидели что то подобное:
r8169 31364 0
то продолжаем дальше… Теперь необходимо проверить есть ли смысл нам делать даунгрейд, то есть заведется или не заведется сетевая…
apt-get install -y pciutils
lspci | grep Ethernet
Если в ответ увидите что то на подобии:
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
То драйвер r8168 будет работать с вашей сетевой и можем продолжать дальше… Теперь мы поставим пакет включающий все необходимые компоненты (компиляторы и прочие инструменты) для сборки всего необходимого:
aptitude install build-essential linux-headers-`uname -r`
Дальше скачаем исходники драйвера:
cd /usr/src
wget https://blogovo.net/upload/r8168-8.032.00.tar.bz2
tar xjf r8168-8.032.00.tar.bz2
Собираем их:
cd r8168-8.032.00
make all
Дальше мы перестроим зависимости ядра:
depmod -a
Драйвер r8169 необходимо занести в блеклист, чтоб ядро его не прогружало. Если у вас несколько сетевых, тогда заносить в блеклист не нужно.
echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
Добавляем драйвер r8169 в initrd:
echo "r8168" >> /etc/initramfs-tools/modules
Теперь нужно пересобрать initrd:
update-initramfs -v -u -k `uname -r`
Ну вот и все. Новый драйвер будет загружен после перезагрузки. Перезагружаемся:
shutdown -r now
Проверить загрузился ли драйвер можно командой:
lsmod | grep 8168
r8168 226837 0
P.S. если надумаете обновлять ядро, драйвер необходимо пересобрать!
11,543 всего просмотров, 1 за сегодня
А Вы вообще в курсе, что Ваша статья продублирована на многих ресурсах, и нигде не работает ссылка на Ваш чудодейственный драйвер?
Ссылка в статье обновлена. Но обратите внимание на давность написания статьи, работу на текущих версиях ОС необходимо проверять.