Как исправить ошибки в WSL GUI

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

Я только что установил WSL2, а затем установил nautilus. Когда я запускаю его, я получаю:

MESA: ошибка: ZINK: не удалось выбрать pdev
libEGL предупреждение: egl: не удалось создать экран dri2
MESA: ошибка: ZINK: не удалось выбрать pdev
glx: не удалось создать экран drisw

** (org.gnome.Nautilus:1448): ПРЕДУПРЕЖДЕНИЕ **: 01:40:31.937: Не удалось получить содержимое файла закладок: Ошибка при открытии файла /home/amonra/.gtk-bookmarks: Нет такого файла или каталога

** (org.gnome.Nautilus:1448): ПРЕДУПРЕЖДЕНИЕ **: 01:40:31.938: Не удалось получить содержимое файла закладок: Ошибка при открытии файла /home/amonra/.gtk-bookmarks: Нет такого файла или каталога

Затем, после довольно длительного ожидания, nautilus появляется.

Как это исправить, пожалуйста?

Похоже, это проблема с Ubuntu 24.04 + WSLg, где некоторые файлы не создаются для пользователя ubuntu (uid 1000), из-за чего Wayland переходит на X11.

Отчеты об ошибках WSLg: https://github.com/microsoft/wslg/issues/1250 и https://github.com/microsoft/wslg/issues/1244

Чтобы это исправить, склонируйте следующий репозиторий и выполните шаги в разделе Использование: https://github.com/viruscamp/wslg-links

Затем выполните следующие команды:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
sudo apt upgrade

Вам может понадобиться полностью завершить работу WSL из Windows перед тем, как изменения вступят в силу. В PowerShell:

wsl --shutdown

Если репозиторий больше недоступен:

  • Создайте новую папку и войдите в нее
  • Создайте новый файл с именем wslg-tmp-x11.service со следующим содержимым:
[Unit]
Description=Восстановить ссылку на файл X display WSLg после монтирования /tmp
ConditionPathIsDirectory=/mnt/wslg/.X11-unix
Requires=tmp.mount
After=tmp.mount
Before=systemd-tmpfiles-setup.service

[Service]
Type=oneshot
ExecStart=/bin/chmod +t /mnt/wslg/.X11-unix
ExecStart=-/bin/rmdir /tmp/.X11-unix
ExecStart=/bin/ln -sf /mnt/wslg/.X11-unix /tmp/.X11-unix
#ExecStart=/bin/mount -m -o bind /mnt/wslg/.X11-unix /tmp/.X11-unix

[Install]
WantedBy=default.target
  • Создайте новый файл с именем wslg-runtime-dir.service со следующим содержимым:
[Unit]
Description=Восстановить файлы сокетов WSLg в $XDG_RUNTIME_DIR
ConditionPathIsDirectory=/mnt/wslg/runtime-dir

[Service]
Type=oneshot
ExecStart=/bin/sh -c "ln -fs /mnt/wslg/runtime-dir/* "%t

[Install]
WantedBy=default.target
  • Выполните следующие команды:
sudo cp wslg-tmp-x11.service /usr/lib/systemd/system/
sudo cp wslg-runtime-dir.service /usr/lib/systemd/user/

sudo systemctl --global disable pulseaudio.socket

sudo systemctl enable wslg-tmp-x11
sudo systemctl --global enable wslg-runtime-dir

Вся заслуга avlec, viruscamp и czirok

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

Как исправить ошибки в WSL GUI: Подробная инструкция

Введение

Windows Subsystem for Linux (WSL) предлагает пользователям возможность работать с приложениями Linux на Windows. Тем не менее, в процессе работы с графическими интерфейсами (GUI) могут возникнуть ошибки. Рассмотрим конкретный случай установки Nautilus в WSL2 и ошибки, сопровождающие его запуск.

Проблема

После установки Nautilus вы столкнулись с такими ошибками, как:

  • Ошибки Mesa о невозможности выбора устройства (pdev).
  • Предупреждения libEGL и glx о неудачном создании экрана.
  • Сообщения о том, что файл закладок не найден.

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

Причина

Причина возникновения проблем заключается в возможных зависимостях между Ubuntu 24.04 и WSLg. Похоже, некоторые файлы не создаются для пользователя Ubuntu (uid 1000), что приводит к возврату Wayland к X11. Наличие этой бага подтверждено в нескольких отчетах на GitHub.

Решение

Шаг 1: Установка необходимых пакетов

Для начала необходимо установить несколько графических драйверов, которые могут улучшить работу GUI приложений в WSL. Используйте следующие команды:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
sudo apt upgrade

Шаг 2: Завершение работы WSL

Для применения изменений полностью перезапустите WSL. Это можно сделать в PowerShell:

wsl --shutdown

Шаг 3: Создание необходимых пользовательских файлов

Если проблема с отсутствующими файлами сохранится, создайте необходимые файлы вручную.

  1. Создайте новую папку и перейдите в неё.

  2. Создайте файл wslg-tmp-x11.service с содержимым:

[Unit]
Description=Recreate WSLg X display file link after /tmp mounted
ConditionPathIsDirectory=/mnt/wslg/.X11-unix
Requires=tmp.mount
After=tmp.mount
Before=systemd-tmpfiles-setup.service

[Service]
Type=oneshot
ExecStart=/bin/chmod +t /mnt/wslg/.X11-unix
ExecStart=-/bin/rmdir /tmp/.X11-unix
ExecStart=/bin/ln -sf /mnt/wslg/.X11-unix /tmp/.X11-unix

[Install]
WantedBy=default.target
  1. Создайте файл wslg-runtime-dir.service с содержимым:
[Unit]
Description=Recreate WSLg sockets files in $XDG_RUNTIME_DIR
ConditionPathIsDirectory=/mnt/wslg/runtime-dir

[Service]
Type=oneshot
ExecStart=/bin/sh -c "ln -fs /mnt/wslg/runtime-dir/* "%t

[Install]
WantedBy=default.target

Шаг 4: Настройка systemd

Копируйте созданные файлы в системные директории и активируйте их:

sudo cp wslg-tmp-x11.service /usr/lib/systemd/system/
sudo cp wslg-runtime-dir.service /usr/lib/systemd/user/

sudo systemctl --global disable pulseaudio.socket

sudo systemctl enable wslg-tmp-x11
sudo systemctl --global enable wslg-runtime-dir

Заключение

Следуя указанным выше шагам, вы сможете устранить ошибки, возникающие при запуске Nautilus и других GUI приложений в WSL2. Если после выполнения всех действий проблема сохраняется, возможно, стоит проверить наличие обновлений для WSL и Ubuntu или обратиться за поддержкой на специализированные форумы. Не забывайте следить за официальными репозиториями и обсуждениями для получения актуальной информации о возможных проблемах и решениях.

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

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