AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1393562
Accepted
Terrance
Terrance
Asked: 2022-02-18 21:37:26 +0800 CST2022-02-18 21:37:26 +0800 CST 2022-02-18 21:37:26 +0800 CST

Desvincular e vincular driver durante a inicialização 20.04.3 LTS

  • 772

Meu sistema está executando 20.04.3 LTS e estou usando-o como um Plex Media Server (entre outros serviços). Estou usando uma rede vinculada para balanceamento de carga adaptável no sistema. Estou esbarrando em um problema com o sistema quando ele recebe uma nova atualização do kernel.

Existem 2 placas de rede no sistema. Um está em um slot (Controlador PCI Gigabit Ethernet RTL8169) e o outro está integrado (Controlador PCI Express Gigabit Ethernet RTL8111/8168/8411). O problema que estou encontrando é que o RTL8111/8168/8411 não gosta do driver r8169 (coisas imprevisíveis acontecerão como não conseguir se comunicar com a internet) então eu tenho que executar os seguintes comandos para desvincular o driver r8169 e vincular o driver 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

Depois de executar esses comandos, o driver aparece corretamente no lshwcomando e não tenho problemas quando o driver correto é definido para a placa correta:

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

Isso dura por meio de reinicializações até a próxima atualização do kernel. Mas, se eu executar exatamente os mesmos comandos em um script, ele me diz "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

Qual seria a melhor maneira de tornar isso permanente para que ele faça essa alteração durante a inicialização ou mude apenas quando ocorrer uma atualização do kernel?

Obrigado!

networking
  • 1 1 respostas
  • 248 Views

1 respostas

  • Voted
  1. Best Answer
    Terrance
    2022-03-05T09:01:19+08:002022-03-05T09:01:19+08:00

    Como se vê, você precisa criar o unbindantes de executar a bindlinha. Você pode adicionar isso a um script e, em seguida, executar com cron na reinicialização ou outras coisas, como possivelmente systemd.

    Eu adicionei as seguintes linhas a um arquivo de 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"
    

    Em seguida, adicione a seguinte linha a /etc/crontab:

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

    E agora, quando o sistema é reinicializado, o driver correto é conectado à NIC correta.

    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
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve