Вопрос или проблема
Я только что установил 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
Ответ или решение
Как исправить ошибки в 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: Создание необходимых пользовательских файлов
Если проблема с отсутствующими файлами сохранится, создайте необходимые файлы вручную.
-
Создайте новую папку и перейдите в неё.
-
Создайте файл
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
- Создайте файл
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 или обратиться за поддержкой на специализированные форумы. Не забывайте следить за официальными репозиториями и обсуждениями для получения актуальной информации о возможных проблемах и решениях.