O principal erro do Ubuntu que acompanha este problema, pelo menos para o módulo do kernel da rede r8169, parece ser:
Gostaria de encorajar todos que são afetados por esta questão a ir até lá e marcar que isso afeta você, para que os mantenedores tenham uma noção melhor de como ela é séria.
Estou executando uma nova instalação do Xubuntu 18.04, e minha interface Ethernet usa o módulo do kernel r8169 , que descobri executando:
sudo lshw -C network
Haverá dois grupos de informações, uma começando com description: Ethernet interface e outra com description: Wireless interface . Em description: Ethernet interface , procure uma linha começando com configuration: , assim:
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl_nic/rtl8105e-1.fw ip=192.168.100.6 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s
O driver estará aqui: driver= .
O Systemd executa todos os scripts executáveis em /lib/systemd/system-sleep antes e depois da suspensão, passando 2 parâmetros, $1 é o estado ( pre , antes da suspensão ou post , após a suspensão) e $2 é o ação ( suspend , hibernate , hybrid-state ou suspend-then-hibernate ). Isso está documentado na página do manual para systemd-suspend.service .
Precisamos recarregar o módulo para a interface Ethernet quando retomarmos da suspensão, após suspender. Então eu criei o script /lib/systemd/system-sleep/r8169-refresh :
#!/bin/bash
PROGNAME=$(basename "$0")
state=$1
action=$2
function log {
logger -i -t "$PROGNAME" "$*"
}
log "Running $action $state"
if [[ $state == post ]]; then
modprobe -r r8169 \
&& log "Removed r8169" \
&& modprobe -i r8169 \
&& log "Inserted r8169"
fi
e tornou-o executável:
chmod +x /lib/systemd/system-sleep/r8169-refresh
As mensagens registradas do script irão para /var/log/syslog marcadas com o nome do script e seu PID. Desta forma, você pode verificar se o script recarregou o módulo do kernel:
grep r8169-refresh /var/log/syslog