У меня проблемы с приостановкой работы Ubuntu 18.10. Кажется, что 'systemctl suspend' зависает в ожидании сети и не достигает состояния, в котором вызываются исполняемые файлы в '/ lib / systemd / system-sleep'.
Я пытаюсь удалить модуль ath10k_pci перед приостановкой работы ноутбука. Поэтому я добавил сценарий 'ath10k.sh' в '/ lib / systemd / system-sleep':
#!/bin/bash
if [ "${1}" == "pre" ]; then
touch /tmp/start_rm_ath10k
modprobe -fr ath10k_pci
touch /tmp/end_rm_ath10k
fi
Вызов этого сценария на консоли с опцией 'pre' удаляет модуль ath10k_pci и затрагивает оба файла в '/ tmp' / как и ожидалось. Это работает безупречно, и система продолжает нормально работать без сети.
Теперь, если я запускаю 'systemctl suspend', экран сразу же выключается, но 'ath10k.sh' не запускается, и мне кажется, что ноутбук не был приостановлен.
Когда я потом посмотрел на ноутбук, я заметил, что средняя нагрузка постоянно растет. Кроме того, «ps -e v» перечисляет несколько процессов в статусе «D»:
'dmesg' показывает:
ath10k_pci 0000:02:00.0: firmware crashed!
ath10k_pci 0000:02:00.0: failed to delete WMI vdev 1: -108
Если я использую pm-utils вместо этого, 'pm-suspend' работает безупречно, если я помещаю соответствующий скрипт в '/ etc / pm / sleep.d ', чтобы удалить модуль ath10k_pci перед приостановкой.
Я также заметил, что «pm-suspend» сначала выполняет сценарий в «/etc/pm/sleep.d», а затем выключает экран, тогда как «systemctl suspend» немедленно очищает экран, а затем, кажется, зависает - я не уверен, что это подсказка ...
Я предполагаю, что systemcl вызывает другие вещи перед вызовом любых исполняемых файлов в '/ lib / systemd / system-sleep', и при этом микропрограмма ath10k случайно вылетает до того, как модуль ath10k_pci сможет быть удаленным моим сценарием, чтобы обойти этот сбой.
Итак - мне нужна помощь с этим, и мой вопрос: что я могу сделать, чтобы быть уверенным, что модуль ath10k_pci будет удален до того, как другие вещи в цепочке будут запущены с помощью 'systemctl suspend'? Было бы неплохо, если бы 'modprobe -fr ath10k_pci' был одной из первых вещей, которые выполнялись в режиме ожидания или гибернации.
Вот другой ответ, с решением для моего драйвера ath10k_pci, потому что у меня не работает функция сна / возобновления systemd.
В моем случае (Ubuntu 18.04.3, прошивка qca6174 hw2.1) после того, как я рвал волосы в течение 2 дней, я смог решить проблему с помощью более старой версии прошивки qca6174.
Мне не удалось выгрузить модуль ath10k_pci перед автоматической приостановкой, ни через модуль systemd, ни через скрипт в / lib / systemd / system / system-sleep.
Приостановка работы с оперативной памятью всегда заставляла мою систему зависать, прежде чем она перешла в режим сна.
Установка последней прошивки qca6174 тоже не помогла.
Помогла более старая версия прошивки от 2016 года! Теперь у меня установлен qca6174 hw2.1 версии 141, хотя мой ноутбук работает 18.04.3 с ядром 5.
Я получил этот совет отсюда: https://askubuntu.com/a/978385/1004167 , поэтому я получил прошивку оттуда: https://launchpad.net/ubuntu/xenial/amd64/linux-firmware/1.157 и скопировал файлы ath10k_pci / QCA6174 / hw2.1 (это моя карта использует) в мою папку /lib/firmware/ath10k/QCA6174/hw2.1.
После перезагрузки мне не пришлось выгружать драйвер перед приостановкой (удалены мои скрипты).
Переход в режим сна и возобновление работы сейчас у меня работает, как и до обновления с 16.04. Единственное, что мне нужно сейчас увидеть, это как предотвратить перезапись скопированных файлов при обновлении.
Надеюсь, что это кому-то поможет: -)