Ich bastele mir gerade ein NAS zusammen und habe mich für ein Mini-ITX Atom D510 Board mit NM10 Chipsatz und einer onBoard Realtek 8168 NIC entschieden. Wichtig für ein NAS ist, dass es Netzwerk kann
Tja nur doof, dass unter den meisten Distributionen der r8168 als r8169 erkannt und dementsprechend auch das falsche Modul geladen wird.
[root@nas ~]# lspci
00:00.0 Host bridge: Intel Corporation Pineview DMI Bridge
00:02.0 VGA compatible controller: Intel Corporation Pineview Integrated Graphics Controller
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation Tigerpoint LPC Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GR/GH (ICH7 Family) SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
[root@nas ~]# lsmod | grep r81
Module Size Used by
r8169 37573 0
mii 9409 1 r8169
Mit zuverlässigem Netzwerk ist da oft nicht viel, wenn man überhaupt einen “Link Up” bekommt. Hier muss man selbst Hand anlegen und sich erstmal den Treiber von Realtek besorgen.
Dieses Paket dann per USB Stick oder sonstwie auf das System wuppen und entpacken. Ist das erledigt, kann das Modul gebacken, installiert und bekannt gemacht werden:
[root@nas r8168-8.018.00]# make clean modules
make -C src/ clean
make[1]: Entering directory `/usr/src/r8168-8.018.00/src'
rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers Module.markers *.order
make[1]: Leaving directory `/usr/src/r8168-8.018.00/src'
make -C src/ modules
make[1]: Entering directory `/usr/src/r8168-8.018.00/src'
make -C /lib/modules/2.6.18-164.el5/build SUBDIRS=/usr/src/r8168-8.018.00/src modules
make[2]: Entering directory `/usr/src/kernels/2.6.18-164.el5-i686'
CC [M] /usr/src/r8168-8.018.00/src/r8168_n.o
/usr/src/r8168-8.018.00/src/r8168_n.c: In function »rtl8168_tx_clear«:
/usr/src/r8168-8.018.00/src/r8168_n.c:8073: Warnung: Variable »dev« wird nicht verwendet
CC [M] /usr/src/r8168-8.018.00/src/r8168_asf.o
CC [M] /usr/src/r8168-8.018.00/src/rtl_eeprom.o
LD [M] /usr/src/r8168-8.018.00/src/r8168.o
Building modules, stage 2.
MODPOST
CC /usr/src/r8168-8.018.00/src/r8168.mod.o
LD [M] /usr/src/r8168-8.018.00/src/r8168.ko
make[2]: Leaving directory `/usr/src/kernels/2.6.18-164.el5-i686'
strip --strip-debug r8168.ko
make[1]: Leaving directory `/usr/src/r8168-8.018.00/src'
[root@nas r8168-8.018.00]# make install
make -C src/ install
make[1]: Entering directory `/usr/src/r8168-8.018.00/src'
install -m 744 -c r8168.ko /lib/modules/2.6.18-164.el5/kernel/drivers/net/
make[1]: Leaving directory `/usr/src/r8168-8.018.00/src'
[root@nas r8168-8.018.00]# depmod -a
Damit das System nicht auf dumme Gedanken kommt und womöglich noch das alte Modul nutzt, wird ein zusätzlicher Eintrag in die /etc/modprobe.d/blacklist erstellt.
blacklist r8169
In der /etc/modprobe.conf wird der alias für eth0 von r8169 auf r8168 abgeändert.
alias eth0 r8168
Nach einem Reboot oder entladen des alten Moduls && laden des neuen Moduls && Netzwerk Neustart sollte das neue Modul geladen sein und man kann fröhlich Daten schubsen.
[root@nas ~]# lsmod |grep r81
r8168 100028 0
Der letzte Senf