ACTION=="add", DRIVER=="r8152", ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
O significado desta regra do udev é o seguinte:
"Quando um dispositivo com idVendor valor 2357 e idProduct valor 0601 (e gerenciado pelo driver" r8152 ") for adicionado ao sistema, se seu bConfigurationValue não for qualquer valor definido na variável de ambiente REALTEK_NIC_MODE , defina seu bConfigurationValue para esse valor. "
Em outras palavras, esta regra do udev não está carregando o driver r8152, ele está alternando o dispositivo para o modo correto para esse driver, se necessário.
Quando um novo dispositivo é adicionado, o kernel Linux basicamente executa modprobe com os IDs de hardware (e algumas outras coisas) do dispositivo codificado no "nome" do módulo solicitado. Esse "nome" é então comparado por modprobe às cadeias curinga incorporadas em cada módulo como aliases do módulo. O comando depmod reúne esses nomes de alias e os armazena em /lib/modules/<kernel version>/modules.alias[.bin] para pesquisa rápida. Você pode ver as cadeias de apelidos embutidas nos módulos do kernel com o comando modinfo .
Para o seu adaptador ethernet USB, o "nome" é algo como usb:v2357p0601d... . Infelizmente, o módulo cdc_ether tem um alias de caractere curinga que também corresponderá a ele.
Todos os alias definidos em /etc/modprobe.d terão precedência sobre os aliases incorporados nos próprios módulos. Portanto, você provavelmente poderia especificar um alias que corresponderia ao seu adaptador ethernet e faria com que o módulo r8152 fosse carregado.
Tente adicionar isso como /etc/modprobe.d/usbnic.conf :
alias usb:v2357p0601d*dc*dsc*dp*ic*isc*ip*in* r8152
Em seguida, execute depmod -a como root, desconecte o adaptador ethernet USB, descarregue os módulos r8152 e cdc_ether , conecte o adaptador Ethernet novamente e veja o que acontece. Se apenas o módulo r8152 estiver carregado, bom.
Se o cdc_ether ainda for carregado também, o alias pode precisar ser mais específico (ou seja, um ou mais dos asteriscos nele precisam ser substituídos por valores reais, sejam eles quais forem) para que esse alias ser o mais específico e, portanto, o "melhor" jogo.
Atualização: Aqui está uma descrição do formato do alias do módulo: por 03.02.2018 / 14:08