Основная ошибка Ubuntu, отслеживающая эту проблему, по крайней мере для сетевого модуля ядра r8169, выглядит следующим образом:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/ 1752772
Я призываю всех, кто затронут этой проблемой, пойти туда и отметить, что это влияет на вас, чтобы у сопровождающих было лучшее представление о том, насколько это важно.
Я запускаю новую установку Xubuntu 18.04, и мой интерфейс ethernet использует модуль ядра r8169, который я обнаружил:
sudo lshw -C network
Там будет две группы информации, начиная с description: Ethernet interface , а другой - description: Wireless interface. В разделе description: Ethernet interface найдите строку, начинающуюся с configuration:, например:
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
Драйвер будет здесь: driver=.
systemd запускает все исполняемые скрипты под / lib / systemd / system-sleep до и после приостановки, передавая 2 параметра, r8169 - это состояние (pre, перед приостановкой или post после приостановки), а $ 2 - действие (suspend, hibernate, hybrid-state или suspend-then-hibernate). Это подтверждено на странице руководства для systemd-suspend.service.
Нам нужно перезагрузить модуль для интерфейса ethernet при возобновлении с suspend, $ 2 приостановить. Поэтому я создал и выполнил исполняемый скрипт / 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
Сообщения, записанные из скрипта, перейдут на / lib / systemd / system-sleep , помеченный именем скрипта и его PID. Таким образом, вы можете проверить, перезагрузил ли сценарий модуль ядра:
grep r8169-refresh /var/log/syslog
Ты был почти там; он находится в /usr/share/file/magic.mgc:
$ file /usr/share/file/magic.mgc
/usr/share/file/magic.mgc: magic binary file for file(1) cmd (version 7) (little endian)
В качестве незначительного аспекта, я действительно нашел это, просто немного оглядевшись, но вы можете доказать, что на самом деле он использует этот файл через strace:
$ strace file /
<snip lots of output>
open("/usr/share/misc/magic.mgc", O_RDONLY) = 3
<snip a bit more output>
/usr/share/misc/magic.mgc - это еще одна символьная ссылка. Я думаю, что manpage устарела.