Вопрос или проблема
Имел X11 работающий на Windows 11 с WSL, затем, по причинам, которые не устранили, обнаружил, что X11 больше не дает рабочих результатов.
Пробовал:
C:\Users\Yevgeny S>wsl -e xcalc
и получил:
Ошибка: Невозможно открыть дисплей: :0
Согласно некоторым ресурсам W3, WSL на Windows 11 может работать без дополнительного X11-сервера.
Некоторые источники говорят, что должна быть символическая ссылка с именем /tmp/.X11-unix/X0
, указывающая на /mnt/wslg/.X11-unix/X0
, и Ubuntu на WSL, похоже, имеет ее, но целевой файл в /mnt/...
отсутствует. Один из источников этого — на youtube “(Устранено) Ошибка WSLg: Невозможно открыть дисплей: :0 в Windows 11” от Sonoo’s KB.
Я довольно уверен, что один из этих наборов удалил устройство во время установки:
l_HPCKit_p_2023.1.0.46346_offline.sh
l_BaseKit_p_2024.2.1.100_offline.sh
l_AIKit_p_2023.1.0.31760_offline.sh
<– скорее всего, этот
Расширения Intel для PyTorch имели длинные ветки помощи с ошибками на GitHub, и закрытые из них были с успешными установками на bare metal. Возможно, я хотел бы избавиться от этих установок.
Есть идеи, как вернуть /mnt/wslg/.X11-unix/X0
? sudo apt-get reinstall xorg -y
этого не сделало.
Пробовал починить это:
-
Ожидал найти /mnt/wslg/.X11-unix/X0 в файловой системе.
-
Ожидал, что переустановка xorg успешно восстановит функциональность X11.
-
$ sudo python3 -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/mnt/wslg/.X11-unix/X0')" Traceback (most recent call last): File "<string>", line 1, in <module> OSError: [Errno 30] Файловая система только для чтения
3.a Удалось немного создать доменный сокет, но это не восстановило функциональность X11. -
Пробовал переустановить дистрибутив, X11 работал несколько минут; затем сделал apt-get с кучей пакетов python3.11-*, X11 перестал работать. Хотя я обнаружил, что сокет X0 не так уж и важен.
Есть ли шаги, которые я могу предпринять, чтобы восстановить Unix Domain Socket по адресу /mnt/wslg/.X11-unix/X0 должным образом? Или что мне следует сделать, чтобы сохранить функциональность X11 стабильной?
Спасибо.
.
Ответ или решение
Восстановление Unix Domain Socket /mnt/wslg/.X11-unix/X0 в WSL Ubuntu на Windows 11
Введение
Проблема с отсутствием сокета Unix Domain Socket /mnt/wslg/.X11-unix/X0
в Среде Подсистемы Windows для Линукс (WSL) может вызвать ощибки при попытках запустить X11-приложения, такие как xcalc
. В данном ответе мы рассмотрим причины этой проблемы и предложим несколько шагов для ее решения.
Причины проблемы
-
Удаление сокета: Некоторые установленные программы или пакеты могли удалить или изменить структуру файловой системы WSL, что могло привести к исчезновению сокета. Вы упомянули, что установка пакетов Intel для PyTorch могла вызвать эту проблему.
-
Проблемы с X11: WSL 2 имеет встроенное упрощенное решение для работы с графическими приложениями (WSLg). Если WSLg работает неправильно или отсутствует необходимый файл, это может помешать запуску X11-приложений.
Шаги по восстановлению
-
Проверка WSLg: Убедитесь, что WSLg установлен и правильно работает. Для этого выполните следующую команду в Windows PowerShell или командной строке:
wsl --status
Убедитесь, что версия WSLg помечена как активная.
-
Перезапуск WSL: Иногда может помочь перезапуск самого WSL. Для этого выполните команду:
wsl --shutdown
Затем запустите WSL снова.
-
Обновление WSL: Убедитесь, что у вас установлены последние обновления для WSL. Вы можете обновить WSL с помощью:
wsl --update
-
Переустановка необходимых компонентов: Если перечисленные действия не помогли, попробуйте переустановить пакеты, связанные с графическими интерфейсами. Это можно сделать командой в терминале Ubuntu:
sudo apt update && sudo apt install --reinstall xorg x11-apps
-
Создание символической ссылки: В некоторых случаях может потребоваться вручную создать символическую ссылку, если она отсутствует. Это можно сделать следующей командой:
sudo ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0
-
Проверка настроек безопасности: Убедитесь, что файлы и каталоги имеют правильные права доступа. Вы можете выполнить следующую команду, чтобы установить необходимые права:
sudo chmod 1777 /tmp/.X11-unix/
-
Удаление конфликтных пакетов: Если проблема возникла после установки определенных пакетов, вы можете попытаться удалить или отключить их, чтобы проверить, не устраняет ли это проблему.
-
Логи и отладка: Если вышеописанные решения не помогают, необходимо просмотреть логи системы для выявления возможных ошибок. Вы можете использовать команду:
dmesg | grep -i "x11"
Заключение
Если ни одно из предложенных решений не дало результата, как временное решение вы можете рассмотреть возможность использования внешних X-серверов, таких как VcXsrv или Xming на Windows. Это позволит запускать приложения X11, которые зависят от отсутствующего сокета. Однако в долгосрочной перспективе важно установить стабильную работу встроенного решения WSLg.
Если у вас возникнут дополнительные вопросы, пожалуйста, уточните детали, и я постараюсь помочь вам найти решение.