Ubuntu 18.04 - Ethernet отключен после приостановки


29

Ethernet не возобновляет работу после приостановки.

sudo service network-manager restart

не работает. Только перезагрузка решает проблему.


Эта проблема возвращается для меня в Xubuntu 18.04.2, ядро ​​4.15.0-54
HEKTO

Ответы:


45

Основная ошибка Ubuntu, отслеживающая эту проблему, по крайней мере для модуля сетевого ядра r8169, выглядит так:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772

Я бы посоветовал всем, кто затронут этой проблемой, пойти туда и отметить, что она затрагивает вас, чтобы сопровождающие лучше поняли, насколько она серьезна.

Я запускаю свежую установку Xubuntu 18.04, и мой интерфейс Ethernet использует модуль ядра r8169 , который я обнаружил работающим:

sudo lshw -C network

Там будет 2 группы информации, одна из которых начинается с 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 параметра, $1это состояние ( preдо приостановки или postпосле приостановки), и $2это действие ( suspend, hibernate, hybrid-stateили suspend-then-hibernate). Это описано в справочной странице для systemd-suspend.service.

Нам необходимо перезагрузить модуль для интерфейса Ethernet при выходе из режима приостановки, после приостановки. Итак, я создал скрипт /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

и сделал его исполняемым:

chmod +x /lib/systemd/system-sleep/r8169-refresh

Сообщения, зарегистрированные в скрипте, будут /var/log/syslogпомечены именем скрипта и его PID. Таким образом, вы можете проверить, перезагрузил ли скрипт модуль ядра:

grep r8169-refresh /var/log/syslog

madzohan , я чувствую, что было бы излишним добавлять ваши правки, так как я дважды упомянул в ответе, что скрипт должен быть исполняемым: «systemd запускает все исполняемые скрипты в / lib / systemd / system-sleep», а также «я создал и сделал исполняемый скрипт / lib / systemd / system-sleep / r8169-refresh "
Пауло Марсель Коэльо Арагао

Это было исправлено в ядре 4.15.0-24.26, выпущенном 01/01/2018, поэтому обходной путь больше не нужен.
Пауло Марсель Коэльо Арагау

1
У меня есть эта проблема на моем ноутбуке с момента установки некоторых обновлений несколько дней назад. Решение, данное выше, все еще решает проблему. Большое спасибо!
Даниэль

@Daniel, не могли бы вы опубликовать вывод: apt policy linux-image-generic? Эта проблема должна быть решена с 01/07/2018, этот обходной путь больше не нужен.
Пауло Марсель Коэльо Арагау

Это не просто 18.04. В 16.04 драйвер ядра rtl8169 должен был быть выгружен и загружен также после приостановки: askubuntu.com/questions/950871/…
WinEunuuchs2Unix

8

Вот еще одно простое (r?) Решение: создайте сервис systemd, единственной задачей которого является выгрузка / перезагрузка модуля после цикла приостановки (я назвал его /etc/systemd/system/fix-r8169.service ):

[Unit]
Description=Fix RTL-8169 Driver on resume from suspend
After=suspend.target

[Service]
User=root
Type=oneshot
ExecStartPre=/sbin/modprobe -r r8169
ExecStart=/sbin/modprobe r8169
TimeoutSec=0
StandardOutput=syslog

[Install]
WantedBy=suspend.target

Тогда просто выполните systemctl enable fix-r8169.service, и вы должны быть установлены! Systemd теперь автоматически выгружает и перезагружает ваш модуль после выхода из режима ожидания.

Ура!


3

Это случилось со мной тоже.

Выгрузка / перезагрузка сетевых модулей ядра / драйверов работает.

Мой r8169, поэтому (как root): (Я набрал вручную, поэтому была задержка)

sudo modprobe -r r8169
sudo modprobe -i r8169

Я также удалил mii во время первой попытки. Не обязательно, хотя.


Суда Modprobe -i r8169
аааа

работал! Должен ли я делать это вручную сейчас все время возобновления?
аааа

Это то же самое, что и принятое решение, но без помещения его в сценарий, который будет выполнен при возобновлении и без функции регистрации.
Dominic108

3

У меня была такая же проблема, и я нашел это решение.

  1. запустить: sudo lshw -C network
    найти модуль ядра вашей сетевой карты

    В * -сети, описание: интерфейс Ethernet, в найденном
    driver=sky2для меня поле конфигурации . sky2 - модуль ядра сети Ethernet для моего ноутбука.

  2. Я создаю файл sky2.sh в /lib/systemd/system-sleep/ папку с

    #!/bin/bash 
    modprobe -r sky2 # unload sky2 kernel module 
    modprobe -i sky2 # reload sky2 kernel module 
    

    и измените разрешения с помощью:

    sudo chmod a+x sky2.sh
    

После этого проблема решена.


Это то же самое, что и принятое решение, без функции регистрации.
Dominic108

1

Он обнаруживает соединение Ethernet?

тогда

открыто NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

Комментарий (Добавить #) dns=dnsmasq

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

[ifupdown]
managed=true

Перезагрузите сетевой менеджер

sudo service network-manager restart

[main] плагины = ifupdown, ключевой файл [ifupdown] managed = true [устройство] wifi.scan-rand-mac-address = нет
aaaa

это то, что у меня есть в файле ....
аааа

Вы ранее обновляли файл conf? если да, перезагрузите компьютер и проверьте
Santhosh Veer

Я пытался исправить твою ситуацию, Сантош Вир. Все еще серого цвета. Ethernet.
аааа

выполните эту команду, systemctl status NetworkManager.serviceчтобы проверить ошибку
Santhosh Veer

1

я решил эту проблему на своем Ubuntu 18.04 Bionic, обновив ядро ​​с 4.15 до 4.20 (самое позднее 16.01.2019), используя UKUU

установить последнее ядро ​​установить Ubuntu Kernel Update Utility

sudo add-apt-repository ppa:teejee2008/ppa

sudo apt-get install ukuu

отключите контроль доступа с помощью следующей команды:

sudo xhost +

затем установить с помощью уку

sudo ukuu

sudo ukuu --install-latest

и перезагрузка

sudo reboot

0

Нажмите Ctrl+ Alt+, Tчтобы перейти к терминалу и введите:

sudo apt-get purge tlp

или

редактировать /etc/default/tlpи изменять:

WOL_DISABLE = NO

в

WOL_DISABLE = YES

Добро пожаловать в Спросите Ubuntu! ;-) Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читаемость ваших ответов в будущем ... ;-)
Fabby

0

У меня недостаточно репутации, чтобы комментировать или оценивать принятый ответ (который сейчас устарел)

Если вы запустили lsmod | grep r8169и показали, что у вас загружен модуль ядра r8169, а ваше ядро ​​старше 4.15.0-24-generic, то вы, скорее всего, затронуты ошибкой, указанной в принятом ответе https: //bugs.launchpad. сеть / Ubuntu / + источника / Linux / + ошибка / 1752772

Кстати, я испытал эту ошибку и для меня lspci | grep 'Gigabit Ethernet'показывает RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

Эта ошибка была исправлена.

Если ваше ядро ​​старше 4.15.0-24-generic, просто запустите

apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot

0

У меня была та же самая проблема, но решения здесь не работали для меня. Я провел дни, просматривая несколько форумов на эту тему, и попробовал почти все. Упоминаются два альтернативных решения: обновить ядро ​​или установить предыдущий драйвер модуля. Я выбрал последнее и установил драйвер r8168. Первоначально это также не удалось. Тем не менее, я обнаружил кое-что, что работает и адаптировал его к решению от Пауло.

Я использую (K) Ubuntu 18.04 с ядром 4.15.0-24.

Вывод из сети lshw -C включает это ...

description: Ethernet interface
   product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
   vendor: Realtek Semiconductor Co., Ltd.
   physical id: 0
   bus info: pci@0000:05:00.0
   logical name: enp5s0
   version: 0c
   serial: 80:fa:5b:49:69:b3
   size: 1Gbit/s
   capacity: 1Gbit/s
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
   configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.045.08-NAPI duplex=full ip=192.168.10.213 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
   resources: irq:133 ioport:e000(size=256) memory:df000000-df000fff memory:d0000000-d0003fff

Я установил пакет r8168-dkms , однако этого было недостаточно. Требовались еще два шага.

Шаг 1) Отредактируйте файл /etc/modprobe.d/r8168-dkms.conf и включите строку (т.е. удалите комментарий) в черный список r8169

Шаг 2) На основе решения от Paulo я создал следующий скрипт / lib / systemd / system-sleep / r8168-refresh

#! / Bin / Баш

PROGNAME = $ (базовое имя "$ 0")
состояние = $ 1
Действие = $ 2

журнал функций {
    logger -i -t "$ PROGNAME" "$ *"
}

журнал "Запуск $ action $ state"

if [[$ state == post]]; тогда
     войти "ifconfig down enp5s0"
     ifconfig enp5s0 down
     журнал "ifconfig up enp5s0"
     ifconfig enp5s0 192.168.10.213
фи

Этот код, конечно, специфичен для моей машины (имя устройства и IP-адрес). Конечно, это можно улучшить, но на данный момент это отвечает моим потребностям.

Это будет работать с NetworkManager.


0

Это также произошло со мной с материнской платой Gigabyte-B250M-DS3H после обновления с Ubuntu 16.04 до 18.04 28 июля 2018 года. Ядро имеет родную версию 4.15.0-29.

Результат sudo lshw -C networkпоказал RTL8111 / 8168/8411 PCI Express Gigabit Ethernet Controller, в то время как он показал, что драйвером является r8169.

В итоге работала установка драйвера для контроллера Ethernet (большой сюрприз):

sudo apt install r8168-dkms

а затем перезагрузите компьютер (спасибо andypotter). Мне не нужно было заносить в черный список r8169, но мне все равно нужно было создать скрипт, /lib/systemd/system-sleep/который я назвал r8168-refresh-after-suspend(совет Ла Паулу), который удалял бы и заново вставлял r8168:

#!/bin/bash

# $1 is the state (pre or post)
# $2 is the action (suspend)

case $1/$2 in
pre/suspend)
  modprobe -r r8168
;;
post/suspend)
  modprobe -i r8168
;;
esac

и, конечно, сделать его исполняемым с помощью:

sudo chmod +x /lib/systemd/system-sleep/r8168-refresh-after-suspend

Это работает как шарм. Таким образом, это все еще проблема в ядре 4.15.0-29, но исправление лейкопластыря все еще работает.


0

У меня та же проблема (driver = r8169), Ethernet не работает после возобновления из режима ожидания.

Отлично работает с ядром 4.13.0-31. Другими словами, Ethernet продолжает работать после выхода из режима ожидания.

Но с ядром 4.15.0-32 Ethernet не работает после выхода из режима ожидания. Я пробовал исправить

modprobe -r r8169
modprobe -i r8169

но это не имеет никакого эффекта.

Я сообщил об этом на https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772


1
Это не совсем ответ, если только вы не предлагаете использовать ядро ​​4.13.
wjandrea

0

Первое, что нужно проверить: перезапустите сетевой менеджер / сервис:

перезапуск сетевого менеджера службы sudo

Если это не работает, проверьте другие ответы в этом посте


0

Я отмечаю, что несколько сценариев файлов Fix (модифицированные для моего адаптера Ethernet) /lib/systemd/system-sleep/работают на каждом!

Тем не менее, если кабельное модемное устройство выключено после приостановки, и оно возвращается после включения системы возобновления, система на основе Ubuntu не может повторно подключиться к Интернету, несмотря на то, что значок сети (в области уведомлений) показывает, что соединение включено.

Чтобы исправить это снова, я должен нажать на значок сети »Ethernet соединение. Таким образом, он успешно обновляет соединение. Икс-

Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] 
    Subsystem: D-Link System Inc DFE-520TX Fast Ethernet PCI Adapter 
    Kernel driver in use: via-rhine
    Kernel modules: via_rhine

PS Похоже, что некоторые CLI vpn перестают работать после возвращения из Suspension.


0

Были те же проблемы с моим Dell Inspiron 15: нет проводной сети после перезагрузки или приостановки.

Я, кажется, исправил это, изменив настройку в BIOS:

Дополнительно -> Технология Intel (R) Smart Connect -> Отключено

(по умолчанию включено)

Как побочный эффект, пункт меню исчез, чтобы появиться снова после сброса всех настроек к значениям по умолчанию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.