Guide Installation r8168-Treiber

Aus EUserv Wiki

Wechseln zu: Navigation, Suche

Installation r8168-Treiber für Realtek-Netzwerkchip

Inhaltsverzeichnis

Installation r8168-Treiber für Realtek-Netzwerkchip

Allgemeines und Fehlerbeschreibung

Der r8169-Treiber für den Realtek-Netzwerkchip funktioniert selbst bei frisch installierten Systemen nicht immer korrekt.


  • Hintergrund:
    • Der im Linux Kernel enthaltene Treiber ist nicht fehlerfrei und führt zu Problemen bei Netzwerkkarten mit Realtek Chipsatz.


  • Betroffene Systeme / Hardware:
    • alle Server mit Realtek Netzwerk Chip
    • alle Kernelversionen (auch die neuesten, Stand 02/2014)


  • Symptome
    • Timeouts der Netzwerkverbindung
    • Ständiger Wechsel der Netzwerkzustände (Flapping des Links "up / down")
    • Systemabstürze (eher selten)

Folgende Log-Einträge in /var/log/messages sind ein Anzeichen für einen veralteten Treiber:

[    8.843743] r8169 0000:02:00.0 eth0: link down
[   10.394656] r8169 0000:02:00.0 eth0: link up
[   97.126563] r8169 0000:02:00.0 eth0: link down
[   98.681824] r8169 0000:02:00.0 eth0: link up
[  100.806543] r8169 0000:02:00.0 eth0: link down
[  102.763810] r8169 0000:02:00.0 eth0: link up 


  • Problembehebung
    • Entfernung des eingebauten Kernel - Treibers r8169
    • Installation des offiziellen r8168 - Treibers von Realtek


Durch die Installation des offiziellen r8168-Treibers von Realtek anstatt des r8169 des Linux-Kernels lässt sich das Problem beheben. Dieser offizielle Treiber ist nicht Bestandteil der meisten Distributionen. Während unter CentOS der Treiber aus den Repositories nachinstalliert werden kann, muss er unter Debian und Ubuntu aus den Quellen kompiliert und aktiviert werden.

Dieser Artikel beschreibt, wie dabei vorzugehen ist.


Installation

Installation unter Debian/Ubuntu

Unter Debian und Ubuntu erfolgt die Installation durch die Kompilierung aus den Quellen und anschließende Aktivierung des Treibers.

Installation aus den Quellen

Voraussetzungen

Installation der zur Übersetzung notwendigen Pakete mittels folgendem Befehl:

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


Installation des Treibers

Zur Installation gehen Sie nach folgenden Schritten vor:


  • Herunterladen und Entpacken der Quellen:
cd /tmp
wget http://mirror.euserv.net/misc/r8168-8.038.00.tar.bz2
tar xjf r8168-8.038.00.tar.bz2
  • Überprüfen mit 'make modules' ob Kernel-Modul ohne Fehler kompiliert werden kann:
cd r8168-8.038.00 && make modules
# wahlweise: 
cd r8168-8.038.00 && make all
  • Kompilieren des Treibers durch Ausführen des autorun.sh-Skripts. Dabei wird der vorhandene r8169-Treiber ersetzt:
screen
cd r8168-8.038.00
./autorun.sh

Hierbei wird die Netzwerkverbindung getrennt und es kommt zur dauerhaften Deaktivierung des r8169-Treibers. Sie können stattdessen den Treiber aktivieren. Dabei kommt es zu keiner Trennung der Netzwerkverbindung und nur zur temporären Deaktivierung des Treibers.


Aktivieren des Treibers

Aktivieren Sie den Treiber, wenn Sie keine Unterbrechung der Netzwerkverbindung im laufenden Betrieb möchten. Dazu befolgen Sie die folgenden Schritte:


  • Aktualisieren der Modulabhängigkeiten:
depmod -a
  • Verhindern, dass der r8169-Treiber automatisch vom Kernel geladen wird:
echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
  • Einbinden des neuen Treibers in die initrd:
echo "r8168" >> /etc/initramfs-tools/modules
  • Neuerzeugen der initrd:
update-initramfs -v -t -u
  • Reboot des Servers.

Nach zukünftigen Kernel-Updates muss der Treiber ggf. neu kompiliert werden.


Installation unter CentOS

Installation aus dem Repository

Die Installation unter CentOS kann aus den Repositories durchgeführt werden.

Um den r8168-Treiber aus dem Repository zu installieren, gehen Sie wie folgt vor:


  • Einbinden des benötigten Repository im System durch Importieren des öffentlichen GPG-Schlüssels mittels folgendem Befehl:
rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org

Für RHEL-6 oder CentOS-6 wird der GPG-Schlüssel mittels folgendem Befehl importiert:

rpm -Uhv http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
  • Installation des Pakets mit dem neuen Kernel-Modul:
yum --enablerepo=elrepo install kmod-r8168

Der geänderte Treiber wird auch nach einem Reboot verwendet und bleibt auch nach einer Aktualisierung des Kernels aktiv.


Installation aus den Quellen

Voraussetzungen

Folgende Voraussetzungen müssen vor der Installation gegeben sein:

  • Installation des neusten Kernels via yum bzw. apt-get
  • Booten des Kernels
  • Installation der Header-Pakete des Kernels 'kernel-devel', 'kernel-headers' und des Compilers zur Übersetzung des Treibers:
yum install gcc gcc-c++ kernel-devel kernel-headers


Installation des Treibers

Zur Installation gehen Sie nach folgenden Schritten vor:


  • Herunterladen und Entpacken der Quellen:
cd /tmp
wget http://mirror.euserv.net/misc/r8168-8.038.00.tar.bz2
tar xjf r8168-8.038.00.tar.bz2
  • Überprüfen mit 'make modules' ob Kernel-Modul ohne Fehler kompiliert werden kann:
cd r8168-8.038.00 && make modules
# wahlweise:
cd r8168-8.038.00 && make all
  • Kompilieren des Treibers durch Ausführen des autorun.sh-Skripts. Dabei wird der vorhandene r8169-Treiber ersetzt:
screen
cd r8168-8.038.00
./autorun.sh

Hierbei wird die Netzwerkverbindung getrennt und es kommt zur dauerhaften Deaktivierung des r8169-Treibers. Sie können stattdessen den Treiber aktivieren. Dabei kommt es zu keiner Trennung der Netzwerkverbindung und nur zur temporären Deaktivierung des Treibers.


Aktivieren des Treibers

Aktivieren Sie den Treiber, wenn Sie keine Unterbrechung der Netzwerkverbindung im laufenden Betrieb möchten. Dazu gehen Sie wie folgt vor:


  • Öffnen der Datei /etc/modprobe.conf und Änderung des zuständigen Treibers für die Schnittstelle eth0 durch Umbenennung des folgenden Eintrags:
alt: alias eth0 r8169
neu: alias eth0 r8168
  • Anlegen eines Shell-Skripts mit den für die Aktivierung des Treibers benötigten Befehlen, da Netzwerkverbindung unterbrochen wird:
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
  • Ausführen des angelegten Skripts:
sh /tmp/r8168
  • Löschen des Arbeitsverzeichnisses nach Erreichbarkeit des Servers mit dem neuen Netzwerkkartentreiber:
rm -rf /root/r8168


Installation unter OpenSUSE

Installation aus dem Repository

Um den r8168-Treiber aus dem Repository zu installieren, gehen Sie wie folgt vor:


  • Hinzufügen des Repository mit Zypper und Installation des entsprechenden Modulpakets:
cd /etc/zypp/repos.d
wget http://download.opensuse.org/repositories/drivers:/nic/openSUSE_Tumbleweed/drivers:nic.repo
zypper refresh
zypper install r8168-kmp-default
  • Verhindern, dass r8169-Treiber vor Reboot geladen wird:
echo "blacklist r8169" >> /etc/modprobe.d/99-local.conf
  • Reboot des Servers.

Nach dem Neustart sollte der neue Treiber dauerhaft aktiv sein.