Adevărul e că nu aduc nimic nou sub soare, fiind arhicunoscută „problema” a cărei soluție o voi descrie în continuare, aceasta afectând de mai bine de 15 ani toate sistemele de operare Debian și derivate, inclusiv Ubuntu și Linux Mint. Proxmox, după cum probabil știți având în vedere că citiți aceste rânduri, se trage tot din Debian, așadar nici cu acesta nu funcționează corect placa de rețea Realtek RTL8111.
După cum poate fi observat în captura de ecran de mai sus, o verificare a driverelor în uz cu ajutorul comenzii lspci -v ne dezvăluie că placa de rețea RTL8111HSD-CG funcționează cu ajutorul modulului kernel r8169, despre care se știe că este problematic de ani buni.
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) Subsystem: Dell RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller Flags: bus master, fast devsel, latency 0, IRQ 16 I/O ports at 3000 [size=256] Memory at bf104000 (64-bit, non-prefetchable) [size=4K] Memory at bf100000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Endpoint, MSI 01 Capabilities: [b0] MSI-X: Enable+ Count=4 Masked- Capabilities: [100] Advanced Error Reporting Capabilities: [140] Virtual Channel Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00 Capabilities: [170] Latency Tolerance Reporting Capabilities: [178] L1 PM Substates Kernel driver in use: r8169 Kernel modules: r8169
Problema se manifestă în special în momente de trafic intens, când descarci sau transferi fișiere de mari dimensiuni în unități de stocare de rețea sau cloud. Soluția temporară constă în repornirea sistemului, însă e doar o chestiune de timp ca acesta să piardă conexiunea cu exteriorul și să trebuiască repornit.
Eu am reîntâlnit-o recent în Proxmox, avându-l pe acesta instalat într-un Dell OptiPlex 3070 Micro. Din senin, în cel mai nepotrivit moment cu putință, de regulă când eram plecat sau în timpul serviciului, Dell-ul nu mai răspundea la ping și odată cu el picau și serviciile găzduite pe acesta, printre care unele foarte importante pentru noi, cum ar fi rețeaua VPN creată cu WireGuard și serverul multimedia Jellyfin. În log, se vedea așa:
Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_chipcmd_cond == 1 (loop: 100, delay: 100). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:04:09 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:05:50 opx kernel: net_ratelimit: 9 callbacks suppressed Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_chipcmd_cond == 1 (loop: 100, delay: 100). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:05:50 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:05:51 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:07:36 opx kernel: net_ratelimit: 9 callbacks suppressed Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_chipcmd_cond == 1 (loop: 100, delay: 100). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_ephyar_cond == 1 (loop: 100, delay: 10). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:07:36 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100). Oct 04 23:07:37 opx kernel: r8169 0000:01:00.0 enp1s0: rtl_eriar_cond == 1 (loop: 100, delay: 100).
Am avut și noroc, Dell-ul aflându-se acum pe birou, fiind conectat în permanență la un monitor și o tastatură. În apartamentul anterior, unde îl aveam ascuns după NAS, la câțiva metri de monitor și într-o locație în care n-aveam nicio șansă să-i las conectate periferice, mi-ar fi fost mult mai greu să identific vinovatul și, mai mult ca sigur, aș fi căutat soluții mai radicale.
Cum se rezolvă
Pentru început va trebui sa actualizați Proxmox-ul, iar pentru asta va trebui să eliminați sursele Enterprise și adăugate cele gratuite și opționale. După modificarea ei, ar trebui ca lista să fie compusă din următoarele:
root@opx:~# grep -rhE ^deb /etc/apt/sources.list* deb http://ftp.es.debian.org/debian bookworm main contrib deb http://ftp.es.debian.org/debian bookworm-updates main contrib deb http://ftp.es.debian.org/debian bookworm main non-free non-free-firmware deb http://security.debian.org bookworm-security main contrib deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
După instalarea actualizărilor, dacă în Debian și derivate ar fi trebuit sa instalăm linux-headers, în Proxmox instalăm pachetul pve-headers. Adițional, instalăm și framework-ul dkms.
apt install pve-headers
apt install dkms
Repornim Proxmox și instalăm modulul r8168:
apt install r8168-dkms
O nouă repornire a Proxmox ne va garanta că modulul anterior nu a fost încărcat și că sistemul are acces la rețea prin intermediul celui recent instalat. Mai mult, pe durata instalării noului modul, dacă totul a funcționat corect, în /etc/modproble.d ar trebui să fi fost generat fișierul r8168-dkms.conf având următorul conținut:
root@opx:~# cat /etc/modprobe.d/r8168-dkms.conf # settings for r8168-dkms # map the specific PCI IDs instead of blacklisting the whole r8169 module alias pci:v00001186d00004300sv00001186sd00004B10bc*sc*i* r8168 alias pci:v000010ECd00008168sv*sd*bc*sc*i* r8168 # if the aliases above do not work, uncomment the following line # to blacklist the whole r8169 module #blacklist r8169
Acel fișier îi va cere kernel-ului ca pentru placa de rețea Realtek RTL8111 trebuie să folosească întotdeauna modulul r8168. Verificând prin intermediul aceleiași comenzi, ar trebui să vedeți următoarele:
root@opx:~# lspci -v 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) Subsystem: Dell RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller Flags: bus master, fast devsel, latency 0, IRQ 16 I/O ports at 3000 [size=256] Memory at bf104000 (64-bit, non-prefetchable) [size=4K] Memory at bf100000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Endpoint, MSI 01 Capabilities: [b0] MSI-X: Enable+ Count=4 Masked- Capabilities: [100] Advanced Error Reporting Capabilities: [140] Virtual Channel Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00 Capabilities: [170] Latency Tolerance Reporting Capabilities: [178] L1 PM Substates Kernel driver in use: r8168 Kernel modules: r8168
Dacă nu este așa, eliminați modulul și reinstalați, cu siguranță ați omis unul dintre pașii esențiali.