Вопрос или проблема
У меня работал X11 в Windows 11 с WSL, но по неясным причинам я обнаружил, что X11 больше не дает работающих результатов.
Я пробовал:
C:\Users\Yevgeny S>wsl -e xcalc
и получил:
Error: Can't open display: :0
Согласно некоторым ресурсам W3, WSL в Windows 11 будет работать без дополнительного X11 сервера.
Некоторые источники утверждают, что должен быть символическая ссылка под названием /tmp/.X11-unix/X0
, указывающая на /mnt/wslg/.X11-unix/X0
, и Ubuntu на WSL, по-видимому, имеет её, но цели в /mnt/...
нет. Один из источников этого на YouTube ” (Resolved) WSLg Error: Can’t open display: :0 in 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] Read-only file system
Какие шаги я мог бы предпринять для восстановления сокета домена Unix /mnt/wslg/.X11-unix/X0?
Спасибо.
Ответ или решение
Ситуация с отсутствием Unix доменного сокета /mnt/wslg/.X11-unix/X0
в WSL (Windows Subsystem for Linux) на Windows 11 может быть связана с несколькими факторами. Рассмотрим шаги, чтобы восстановить этот сокет и вернуть функциональность X11.
Шаги для восстановления X11 в WSL Ubuntu:
-
Проверка обновлений и установки необходимых пакетов:
Убедитесь, что ваша версия WSL и дистрибутив Ubuntu актуальны. Откройте PowerShell и выполните команду:wsl --update
-
Перезагрузка WSL:
После обновления WSL, перезагрузите его, чтобы изменения вступили в силу:wsl --shutdown
-
Проверка наличия WSLg:
Убедитесь, что WSLg установлен и работает. WSLg должен быть установлен по умолчанию в последних версиях WSL. Вы можете проверить его работоспособность, выполнив команду в терминале Ubuntu:echo $DISPLAY
Это должно вернуть что-то вроде
:0
. -
Становление правительством над доступом к /mnt/wslg:
Проверьте права доступа к каталогу/mnt/wslg
. Для этого выполните команду:ls -ld /mnt/wslg
Убедитесь, что ваше окружение WSL имеет достаточно прав для создания и управления файлами в этом каталоге.
-
Восстановление сокета:
Если сокет по-прежнему отсутствует, попробуйте переустановить компоненты WSLg. Это можно сделать с помощью команды:wsl --install -d <ваш_дистрибутив>
Замените
<ваш_дистрибутив>
на нужный вам (например,Ubuntu
). -
Удаление конфликтующих пакетов:
Если ничего не помогло, возможно, предшествующие установки (например, библиотеки Intel) конфликтуют с WSLg. Вы можете попробовать удалить их:sudo apt-get remove 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
-
Проверка логов WSL:
Логи WSL могут помочь в диагностике проблемы. Вы можете проверить их, выполнив:wsl --log
-
Попробуйте загрузить WSL с рабочим окружением:
В некоторых случаях может помочь очистка среды WSL и создание нового дистрибутива. После этого, установите нужные пакеты и настройте X11 заново.
Заключение:
С учетом вышеописанных шагов вы сможете диагностировать и, возможно, восстановить работу X11 в WSL. Если проблема сохраняется, рассмотрите возможность обращения за поддержкой в сообществах, связанных с WSL, или на форумах, таких как GitHub, где вы можете представить детали своей ситуации для более точного анализа.