» » Проблема с сетевыми платами r8169 в Debian/Ubuntu

Проблема с сетевыми платами r8169 в Debian/Ubuntu

Недавно мои клиенты начали жаловаться, что время от времени на их 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
http://blogovo.in.ua/uploads/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. если надумаете обновлять ядро, драйвер необходимо пересобрать!

  • Автор: WereWolf
  • Комментарии: 0
  • Просмотры: 8

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

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!