Когда я пытаюсь запустить «xterm» в termux, он говорит «не удалось открыть дисплей:: 0». Почему так?

Я использую XServer XSDL. Затем попытался запустить в нем xterm после export DISPLAY=:0. Если я это сделаю export DISPLAY=10.94.XXX.XXX:1, xterm работает нормально. Я попытался отладить его с помощью strace. Это строка, которая, кажется, вызывает проблему sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused).

Я обсуждал эту проблему на Xserver/xsdl . Мне сказали, что это может быть проблема с разрешением Android. Поэтому я ищу помощи здесь.

Может ли кто-нибудь помочь мне разобраться с этой проблемой?

Ответы (1)

Кажется, есть какой-то брандмауэр, который блокирует соединение. Я не смог решить эту проблему. Но я нашел обходной путь.

  1. Вошел в терминал с rootпривилегиями.
    (Например: используемая команда suв эмуляторе терминала)
  2. Создал 2-ю петлевую сеть ifconfig
    (например ifconfig lo:0 127.0.0.2 netmask 255.0.0.0 up:)
  3. К счастью, "XSERVER XSDL" распознал эту новую сеть без каких-либо жалоб (никогда не думал, что он может обнаружить такую ​​странную сеть).
  4. Наконец, я установил новый сервер из моей среды chroot, как показано на экране приветствия XSERVER.
    export DISPLAY=127.0.0.2:1 startfluxbox(или любую программу xclient, теперь все работает нормально)

Примечание 1. Каждый раз, когда мой телефон перезагружается, мне приходится снова создавать петлевую сеть. Также могут быть файлы .rc для добавления сценариев запуска на Android. Но я никогда не заморачивался их изменением (потому что не часто перезагружаю телефон).

Примечание 2: я был бы очень признателен за правильное решение (лучше, если бы оно работало без рута), потому что мой метод нельзя применить на телефоне без рута. Таким образом, люди с этой проблемой, но без рутированного телефона, не могут использовать xserver, пока кто-нибудь не найдет другое решение.