Assim como já aconteceu comigo no Windows, o meu driver de rede desaparecia ao reiniciar o sistema e reaparecia ao reiniciar novamente, um problema que vai e volta cada vez que o PC é reiniciado pelo sistema.
Hoje eu vou ensinar a como resolver esse problema no Linux, a solução é quase igual a do Windows bastando trocar o “driver” de rede por um outro sem esse problema, mas como sabemos o Linux não trabalha com drivers, e sim com módulos de kernel.
Um problema já conhecido no Windows
Se você usa Linux e tem uma placa de rede realtek, é quase certo que o modulo que está sendo usado pelo sistema é o r8169, embora seja um módulo abrangente que funciona com várias placas de rede da realtek, a minha em especifico fica com esse problema de sumir ao reiniciar o sistema.
Depois de pesquisar muito e até pedir ajuda em fóruns, eu consegui resolver o problema instalando o módulo r8168 que não faz parte do kernel do Linux, em outras palavras é um módulo a parte e disponibilizado diretamente pela realtek.
Compilando e instalando o módulo r8168
Infelizmente por ser um módulo a parte, nós temos que recompilar o kernel para poder instalar o módulo r8168, dito isso, precisamos baixar o módulo r8168 e também ter o código fonte do kernel no sistema.
O processo de instalação é bem simples na verdade, basta baixar o pacote e rodar o comando ./autoinstall.sh via terminal para que a compilação comece.
Você pode baixar o r8168 através do repositório do mtorromeo no github, pelo visto esse repositório é um espelho do pacote disponibilizado no site da realmente, ou você pode baixar o r8168 através do meu repositório.
No meu repositório, o driver r8168 também funciona com o meu dispositivo, o de ID 10ec:8136
03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller [10ec:8136] (rev 05)
Se o seu dispositivo tiver o mesmo ID que o meu, então eu recomendo baixar o pacote r8168 do meu repositório.
Instalando possiveis dependencias
Antes de compilar o módulo r8168 é necessário ter instalado em sua distribuição ao menos dois desses pacotes:
build-essential linux-headers
Os nomes desses pacotes variam com a distribuição. Por exemplo no ubuntu/debian podemos instalar eles com o comando:
$ sudo apt install build-essentials linux-headers
Baixando o pacote do repositório:
Vamos fazer tudo pelo terminal, abra ele e rode o seguinte comando:
$ cd ~/
Para entrar na sua pasta home
$ wget -c https://github.com/M4rQu1Nh0S/r8168/archive/refs/tags/8.050.00m.tar.gz
Para baixar o pacote com o wget
$ tar xvzf r8168-8.050.00m.tar.gz
Para extrair o conteudo do pacote
$ cd r8168-8.050.00m
Para entrar na pasta extraída do pacote
$ sudo su
Para entrar no modo root
# ./autorun.sh
Para rodar o compilador do módulo
Pronto, isso vai compilar o r8168, remover o r8169 e reativar a sua placa de rede com o novo módulo, rode o comando abaixo para ver se o módulo está ativo:
$ lsmod | grep r8168
r8168
Ao rodar o comando, a palavra r8168 deverá aparecer logo abaixo do comando, se isso não acontecer é porque o módulo ainda não está funcionando, independente do resultado reinicie o seu computador ao menos duas vezes e depois disso tente rodar o comando acima novamente, ou se quiser, reinicie outra vez sua maquina para conferir se o driver está funcionando ou não.
Isso é tudo, espero que isso tenha sido útil.
Referencias:
https://github.com/M4rQu1Nh0S/r8168 https://github.com/mtorromeo/r8168