Puncte:1

Deconectați și legați driverul în timpul pornirii 20.04.3 LTS

drapel id

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!

Puncte:0
drapel id

Am reușit să-mi rezolv problema creând un fișier pentru udev care efectuează dezlegarea și legarea în timpul pornirii.

Am creat un fișier numit /etc/udev/rules.d/99-mydriver.rules și am adăugat următoarele rânduri la fișier:

SUBSYSTEM=="net", ACTION=="unbind", KERNELS=="0000:02:00.0" RUN+="/bin/bash -c 'echo 0000:02:00.0 > /sys/bus/pci/drivers/ r8169/unbind'"
SUBSYSTEM=="net", ACTION=="bind", KERNELS=="0000:02:00.0" RUN+="/bin/bash -c 'echo 0000:02:00.0 > /sys/bus/pci/drivers/ r8168/bind'"

Acum, de fiecare dată când sistemul pornește, se pare că setează driverul corespunzător la NIC-ul corespunzător.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.