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