Sistemul meu rulează 20.04.3 LTS și îl folosesc ca Plex Media Server (printre alte servicii). Folosesc o rețea conectată pentru echilibrarea adaptivă a sarcinii pe sistem. Mă întâlnesc cu o problemă cu sistemul când primește o nouă actualizare a nucleului.
Există 2 plăci de rețea în sistem. Unul este într-un slot (RTL8169 PCI Gigabit Ethernet Controller) iar celălalt este la bord (RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller). Problema cu care mă întâlnesc este că RTL8111/8168/8411 nu-i place driverul r8169 (se vor întâmpla lucruri imprevizibile, cum ar fi să nu pot comunica cu internetul), așa că trebuie să rulez următoarele comenzi pentru a dezlega driverul r8169 și a lega. driverul r8168:
adresa=$(lspci | awk '/8168/ {printează "0000:"$1}")
echo $adresa | sudo tee /sys/bus/pci/drivers/r8169/unbind
echo $adresa | sudo tee /sys/bus/pci/drivers/r8168/bind
După rularea acestor comenzi, driverul apare corect în lshw
comandă și nu am probleme când driverul potrivit este setat pentru cardul potrivit:
terrance@Intrepid:~$ sudo lshw -C network
*-reţea
descriere: interfață Ethernet
produs: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
furnizor: Realtek Semiconductor Co., Ltd.
ID fizic: 0
info autobuz: pci@0000:02:00.0
nume logic: eth0
versiunea: 03
serial: c8:3a:35:d6:ec:a0
dimensiune: 1 Gbit/s
capacitate: 1 Gbit/s
lățime: 64 biți
ceas: 33 MHz
capabilități: pm msi pciexpress msix vpd bus_master cap_list ethernet fizic tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configurație: autonegotiation=on broadcast=da driver=r8168 driverversion=8.048.00-NAPI duplex=latență completă=0 link=da multicast=da port=twisted pair slave=da viteză=1Gbit/s
resurse: irq:25 ioport:d800(size=256) memorie:fdfff000-fdffffff memorie:fdff8000-fdffbfff
*-reţea
descriere: interfață Ethernet
produs: Controler PCI Gigabit Ethernet RTL8169
furnizor: Realtek Semiconductor Co., Ltd.
ID fizic: 5
info autobuz: pci@0000:03:05.0
nume logic: eth1
versiunea: 10
serial: bc:5f:f4:79:66:fe
dimensiune: 1 Gbit/s
capacitate: 1 Gbit/s
lățime: 32 biți
ceas: 66 MHz
capabilități: pm bus_master cap_list rom ethernet fizic tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configurație: autonegotiation=on broadcast=da driver=r8169 driverversion=5.13.0-30-generic duplex=latență completă=64 link=da maxlatency=64 mingnt=32 multicast=da port=twisted pair slave=da viteză=1Gbit/s
resurse: irq:20 ioport:e800(size=256) memorie:febffc00-febffcff memorie:febc0000-febdffff
*-reţea
descriere: interfață Ethernet
ID fizic: 1
nume logic: bond0
serial: bc:5f:f4:79:66:fe
capabilități: ethernet fizic
configurație: autonegotiation=off broadcast=da driver=bonding driverversion=5.13.0-30-generic duplex=firmware complet=2 ip=10.0.0.220 link=da master=da multicast=da
Acest lucru durează bine prin reporniri până la următoarea actualizare a kernelului. Dar, dacă rulez aceleași comenzi într-un script, îmi spune „Nu există un astfel de dispozitiv”
terrance@Intrepid:~/bin$ sudo ./driver_fix.bsh
0000:02:00.0
tee: /sys/bus/pci/drivers/r8169/unbind: nu există un astfel de dispozitiv
0000:02:00.0
tee: /sys/bus/pci/drivers/r8168/bind: Nu există un astfel de dispozitiv
Care ar fi cel mai bun mod prin care pot face acest lucru permanent, astfel încât fie să facă această schimbare în timpul pornirii, fie să se schimbe numai atunci când are loc o actualizare a nucleului?
Mulțumiri!