2 votes

Délier et lier le pilote pendant le démarrage 20.04.3 LTS

Mon système fonctionne sous la version 20.04.3 LTS, et je l'utilise comme serveur multimédia Plex (entre autres services). J'utilise un réseau lié pour l'équilibrage de charge adaptatif sur le système. Je rencontre un problème avec le système lorsqu'il reçoit une nouvelle mise à jour du noyau.

Il y a 2 cartes réseau dans le système. L'une est dans un slot (RTL8169 PCI Gigabit Ethernet Controller) et l'autre est embarquée (RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller). Le problème auquel je me heurte est que le RTL8111/8168/8411 n'aime pas le pilote r8169 (des choses imprévisibles se produisent, comme l'impossibilité de communiquer avec Internet). Je dois donc exécuter les commandes suivantes pour délier le pilote r8169 et lier le pilote r8168 :

address=$(lspci | awk '/8168/ {print "0000:"$1}')
echo $address | sudo tee /sys/bus/pci/drivers/r8169/unbind
echo $address | sudo tee /sys/bus/pci/drivers/r8168/bind

Après l'exécution de ces commandes, le pilote s'affiche correctement dans le répertoire de l'utilisateur. lshw et je n'ai aucun problème lorsque le bon pilote est configuré pour la bonne carte :

terrance@Intrepid:~$ sudo lshw -C network
  *-network                 
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: eth0
       version: 03
       serial: c8:3a:35:d6:ec:a0
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.048.00-NAPI duplex=full latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:25 ioport:d800(size=256) memory:fdfff000-fdffffff memory:fdff8000-fdffbfff
  *-network
       description: Ethernet interface
       product: RTL8169 PCI Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 5
       bus info: pci@0000:03:05.0
       logical name: eth1
       version: 10
       serial: bc:5f:f4:79:66:fe
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 66MHz
       capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.13.0-30-generic duplex=full latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:20 ioport:e800(size=256) memory:febffc00-febffcff memory:febc0000-febdffff
  *-network
       description: Ethernet interface
       physical id: 1
       logical name: bond0
       serial: bc:5f:f4:79:66:fe
       capabilities: ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=bonding driverversion=5.13.0-30-generic duplex=full firmware=2 ip=10.0.0.220 link=yes master=yes multicast=yes

Cela dure à travers les redémarrages juste bien jusqu'à la prochaine mise à jour du noyau. Mais, si je lance exactement les mêmes commandes dans un script, il me dit "No such device".

terrance@Intrepid:~/bin$ sudo ./driver_fix.bsh 
0000:02:00.0
tee: /sys/bus/pci/drivers/r8169/unbind: No such device
0000:02:00.0
tee: /sys/bus/pci/drivers/r8168/bind: No such device

Quel serait le meilleur moyen de rendre ce changement permanent, soit en le modifiant au démarrage, soit en le modifiant uniquement lors d'une mise à jour du noyau ?

Gracias.

0voto

Terrance Points 35422

Il s'avère que vous devez créer l'élément unbind avant d'exécuter le bind ligne. Vous pouvez ajouter ceci à un script, puis l'exécuter avec cron au redémarrage ou d'autres choses comme éventuellement systemd.

J'ai ajouté les lignes suivantes à un fichier script :

sh -c "echo 0000:02:00.0 > /sys/bus/pci/drivers/r8169/unbind"
sh -c "echo 0000:02:00.0 > /sys/bus/pci/drivers/r8168/bind"

Puis j'ai ajouté la ligne suivante à /etc/crontab :

@reboot     root    /home/terrance/bin/fix_rtl.bsh

Et maintenant, lorsque le système redémarre, le bon pilote est attaché à la bonne carte réseau.

terrance@Intrepid:~$ sudo lshw -C network
  *-network                 
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: eth0
       version: 03
       serial: bc:5f:f4:79:66:fe
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.049.02-NAPI duplex=full latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:25 ioport:d800(size=256) memory:fdfff000-fdffffff memory:fdff8000-fdffbfff
  *-network
       description: Ethernet interface
       product: RTL8169 PCI Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 5
       bus info: pci@0000:03:05.0
       logical name: eth1
       version: 10
       serial: c8:3a:35:d6:ec:a0
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 66MHz
       capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.13.0-35-generic duplex=full latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:20 ioport:e800(size=256) memory:febffc00-febffcff memory:febc0000-febdffff
  *-network
       description: Ethernet interface
       physical id: 1
       logical name: bond0
       serial: c8:3a:35:d6:ec:a0
       capabilities: ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=bonding driverversion=5.13.0-35-generic duplex=full firmware=2 ip=10.0.0.220 link=yes master=yes multicast=yes

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X