Вопрос или проблема
Установил Ubuntu 20.04.3 LTS на ноутбук Acer Swift 3 (модель SF314-42-R6T7). С включенными ядрами 5.13.0-30 и также новым 5.13.0-35 режим «Сон» не работал корректно. Машина переходила в режим «Сон» по нажатию кнопки питания, но было долгое задержка — до минуты — прежде чем машина снова просыпалась после нажатия кнопки питания.
Я установил более новое ядро, 5.16.13, и теперь режим «Сон» работает как ожидалось (за исключением случая, когда закрывается крышка с подключенным внешним монитором, но это для другой темы). Однако при перезагрузке или выключении я получаю минуту или более затирающихся сообщений, таких как следующие:
[114.588698] bpfilter read fail: 0
Я полагаю, что это число — время работы системы. Я получаю эти сообщения постоянно в течение полутора минут, прежде чем машина наконец перезагрузится или выключится.
На данный момент я попробовал:
— перезагрузиться с использованием старых ядер (5.13.0 и 5.13.35) через меню GRUB. В обоих случаях режим «Сон» снова не работает правильно, но я не получаю сообщения bpfilter при выключении или перезагрузке.
Таким образом, похоже, что проблема с bpfilter определенно появилась с новым ядром.
Возврат к старым ядрам 5.13 исправляет сообщения bpfilter, но тогда режим «Сон» не работает должным образом.
Есть ли способ избавиться от сообщений bpfilter, которые задерживают выключение, при этом сохранив ядро 5.6.13, чтобы режим «Сон» работал правильно?
Согласно этой теме на форумах Ubuntu, это проблема с поддержкой iptables в nftables, и что-то вызывает брандмауэр во время выключения. На моей системе это не длится очень долго (даже не на весь экран), но, надеюсь, это будет исправлено в ближайших версиях ядра.
Ответ или решение
Проблема, с которой вы столкнулись, является известной и касается работы функции bpfilter в ядре Linux версии 5.16.13, установленном на вашу систему Ubuntu 20.04 LTS. Данный вопрос вызывает интерес у пользователей, с учетом того, что он касается критически важных функций, таких как приостановка (suspend) и завершение работы (shutdown) системы.
Природа проблемы
Выражение “bpfilter read fail: 0” указывает на сбой в работе механизма, связанного с фильтрацией пакетов, который реализуется через новую модель, объединяющую возможности iptables и nftables. Эти сообщения в логах загромождают экран и замедляют процесс завершения работы системы, что вызывает значительные неудобства.
Влияние версии ядра
Важно отметить, что вы правильно установили, что данная проблема в первую очередь была вызвана переходом на более новую версию ядра (5.16.13), которая, как вы отметили, оказалась более стабильной в контексте приостановки, нежели предыдущие версии (5.13.0-30 и 5.13.0-35). Эта ситуация указывает на то, что недочеты в новых функциях могут влиять на общую стабильность и производительность системы.
Возможные решения
В данном случае, вы уже рассмотрели возможность отката на более старую версию ядра, однако этого варианта недостаточно, чтобы сохранять оптимальную работу функции приостановки. Ниже представлены несколько рекомендаций, которые могут помочь вам устранить проблему с bpfilter, оставаясь на более новой версии ядра:
-
Обновление ядра: Рекомендуется следить за обновлениями ядра и установить более свежие версии. Производители нередко исправляют ошибки в предыдущих релизах. Проверьте наличие более новых версий ядра через APT:
sudo apt update sudo apt upgrade
-
Настройка bpfilter: Возможен вариант, при котором можно настроить параметры, касающиеся работы bpfilter. Вы можете попробовать отключить поддержку bpfilter:
- Отредактируйте файл
/etc/default/grub
и добавьтеbpfilter=disabled
к строкеGRUB_CMDLINE_LINUX_DEFAULT
. - После этого не забудьте обновить конфигурацию GRUB:
sudo update-grub
- Отредактируйте файл
-
Использование nftables: Если вы используете правила iptables, рассмотрите возможность их миграции на nftables, что может ускорить процесс завершения работы системы. Это может требовать пересмотра ваших сетевых правил.
-
Форумы и отчеты об ошибках: Используйте ресурсы, такие как Ubuntu Forum и Launchpad, чтобы сообщить о вашей проблеме и следить за обсуждениями. Это может помочь, если другие пользователи сталкиваются с аналогичными трудностями и находятся в поисках решения.
Заключение
Простое решение данной проблемы может быть найдено в более древних ядрах, но вы правы, что не хотите отказываться от улучшенной работы функции приостановки. Рекомендуется следить за обновлениями от разработчиков ядра и даже рассмотреть возможность участия в обсуждениях на форумах, где подобные случаи поднимаются. Надеемся, что ваши усилия будут вознаграждены, и ситуация будет разрешена в одном из будущих обновлений системы.