Не может выполнить startx на tty

, который Следующая попытка состоит в том, чтобы использовать два, отделил chroot деревья файла идентичными деревьями файла Xorg внутри, как раз чтобы два различных сервера Xorg работали, и продолжайте использовать LD_LIBRARY_PATH в userspace.

Для запуска Xorg необходимо поместить все связанные с Xorg библиотеки и программы в chroot. Это можно сделать с помощью автоматических средств, таких как debian chroot, или вручную. Ниже приведено очень краткое начало того, как это сделать вручную (на самом деле, это хорошо сработало для одной музикальной системы в не столь отдаленном прошлом):

  • Создайте отдельный каталог chroot, например/ X11/nvidia (и/X11/intel).
  • Поместите в него X11 двоичные файлы и библиотеки, отражающие старую компоновку системы (то есть поместите Xorg в/ X11/nvidia/usr/bin, libX * .so * в/ X11/nvidia/usr/lib и библиотеки ядра glibc из/lib в/ X11/nvidia/lib - они обычно имеют префикс с номером версии, поэтому их легко найти).
  • Не забывайте о каталогах, от которых зависит сервер X, а именно :/ usr/lib/X11 или/usr/lib/xorg. Они содержат модули и драйверы для различных типов устройств и, конечно, компоненты драйверов nvidia/intel.
  • Вероятно, вам понадобятся такие предметы, как/ X11/nvidia/bin/sh и/ X11/nvidia/sbin/modprobe. Создайте необходимые каталоги и поместите туда двоичные файлы с хоста.
  • Вам также потребуется/ X11/nvidia/tmp ,/ X11/nvidia/var/lib/xkb и/ X11/nvidia/var/log.
  • На данном этапе можно скопировать/ X11/nvidia в/ X11/intel.
  • Найдите и скопируйте в соответствующих местах файл libglx.so и, возможно, другие части драйвера.
  • Bind mount/dev в каждый/ X11/nvidia/dev и/ X11/intel/dev (создание каталогов до), или вы можете попытаться скопировать узлы устройств, отслеживая, что именно требуется каждому устройству, с помощью инструмента strace позже
  • Bind mount/proc и/sys также.
  • При наличии X11 конфигурации в/ etc/X11 скопируйте каждую конфигурацию для каждого устройства в каждый каталог chroot/etc.

В этот момент должны быть готовы X11 серверы. Но многие специфические вещи могут нарушить это, потому что они навязывают какие-то другие современные зависимости (может быть, вам потребуется скопировать и запустить некоторые другие демоны в свои хромы).

Конфигурация клиента: просто укажите своим клиентам различные библиотеки драйверов с LD_LIBRARY_PATH. Вы даже можете поместить клиентов в chroot (и это не потребует больших изменений структуры дерева файлов даже), но вы, вероятно, закончите с зеркального отображения системы дважды.

Клиенты должны подключаться нормально, даже если отсутствует X11 сокет. Это происходит потому, что они используют абстрактное имя, зарегистрированное X-сервером при вызове connect (), не требуя существующего сокета, и это можно увидеть на выходе strace.Но если вашей системе требуется существующий сокет, вам также потребуется связать подключение/tmp.

В качестве альтернативы вам по-прежнему придется усердно хранить серверы Xorg, находя библиотеки, которые загружаются неправильно, и указывая на нужные места с LD_PRELOAD и LD_LIBRARY_PATH. Strace должен работать как root (если вы сделали sudo -i или вошли как root), если это не так, то это, безусловно, ошибка.

1
12.08.2018, 13:52
2 ответа

NB :Было бы лучше добавить комментарий к ответу Боба, но у меня недостаточно репутации для этого.

У меня была примерно такая же проблема (, но я не следовал обновлению )Ответ и комментарии @Bob также помогли мне (Я думаю... Я выполнил шаги ). Но, кроме того, я бы сказал, что следующая команда не запускала графический интерфейс:

$ sudo systemctl start gdm3.service 

Вместо этого я попробовал следующую команду, и она запустила мой графический интерфейс gdm3.service:

$ sudo service gdm3 start
0
27.01.2020, 23:23

Сначала удалите драйверы nvidia:

sudo apt purge nvidia-*

Затем разрешите Ubuntu установить рекомендуемый драйвер 396:

sudo ubuntu-drivers autoinstall

Перезагрузите ноутбук:

sudo reboot

Поскольку используется Ubuntu 18.04, по умолчанию включено графическое окружение:

sudo systemctl set-default graphical.target

Если вы хотите запустить Gnome Desktop из текущего сеанса без графического интерфейса (многопользовательской -среды ), просто выполните:

sudo systemctl start gdm3.service

Обновление

Поскольку используется гибридная графика, установите nvidia-primeдля переключения между графикой intelи nvidia(она может быть уже установлена ​​):

sudo apt install nvidia-prime

Проверьте, какая видеокарта используется:

prime-select query

Вы можете увидеть intelили nvidiaв качестве вывода команды. Если вы видите intel, переключитесь на nvidia:

.
sudo prime-select nvidia

Перезагрузитесь и проверьте, нормально ли работает графика. Если prime-select queryвозвращает nvidia, попробуйте переключиться на intel:

.
sudo prime-select intel

перезагружаемся и смотрим, все ли в порядке. Если ничего не помогает, пожалуйста, опубликуйте в тексте вопроса вывод команды:

sudo lshw -c display
5
27.01.2020, 23:23

Теги

Похожие вопросы