Snapd медленный и ненадежный на 24.04

Вопрос или проблема

После дальнейшего расследования с помощью journalctl -xeu snapd.failure.service я подал отчет о баге с результатами:
https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/2081579


У меня есть настольный компьютер с установленным Ubuntu 24.04 LTS. Я использовал вариант установки TPM FDE на основе образа ядра из snap.

Я заметил, что команда go не отвечает и перезагрузил систему, надеясь, что проблема будет решена, но этого не произошло. Ubuntu 24.04 направляет пользователей на установку golang в виде классического snap, чтобы использовать последнюю версию. Поэтому я хотел проверить, есть ли что-то не так со snapd. Оказалось, да, с snapd снова есть проблема. См. “Наблюдение и резюме” ниже.

Вопрос: Как мы можем исправить эту ситуацию, не сломав систему?


Примечание: Snap-версия golang меня вполне устраивала, я хотел позже ознакомиться с mise. Я это сделал сейчас с помощью eval "$(~/.local/bin/mise activate bash)"; mise use -g go после того, как уже установил бинарный файл. Таким образом, эта проблема решена, у snapd стало на одну ответственность меньше.


Наблюдение и резюме ниже:

  • Система была установлена менее 3 месяцев назад, и это вторая критическая проблема. Это не похоже на то, что я устанавливаю много пакетов, делаю много настроек и занимаюсь другими странными вещами.

  • Выполнение snap list теперь занимает 5 секунд (2024-08-27T17:58:00+02:00 – 2024-08-27T17:58:05+02:00), ранее это было практически мгновенно. Я могу подтвердить, что на другой системе это занимает не более 2 секунд.

  • snapd.socket кажется, отключает сам себя после выполнения первого вызова snapd.

    Сообщение об ошибке:
    error: cannot list snaps: cannot communicate with server: Get "http://localhost/v2/snaps": dial unix /run/snapd.socket: connect: connection refused

    Сообщение об ошибке появляется через 2 минуты (2024-08-27T17:58:13+02:00 –
    2024-08-27T18:00:13+02:00)

  • Это влияет не только на вызовы snap list или go, но и на Firefox.

    • Это не особо беспокоит меня, так как я оценил snap и snap-версию Firefox как ненадежное программное обеспечение и потратил время на настройку и использование Firefox из Flathub после первых проблем, с которыми я столкнулся с snap-версией Firefox много лет назад. Кстати, Firefox из Flathub работает совершенно нормально.
    • Эта проблема, похоже, возникает снова и снова. Снова и снова, от релиза к релизу я действительно хочу дать snap шанс, и он всегда ломается! Canonical, вам действительно нужно починить ваше токсичное сломанное программное обеспечение!
  • Ранее пользователи прибегали к команде sudo apt autoremove --purge snapd и переустанавливали snap. Поскольку snap теперь держит ключи для ядра и шифрования диска, делать это, не будучи на 100% уверенным, что система останется загрузочной, – это очень плохая идея. Меня не беспокоит содержимое моего корневого раздела и домашнего каталога, я могу разблокировать том LUKS с помощью пароля, так как я предпринял дополнительные шаги, но в наихудшем случае система может стать незагрузочной и потребовать переустановки.

  • В конце концов, я смог выполнить sudo snap remove go, запустив while true; do sleep 10; [[ $(systemctl is-active snapd.socket) == inactive ]] && sudo systemctl start snapd.socket; done в другом терминале. Таким образом, snapd показывает некоторые признаки жизни, но это выходит за пределы того, что обычные пользователи будут терпеть.

  • Кто-то предложил проверить с помощью systemctl status snapd.apparmor. Он включен и выполняется, однако сокет все еще отключается, если я не использую цикл.

bt@za31:~$  snap list
error: cannot list snaps: cannot communicate with server: Get "http://localhost/v2/snaps": dial unix /run/snapd.socket: connect: connection refused

bt@za31:~$  sudo systemctl status snapd.socket
○ snapd.socket - Socket activation for snappy daemon
     Loaded: loaded (/usr/lib/systemd/system/snapd.socket; enabled; preset: enabled)
     Active: inactive (dead) since Tue 2024-08-27 17:49:43 CEST; 3min 52s ago
   Duration: 34.415s
   Triggers: ● snapd.service
     Listen: /run/snapd.socket (Stream)
             /run/snapd-snap.socket (Stream)
        CPU: 718us

Aug 27 17:49:08 za31 systemd[1]: Starting snapd.socket - Socket activation for snappy daemon...
Aug 27 17:49:08 za31 systemd[1]: Listening on snapd.socket - Socket activation for snappy daemon.
Aug 27 17:49:43 za31 systemd[1]: snapd.socket: Deactivated successfully.
Aug 27 17:49:43 za31 systemd[1]: Closed snapd.socket - Socket activation for snappy daemon.

bt@za31:~$  sudo systemctl start snapd.socket
bt@za31:~$  sudo systemctl status snapd.socket
● snapd.socket - Socket activation for snappy daemon
     Loaded: loaded (/usr/lib/systemd/system/snapd.socket; enabled; preset: enabled)
     Active: active (listening) since Tue 2024-08-27 17:53:49 CEST; 9s ago
   Triggers: ● snapd.service
     Listen: /run/snapd.socket (Stream)
             /run/snapd-snap.socket (Stream)
      Tasks: 0 (limit: 231600)
     Memory: 0B (peak: 0B)
        CPU: 756us
     CGroup: /system.slice/snapd.socket

Aug 27 17:53:49 za31 systemd[1]: Starting snapd.socket - Socket activation for snappy daemon...
Aug 27 17:53:49 za31 systemd[1]: Listening on snapd.socket - Socket activation for snappy daemon.

bt@za31:~$  date -Isec; snap list; date -Isec
2024-08-27T17:58:00+02:00
Name                       Version          Rev    Tracking              Publisher   Notes
bare                       1.0              5      latest/stable         canonical✓  base
canonical-livepatch        10.8.3           282    latest/stable         canonical✓  -
core22                     20240731         1564   latest/stable         canonical✓  base
firefox                    129.0.2-1        4793   latest/stable/…       mozilla✓    -
firmware-updater           0+git.5007558    127    latest/stable/…       canonical✓  -
gnome-42-2204              0+git.510a601    176    latest/stable/…       canonical✓  -
go                         1.23.0           10698  latest/stable         canonical✓  classic
gtk-common-themes          0.1-81-g442e511  1535   latest/stable/…       canonical✓  -
pc                         23.10-1          161    classic-24.04/stable  canonical✓  gadget,disabled
pc-kernel                  6.8.0-40.40      1938   24/stable             canonical✓  kernel
snap-store                 0+git.e3dd562    1173   latest/stable/…       canonical✓  -
snapd                      2.63             21759  latest/stable         canonical✓  snapd
snapd-desktop-integration  0.9              178    latest/stable/…       canonical✓  -
2024-08-27T17:58:05+02:00

bt@za31:~$  date -Isec; snap list; date -Isec
2024-08-27T17:58:13+02:00
error: cannot list snaps: cannot communicate with server: Get "http://localhost/v2/snaps": dial unix /run/snapd.socket: connect: connection refused
2024-08-27T18:00:13+02:00

bt@za31:~$  sudo systemctl status snapd.socket
○ snapd.socket - Socket activation for snappy daemon
     Loaded: loaded (/usr/lib/systemd/system/snapd.socket; enabled; preset: enabled)
     Active: inactive (dead) since Tue 2024-08-27 17:57:49 CEST; 2min 38s ago
   Duration: 3min 59.843s
   Triggers: ● snapd.service
     Listen: /run/snapd.socket (Stream)
             /run/snapd-snap.socket (Stream)
        CPU: 756us

Aug 27 17:53:49 za31 systemd[1]: Starting snapd.socket - Socket activation for snappy daemon...
Aug 27 17:53:49 za31 systemd[1]: Listening on snapd.socket - Socket activation for snappy daemon.
Aug 27 17:57:49 za31 systemd[1]: snapd.socket: Deactivated successfully.
Aug 27 17:57:49 za31 systemd[1]: Closed snapd.socket - Socket activation for snappy daemon.

bt@za31:~$  systemctl status snapd.apparmor
● snapd.apparmor.service - Загрузка профилей AppArmor, управляемых внутренне snapd
     Loaded: loaded (/usr/lib/systemd/system/snapd.apparmor.service; enabled; preset: enabled)
     Active: active (exited) since Tue 2024-08-27 17:22:52 CEST; 1h 27min ago
   Main PID: 1516 (code=exited, status=0/SUCCESS)
        CPU: 203ms

Aug 27 17:22:52 za31 systemd[1]: Starting snapd.apparmor.service - Загрузка профилей AppArmor, управляемых внутренне snapd...
Aug 27 17:22:52 za31 snapd-apparmor[1516]: main.go:124: Загрузка профилей [/var/lib/snapd/apparmor/profiles/snap-confine.snapd.21465 /var/lib/snapd/apparmor/profiles/snap-confine.snapd.21>
Aug 27 17:22:52 za31 systemd[1]: Завершено snapd.apparmor.service - Загрузка профилей AppArmor, управляемых внутренне snapd.

Редактировать 2024-08-28

Сегодня я взял ноутбук с той же установкой Ubuntu TPM FDE, которую могу принести в жертву и переустановить, если это необходимо, без значительного влияния на мою производительность.

Наблюдения:

  • sudo apt remove snapd & sudo apt install firefox gnome-software-plugin-snap snapd можно выполнить без особого риска. другая система все еще была загрузочной. Проблема с snapd не была решена на пораженной машине, однако.

  • sudo apt autoremove --purge snapd завершается с сообщением об ошибке, что некоторые файлы hunspell из Firefox не могут быть удалены, и поэтому snapd не может быть полностью удален. Результат после переустановки пакетов: проблема с snapd не была решена на пораженной машине.

    • Я сам пытался удалить файлы с помощью sudo rm -v ... и получил ту же ошибку. Я пытался sudo touch /test.txt и sudo touch /var/snap/test.txt, потому что не был уверен, что просто сделал что-то плохое с файловой системой. Похоже, все в порядке, жертвенный ноутбук загрузился, надеюсь, что и рабочая станция станет позже.
    • Хорошо, вы используете настольный компьютер с Ubuntu, вы практически полагаетесь на snapd, так на что бы вам когда-либо захотелось его удалить когда он работает нормально. Я понимаю это.
    • Примечание: У нас нет таких проблем с Flatpak!
  • Я спросил Gemini, которая в основном дала мне ту же процедуру устранения неполадок и упомянула что-то вроде “Сокет snapd не создан или поврежден”. Это интересная формулировка, судя по тому, что я могу видеть и выводить, служба, которая запускает сокет и должна поддерживать его работоспособность, имеет проблему.

Тестовая система:

bt@za28:~$  sudo apt remove snapd 
[sudo] пароль для bt: 
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие пакеты будут УДАЛЕНЫ:
  firefox gnome-software-plugin-snap snapd
0 обновлено, 0 нового установлено, 3 удалено и 1 не обновлено.
После этой операции будет освобождено 111 МБ дискового пространства.
Вы хотите продолжить? [Y/n] 
(Чтение базы данных ... 120027 файлов и директорий в настоящее время установлено.)
Удаление firefox (1:1snap1-0ubuntu5) ...
Удаление gnome-software-plugin-snap (46.0-1ubuntu2) ...
Удаление snapd (2.63.1+24.04) ...
Остановка 'snapd.service', но его триггерные единицы все еще активны:
snapd.socket
Обработка триггеров для hicolor-icon-theme (0.17-2) ...
Обработка триггеров для gnome-menus (3.36.0-1.1ubuntu3) ...
Обработка триггеров для man-db (2.12.0-4build2) ...
Обработка триггеров для dbus (1.14.10-4ubuntu4.1) ...
Обработка триггеров для desktop-file-utils (0.27-2build1) ...

bt@za28:~$  sudo apt install firefox gnome-software-plugin-snap snapd
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие НОВЫЕ пакеты будут установлены:
  firefox gnome-software-plugin-snap snapd
0 обновлено, 3 новые установлены, 0 удалено и 1 не обновлено.
Необходимо загрузить 28.2 МБ архивов.
После этой операции будет использовано 111 МБ дополнительного дискового пространства.
Получено:1 http://de.archive.ubuntu.com/ubuntu noble-updates/main amd64 snapd amd64 2.63.1+24.04 [28.0 МБ]
Получено:2 http://de.archive.ubuntu.com/ubuntu noble/main amd64 firefox amd64 1:1snap1-0ubuntu5 [77.3 кБ]
Получено:3 http://de.archive.ubuntu.com/ubuntu noble/universe amd64 gnome-software-plugin-snap amd64 46.0-1ubuntu2 [31.1 кБ]
Загружено 28.2 МБ за 2с (18.5 МБ/с)                     
Предварительная конфигурация пакетов ...
Выбор ранее не выбранного пакета snapd.
(Чтение базы данных ... 119923 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке .../snapd_2.63.1+24.04_amd64.deb ...
Распаковка snapd (2.63.1+24.04) ...
Настройка snapd (2.63.1+24.04) ...
snapd.failure.service - отключена или статическая единица не запускается, не запускаем ее.
snapd.snap-repair.service - отключена или статическая единица не запускается, не запускаем ее.
Не удалось перезапустить snapd.mounts-pre.target: Операция отклонена, единица snapd.mounts-pre.target может быть запрошена только зависимостью (она настроена на отклонение ручного запуска/остановки).
Смотрите системные журналы и 'systemctl status snapd.mounts-pre.target' для подробностей.
Не удалось выполнить systemctl: в строке /usr/bin/deb-systemd-invoke 148.
Выбор ранее не выбранного пакета firefox.
(Чтение базы данных ... 120009 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке .../firefox_1%3a1snap1-0ubuntu5_amd64.deb ...
=> Установка snap-версии firefox
==> Проверка подключения к snap store
==> Установка snap-версии firefox
snap "firefox" уже установлен, смотрите 'snap help refresh'
=> Установка snap завершена
Распаковка firefox (1:1snap1-0ubuntu5) ...
Выбор ранее не выбранного пакета gnome-software-plugin-snap.
Подготовка к распаковке .../gnome-software-plugin-snap_46.0-1ubuntu2_amd64.deb ...
Распаковка gnome-software-plugin-snap (46.0-1ubuntu2) ...
Настройка firefox (1:1snap1-0ubuntu5) ...
update-alternatives: используется /usr/bin/firefox для обеспечения /usr/bin/gnome-www-browser (gnome-www-browser) в автоматическом режиме
update-alternatives: используется /usr/bin/firefox для обеспечения /usr/bin/x-www-browser (x-www-browser) в автоматическом режиме
Настройка gnome-software-plugin-snap (46.0-1ubuntu2) ...
Обработка триггеров для hicolor-icon-theme (0.17-2) ...
Обработка триггеров для gnome-menus (3.36.0-1.1ubuntu3) ...
Обработка триггеров для man-db (2.12.0-4build2) ...
Обработка триггеров для dbus (1.14.10-4ubuntu4.1) ...
Обработка триггеров для desktop-file-utils (0.27-2build1) ...

# ---

bt@za28:~$  sudo apt autoremove --purge snapd 
[sudo] пароль для bt: 
Извините, попробуйте снова.
[sudo] пароль для bt: 
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие пакеты будут УДАЛЕНЫ:
  firefox* gnome-software-plugin-snap* snapd*
0 обновлено, 0 новых установлено, 3 удалено и 1 не обновлено.
После этой операции будет освобождено 111 МБ дискового пространства.
Вы хотите продолжить? [Y/n] 
(Чтение базы данных ... 120027 файлов и директорий в настоящее время установлено.)
Удаление firefox (1:1snap1-0ubuntu5) ...
Удаление gnome-software-plugin-snap (46.0-1ubuntu2) ...
Удаление snapd (2.63.1+24.04) ...
Остановка snap-bare-5.mount
Остановка единицы snap-bare-5.mount
Ожидание, пока единица snap-bare-5.mount остановится [попытка 1]
snap-bare-5.mount остановлена.
Удаление snap bare и ревизии 5
Удаление snap-bare-5.mount
Остановка snap-core22-1439.mount
Остановка единицы snap-core22-1439.mount
Ожидание, пока единица snap-core22-1439.mount остановится [попытка 1]
snap-core22-1439.mount остановлена.
Удаление snap core22 и ревизии 1439
Удаление snap-core22-1439.mount
Остановка snap-core22-1564.mount
Остановка единицы snap-core22-1564.mount
Ожидание, пока единица snap-core22-1564.mount остановится [попытка 1]
snap-core22-1564.mount остановлена.
Удаление snap core22 и ревизии 1564
Удаление snap-core22-1564.mount
Остановка snap-firefox-4209.mount
Остановка единицы snap-firefox-4209.mount
Ожидание, пока единица snap-firefox-4209.mount остановится [попытка 1]
snap-firefox-4209.mount остановлена.
Удаление snap firefox и ревизии 4209
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_DE.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_DE.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_BE.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_LU.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/en_US.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/en_US.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_LU.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_BE.dic': Файловая система только для чтения
dpkg: ошибка при обработке пакета snapd (--purge):
 установленный пакет snapd вызвал ошибку при выполнении post-removal скрипта с кодом выхода 1
Удаление файлов конфигурации для firefox (1:1snap1-0ubuntu5) ...
Возникли ошибки при обработке:
 snapd
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Пораженная система:

bt@za31:~$  sudo apt autoremove --purge snapd
[sudo] пароль для bt: 
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие пакеты будут УДАЛЕНЫ:
  firefox* gnome-software-plugin-snap* snapd*
0 обновлено, 0 новых установлено, 3 удалено и 0 не обновлено.
После этой операции будет освобождено 111 МБ дискового пространства.
Вы хотите продолжить? [Y/n] 
(Чтение базы данных ... 131140 файлов и директорий в настоящее время установлено.)
Удаление firefox (1:1snap1-0ubuntu5) ...
Удаление gnome-software-plugin-snap (46.0-1ubuntu2) ...
Удаление snapd (2.63.1+24.04) ...
Остановка snap.canonical-livepatch.canonical-livepatchd.service
Остановка единицы snap.canonical-livepatch.canonical-livepatchd.service
Ожидание, пока единица snap.canonical-livepatch.canonical-livepatchd.service остановится [попытка 1]
snap.canonical-livepatch.canonical-livepatchd.service остановлена.
Обработка триггеров для hicolor-icon-theme (0.17-2) ...
Обработка триггеров для gnome-menus (3.36.0-1.1ubuntu3) ...
Обработка триггеров для man-db (2.12.0-4build2) ...
Обработка триггеров для dbus (1.14.10-4ubuntu4.1) ...
Обработка триггеров для desktop-file-utils (0.27-2build1) ...
(Чтение базы данных ... 131035 файлов и директорий в настоящее время установлено.)
Удаление файлов конфигурации для snapd (2.63.1+24.04) ...
Остановка snap.canonical-livepatch.canonical-livepatchd.service
Остановка единицы snap.canonical-livepatch.canonical-livepatchd.service
Ожидание, пока единица snap.canonical-livepatch.canonical-livepatchd.service остановится [попытка 1]
snap.canonical-livepatch.canonical-livepatchd.service остановлена.
Удаление snap.canonical-livepatch.canonical-livepatchd.service
Остановка snap-bare-5.mount
Остановка единицы snap-bare-5.mount
Ожидание, пока единица snap-bare-5.mount остановится [попытка 1]
snap-bare-5.mount остановлена.
Удаление snap bare и ревизии 5
Удаление snap-bare-5.mount
Остановка snap-canonical\x2dlivepatch-278.mount
Остановка единицы snap-canonical\x2dlivepatch-278.mount
Ожидание, пока единица snap-canonical\x2dlivepatch-278.mount остановится [попытка 1]
snap-canonical\x2dlivepatch-278.mount остановлена.
Удаление snap canonical-livepatch и ревизии 278
Удаление snap-canonical\x2dlivepatch-278.mount
Остановка snap-canonical\x2dlivepatch-282.mount
Остановка единицы snap-canonical\x2dlivepatch-282.mount
Ожидание, пока единица snap-canonical\x2dlivepatch-282.mount остановится [попытка 1]
snap-canonical\x2dlivepatch-282.mount остановлена.
Удаление snap canonical-livepatch и ревизии 282
Удаление snap-canonical\x2dlivepatch-282.mount
Остановка snap-core22-1439.mount
Остановка единицы snap-core22-1439.mount
Ожидание, пока единица snap-core22-1439.mount остановится [попытка 1]
snap-core22-1439.mount остановлена.
Удаление snap core22 и ревизии 1439
Удаление snap-core22-1439.mount
Остановка snap-core22-1564.mount
Остановка единицы snap-core22-1564.mount
Ожидание, пока единица snap-core22-1564.mount остановится [попытка 1]
snap-core22-1564.mount остановлена.
Удаление snap core22 и ревизии 1564
Удаление snap-core22-1564.mount
Остановка snap-firefox-4757.mount
Остановка единицы snap-firefox-4757.mount
Ожидание, пока единица snap-firefox-4757.mount остановится [попытка 1]
snap-firefox-4757.mount остановлена.
Удаление snap firefox и ревизии 4757
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_LU.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_BE.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/en_US.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_BE.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/en_US.dic': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_LU.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_DE.aff': Файловая система только для чтения
rm: невозможно удалить '/var/snap/firefox/common/host-hunspell/de_DE.dic': Файловая система только для чтения
dpkg: ошибка при обработке пакета snapd (--purge):
 установленный пакет snapd вызвал ошибку при выполнении post-removal скрипта с кодом выхода 1
Удаление файлов конфигурации для firefox (1:1snap1-0ubuntu5) ...
Возникли ошибки при обработке:
 snapd
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Редактировать 2024-09-28:

Файл /var/lib/snapd/device/disk-mapping.json содержит имя устройства, которое может потребоваться обновить после изменений, которые влияют на нумерацию устройств. Изменение nvme2 на nvme4 или любое другое, которое может быть определено как диск Ubuntu FDE в lsblk или Gnome Disks, за которым следует systemctl start snapd.socket, должно восстановить работу snapd. Перезапуск сокета может даже не понадобиться, так как snapd.failure.service вскоре попытается решить проблему, которую можно проверить с помощью journalctl -e --unit snapd.failure.service. Я выполнил sudo snap refresh pc-kernel; snap list и смог перезагрузиться успешно. Пораженные пользователи должны проверить свои машины таким образом перед перезагрузкой, в противном случае они загрузятся в указанный режим, где сетевое соединение недоступно. Мне удалось восстановиться из этой ситуации, но мне еще не ясно, что кроме изменения имени устройства вернуло систему обратно в обычное состояние. Простое изменение имени устройства не было достаточным во время нескольких попыток.

Редактировать 2024-09-06:

  • Как я писал, я пытался переустановить пакет snapd, что не решило проблему. Несколько дней и перезагрузок (обновления?) спустя я обнаружил, что моя система загрузилась в некий ограниченный режим. Работал только один дисплей с низким разрешением, сеть и многие накопители отсутствовали. Без всякого знания о том, как устранять неполадки в snap-установке pc-kernel в этих обстоятельствах, переустановка была неизбежной. USB-накопители не распознавались, поэтому для создания резервной копии последнего состояния пришлось использовать загрузочные медиа. На положительной стороне: ZFS работает в среде загрузочных медиа сразу из коробки!

  • Сообщение об ошибке от snap-failure о “Нет такого устройства” больше не появлялось или не приводило к критическому сбою snapd. У меня пока нет времени проверить подробнее.

Думая о ситуации в данном конкретном случае, временным обходным решением могло бы быть одно из следующих:

  • Переустановить Ubuntu и избегать изменения какой-либо перенастройки оборудования, которая могла бы изменить порядок накопителей при использовании установки TPM FDE. Это просто для пользователей ноутбуков, но для пользователей настольных компьютеров и рабочих станций это немного противоречит самой идее иметь машину, в которой можно менять и перенастраивать детали.
  • Запустить скрипт, например while true; do sleep 10; sudo systemctl start snapd.socket; done или while true; do sleep 10; [[ $(systemctl is-active snapd.socket) == inactive ]] && sudo systemctl start snapd.socket; done в фоновом режиме. Второй требует настройки sudoers, первый кажется немного более громоздким. Ну, оба решения не оптимальны.

Для долгосрочного решения Ubuntu должна:

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

    Aug 28 15:52:25 za31 snap-failure[650745]: logger.go:93: DEBUG: Running task 723 on Doing: Update assets from gadget "pc" (184)
    Aug 28 15:52:25 za31 snap-failure[650745]: logger.go:93: DEBUG: cannot locate disk for volume pc with method device path because err:
    Aug 28 15:52:25 za31 snap-failure[650745]: -----
    Aug 28 15:52:25 za31 snap-failure[650745]: stderr:
    Aug 28 15:52:25 za31 snap-failure[650745]: Unknown device "/sys/devices/pci0000:20/0000:20:01.2/0000:2d:00.0/nvme/nvme2/nvme2n1": No such device
    Aug 28 15:52:25 za31 snap-failure[650745]: -----
    Aug 28 15:52:25 za31 snap-failure[650745]: logger.go:93: DEBUG: OnDiskStructureFromPartition: p.FilesystemType "", p.FilesystemLabel ""
    
  2. Пересмотреть конфигурацию snapd и предоставить четкие инструкции по устранению неполадок для таких случаев.

Ответ или решение

Проблема с медленной работой и некорректным функционированием snapd в Ubuntu 24.04 LTS действительно может быть связана с разнообразными факторами, особенно в случаях использования TPM FDE (шаблон полной дисковой шифрования). На основании вашего описания и проведённого вами анализа, я выделю ряд рекомендаций, которые помогут устранить текущие проблемы без риска для системы.

Анализ проблемы

Основные симптомы включают:

  • Долгое время отклика команд, таких как snap list, что занимает до 5 секунд, тогда как обычно это происходит мгновенно.
  • Ошибка при попытке взаимодействовать с snapd.socket: сообщения об отказе в подключении.
  • Неактивность snapd.socket, который сам себя деактивирует.

Рекомендации по устранению

  1. Проверка состояния и перезапуск служб:
    Выполните следующие команды для мониторинга статуса snapd и его сокета:

    systemctl status snapd.service
    systemctl status snapd.socket

    Если сокет неактивен, вы можете попробовать вручную его запустить:

    sudo systemctl start snapd.socket
  2. Исправление конфигурации disk-mapping.json:
    Изменение имени устройства в файле /var/lib/snapd/device/disk-mapping.json может помочь, если устройство было переименовано. Проверьте имя устройства с помощью lsblk и обновите файл, если это необходимо. Затем запустите:

    sudo systemctl start snapd.socket
  3. Переподключение и зависание процессов:
    Запустите скрипт, который будет перезапускать сокет, если он неактивен:

    while true; do sleep 10; [[ $(systemctl is-active snapd.socket) == inactive ]] && sudo systemctl start snapd.socket; done

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

  4. Обновление и переустановка snapd:
    Если предыдущие шаги не помогли, вы можете попробовать переустановить snapd. Будьте осторожны, чтобы не потерять доступ к файловым системам, которые могут зависеть от snapd:

    sudo apt remove --purge snapd
    sudo apt install snapd
  5. Проверка и устранение ошибок:
    Просмотрите журналы ошибок для snapd:

    journalctl -eu snapd
    journalctl -xeu snapd.failure.service

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

Долгосрочные рекомендации

Для более стабильной работы и предотвращения подобных ситуаций в будущем:

  • Ubuntu следует пересмотреть логику, касающуюся жестких зависимостей по устройствам в snapd. Обратите внимание на ошибочные сообщения о “Неизвестном устройстве”.
  • Разработать более четкие инструкции по устранению неполадок и учесть множество сценариев, связанных с использованием TPM и шифрования.

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

Оцените материал
Добавить комментарий

Капча загружается...