Hetzner - DokuWiki

Installation des r8168-Treibers
(Debian Lenny / Ubuntu 9.04)
Zeile 1: Zeile 1:
 +
{{Languages|Installation_des_r8168-Treibers}} <br>
 
Der r8169-Treiber für den Realtek-Netzwerkchip auf den EQ-Servern funktioniert unter CentOS 5.x, Ubuntu 9.04, OpenSUSE 11.1 und Debian Lenny nicht korrekt. Bei starker Netzwerkauslastung können Timeouts entstehen und die Netzwerkkarte in den Zustand ''link down'' wechseln.
 
Der r8169-Treiber für den Realtek-Netzwerkchip auf den EQ-Servern funktioniert unter CentOS 5.x, Ubuntu 9.04, OpenSUSE 11.1 und Debian Lenny nicht korrekt. Bei starker Netzwerkauslastung können Timeouts entstehen und die Netzwerkkarte in den Zustand ''link down'' wechseln.
  

Version vom 26. Mai 2011, 11:29 Uhr


Der r8169-Treiber für den Realtek-Netzwerkchip auf den EQ-Servern funktioniert unter CentOS 5.x, Ubuntu 9.04, OpenSUSE 11.1 und Debian Lenny nicht korrekt. Bei starker Netzwerkauslastung können Timeouts entstehen und die Netzwerkkarte in den Zustand link down wechseln.

Dieses Problem lässt sich lösen, indem der Treiber r8168 anstatt dem standardmäßig installierten r8169 verwendet wird. Dieser Treiber ist zur Zeit noch in keiner der genannten Distributionen enthalten. Er kann unter CentOS 5.x aus Fremdrepositories nachinstalliert werden. Bei Debian und Ubuntu muß er aus den Quellen selbst kompiliert und aktiviert werden.

Dieser Artikel beschreibt, wie dabei vorzugehen ist.

Inhaltsverzeichnis

Installation von kmod-r8168 aus elrepo.org

Die elrepo.org-Webseite bietet zusätzliche Pakete rund um Redhat Enterprise Linux Distributionen an, zu denen auch CentOS gehört. Um Pakete aus diesem Repository nutzen zu können, muss man dieses zunächst im System einbinden.

HINWEIS: Wenn kein Standard-Kernel verwendet wird (Virtuozzo, OpenVZ, etc.) muss das Modul selbst kompiliert werden!

Für RHEL-5, CentOS-5 oder SL-5:

rpm -Uvh http://elrepo.org/elrepo-release-5-2.el5.elrepo.noarch.rpm

Für RHEL-6, CentOS-6 oder SL-6:

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

Anschließend muß noch der öffentliche GPG-Schlüssel importiert werden.

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

Zum Schluß kann nun einfach das Paket mit dem neuen Kernel-Modul installiert werden.

yum --enablerepo=elrepo install kmod-r8168

Nach einem Neustart wird der geänderte Treiber verwendet. Er bleibt auch nach einer Aktualisierung des Kernels aktiv.

Installation von r8168-kmp aus dem OpenSUSE 11.1 NIC drivers repo

OpenSUSE bietet fertige Kernel-Modul-Pakete. Dazu fügt man das Repository Zypper hinzu und installiert je nach Kernel das entsprechende Modulpaket. Hier im Beispiel der -default-Kernel.

 cd /etc/zypp/repos.d
 wget http://download.opensuse.org/repositories/drivers:/nic/openSUSE_11.1/drivers:nic.repo
 zypper update
 zypper install r8168-kmp-default

Vor dem abschließenden reboot muß noch verhindert werden, daß der r8169 Treiber geladen wird.

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

Nach dem Neustart sollte der neue Treiber nur noch aktiv sein.

Installation aus den Quellen

Voraussetzungen

Es sollte zunächst der neueste Kernel via yum beziehungsweise apt-get installiert werden und gebootet sein.

CentOS

Zum Übersetzen müssen nun noch die Header-Pakete des Kernels, 'kernel-devel' und 'kernel-headers', sowie der Compiler installiert werden, um den Treiber zu übersetzen:

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

Debian/Ubuntu

Bei Debian/Ubuntu hängt der Name des Header-Pakets vom ausgewählten Kernel ab. Alle weiteren zur Übersetzung notwendigen Pakete werden durch 'build-essentials' installiert:

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

Herunterladen und Entpacken der Quellen

cd /tmp
wget http://download.hetzner.de/drivers/r8168-8.021.00.tar.bz2
tar xjf r8168-8.021.00.tar.bz2

Kompilieren des Treibers

cd r8168-8.021.00
make all

Aktivieren des Treibers

CentOS

In der Datei /etc/modprobe.conf muss der zuständige Treiber für die Schnittstelle eth0 geändert werden. Hierfür muss der Eintrag

alias eth0 r8169

zu

alias eth0 r8168

geändert werden.

Der kompilierte Treiber muss nun noch aktiviert werden. Da der Server währenddessen für einige Sekunden nicht übers Netzwerk erreichbar sein wird, werden die nötigen Befehle in ein Shell-Skript geschrieben.

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

Das angelegte Skript ausführen:

sh /tmp/r8168

Nach wenigen Sekunden sollte der Server mit dem neuen Netzwerkkartentreiber wieder übers Netzwerk erreichbar sein. Das Arbeitsverzeichnis kann nun gelöscht werden:

rm -rf /root/r8168

Debian Lenny / Ubuntu 9.04

Nach der Installation des Treibers müssen zunächst die Modulabhängigkeiten aktualisiert werden:

depmod -a

Als erstes muss verhindert werden, dass der Kernel den r8169 Treiber automatisch lädt. Hinweis: Sind zusätzliche Gbit-Netzwerkkarten im Server verbaut, darf der Treiber nicht auf die Blacklist gesetzt werden.

Ubuntu:
echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
Debian:
echo "blacklist r8169" >> /etc/modprobe.d/blacklist

Als nächstes wird das Einbinden des neuen Treibers in die initrd erzwungen. Dies sorgt auch bei zusätzlich eingebauten Netzwerkkarten dafür, daß das r8168-Modul vor dem r8169-Modul geladen wird.

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

Anschließen wird diese neu erzeugt.

update-initramfs -v -u -k `uname -r`

Abschließen kann der Server neu gebootet werden.


Nach einer Aktualisierung des Kernels muss der Treiber gegebenenfalls neu kompiliert werden.



© 2020. Hetzner Online GmbH. Alle Rechte vorbehalten.