LINUX.ORG.RU

Не запускаются иксы

 , ,


1

1

Пытаюсь запустить игру в отдельном х-сервере, не стартуют.

Fatal server error:
(EE) no screens found(EE) 
(EE) Please also check the log file at "/var/log/Xorg.1.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

cat /var/log/Xorg.1.log

Смущает строка

[ 12402.121] (EE) intel(0): [drm] failed to set drm interface version: Permission denied [13]. 
и
[ 12399.943] (EE) Error systemd-logind returned paused fd for drm node

Но гугление не дало результатов. Использую Intel вместо видеокарты.

Ответ на: комментарий от peregrine
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: ASUSTeK Computer Inc. Device 8534
awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

от юзера пускаешь?

Ну да.

[ 12402.121] (EE) intel(0): [drm] failed to set drm interface version: Permission denied [13].

Хм. Что значит, что ты пускаешь от юзера? Как ты пускаешь и что именно?

Zubok ★★★★★ ()
Ответ на: комментарий от awesomenickname

Так, ок. Проверь, есть ли модуль ядра и загружен ли он:

lsmod | grep intel

Далее покажи права на /usr/bin/X:

ls -l /usr/bin/X
Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

lsmod | grep intel

kvm_intel             147785  0 
snd_hda_intel          30520  8 
snd_hda_controller     30786  1 snd_hda_intel
kvm                   464964  1 kvm_intel
snd_hda_codec         131437  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller
crc32c_intel           22094  0 
snd_pcm               104234  5 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_controller
ghash_clmulni_intel    13230  0 
snd                    80001  25 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device

ls -l /usr/bin/X

lrwxrwxrwx. 1 root root 4 Дек 10 02:39 /usr/bin/X -> Xorg

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Так, похоже, что у тебя нет модуля ядра. На всякий случай покажи весь вывод lsmod без grep.

lrwxrwxrwx. 1 root root 4 Дек 10 02:39 /usr/bin/X -> Xorg

Тогда

$ ls -l /usr/bin/Xorg

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

https://archlinux.org.ru/forum/topic/13846/ Вот тут выяснил, что

Х сервер теперь может запускаться из-под пользователя, благодаря systemd-logind, это означает, что он должен запускаться из того же терминала, который был использован для входа. Переадресация stderr препятствует этому. Старое поведение можно восстановить с помощью файла Xorg.wrap (см. man xorg.wrap). Имейте ввиду, что запуск Х сервера через login-manager пока производится по-старинке от рута.

После обновления выяснилось, что в этом режиме можно запустить только одну сессию иксов одновременно. Попытка запуска следующей без закрытия предыдущей (независимо от номера консоли и значения DISPLAY) проваливается из-за какого-то бардака с правами на доступ к устройству TTY, которое принадлежит сначала пользователю, в процессе запуска иксов меняет владельца на рут, а потом обратно.

Я помню, при самом первой попытке запуска отдельного Х, иксы ругались, что нужно поправить значение в /etc/X11/Xwrapper.config , что я и сделал (изменил allowed_users=anybody благодаря гуглежу).

Теперь вот пришел сюда с этой проблемой, уже новой.

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Жаль, безрезультатно.

Так, надо выяснить, какой бинарник у Xorg в Fedora. По размеру /usr/bin/Xorg - это скрипт. Значит, он еще какой-то бинарник вызывает. Может, есть /usr/bin/Xserver? Где на сайте в Fedora можно посомтреть состав пакета с Xorg?

Zubok ★★★★★ ()
Ответ на: комментарий от awesomenickname

Похоже, что этот. Какие тут права?

ls -l /usr/libexec/Xorg.bin

А у /usr/bin/Xorg тогда назад вернуть в 755, как было, а то забудем, что меняли:

# chmod 755 /usr/bin/Xorg
Zubok ★★★★★ ()
Ответ на: комментарий от awesomenickname

Да, тут и systemd-logind ругается еще в логе. Я сразу не заметил. Черт, я с systemd этим совсем слаб, ничего про него не знаю:

[ 12399.943] (EE) Error systemd-logind returned paused fd for drm node

Но идея понятна: сервер X не имеет достаточных прав для доступа к устройству drm. Теперь надо думать, как это исправить.

Zubok ★★★★★ ()
Ответ на: комментарий от awesomenickname

Х сервер теперь может запускаться из-под пользователя, благодаря systemd-logind, это означает, что он должен запускаться из того же терминала, который был использован для входа

А с какого tty ты запускаешься?

Может, так попробовать?

$ xinit /mnt/hdd/system/UrbanTerror42/Quake3-UrT.x86_64 -- :1 vtN

где N - номер консоли, с которой запускаешься от 1.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от awesomenickname

Ну что ж, спасибо и на этом, я тоже не заметил systemd-logind уведомление, может что найду.

В Debian у иксов выставлены SUID и SGID (подчеркнуто):

$ ls -l /usr/bin/X
-rwsr-sr-x 1 root root 9508 Май 12  2013 /usr/bin/X*
   ^  ^

То есть я в Debian могу от пользователя запустить иксы как root. У тебя такого нет, у тебя иксы запускаются от пользователя. Для доступа к модулю ядра ему должны быть даны дополнительные привелегии, но они почему-то не даются. Поэтому failed to set drm interface version: Permission denied [13]. Видимо, systemd-logind это и делает. Кое-какие инструкции есть, но тут для archlinux. Надо делать поправку на специфику fedora.

https://wiki.archlinux.org/index.php/Systemd/User#Xorg_as_a_systemd_user_service

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от awesomenickname

Узкие круги Fedora и тут есть, но пока еще не отозвались. :) Может, позже на топик набредут. Просто systemd — не мой конек. :)

UPD. Добавь, кстати, тег systemd. Может, кто по этому тегу отслеживает.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от awesomenickname

Добавлять себя в audio/video. Так у тебя первая графическая сессия (первые иксы) захватывает устройства и не отдаёт их последующим сессиям. В ином случае права на устройства раздаются сессиям по мере их активации/деактивации (за этим как раз следит logind). По крайней мере, так оно должно работать — хз, может ты и в самом деле на багу нарвался.

В общем:

  • выносишь себя из audio/video
  • возвращаешь SUID-биты на место
  • рассказываешь, как запускаешь вторые иксы — из какой консоли, etc

UPD: у меня в арче всё работает, вторые иксы запускаются из отдельной консоли командой вида xinit /bin/xterm -- /bin/X :1 vt$XDG_VTNR.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от awesomenickname

Глупый вопрос: после всего вышесказанного первые (основные) иксы перезапускались?

Да, вот ещё что. Не выключен ли KMS (i915.modeset=0)? Запускаешь ли ты вторые иксы из «нормальной» (ядерной) консоли? Если перед запуском из той же консоли сделать loginctl show-session $XDG_SESSION_ID, что оно скажет (Type, Active, State)?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx
loginctl show-session $XDG_SESSION_ID
Id=1
Name=oleg
Timestamp=Птн 2015-01-02 23:44:13 EET
TimestampMonotonic=9692325
VTNr=1
Display=:0
Remote=no
Service=sddm-autologin
Desktop=KDE
Scope=session-1.scope
Leader=689
Audit=1
Type=x11
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0

Включен ли KMS (параметр ядра i915.modeset)? Запускаешь ли ты вторые иксы из «нормальной» (ядерной) консоли?

В параметрах ядра i915.modeset нету. Х запускаю с Х-в.

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Офигеть. Cannot reproduce. Видимо, я совсем не понимаю, что у тебя там происходит — i915.modeset должен быть 1 по умолчанию...

Вообще, я хотел сказать, что иксы нужно запускать из отдельного терминала, а про modeset спросил до кучи.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от awesomenickname

Добавил в параметры загрузки ядра i915.modeset=1, и это, как говорится, did the trick.

Тогда мне не очень понятно, что он на permissions ругался в логе иксов. Вроде модули все были на месте. Это реально сбило с толку.

[ 73.747] (EE) Error systemd-logind returned paused fd for drm node

Я не спец по systemd, но видимо как раз эта строчка какбэ намекает не на права, а на то, что systemd-logind остановлен, так как устройства drm не было обнаружено. То есть действительно KMS был выключен, но почему и где — не ясно. Может, в GRUB у тебя прописано было когда-то, а потом забыл?

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)

Zubok, intelfx

Оказывается я ошибся. Когда я добавил в параметры ядра i915.modeset=1, при след перезагрузке, я решил запустить X с tty2 предварительно ее вызывав и тогда все заработало.

Но это просто совпадение и параметр i915.modeset=1 никак не повлиял, с запущенного Х ( запуск командой) все такие же ошибки сыпятся про systemd-logind. Ну хоть что-то стало понятно, что дополнительный Х сервер работает, но почему нужно руками вызывать постоянно tty2, пока загадка.

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Так вроде бы в документациях везде так и написано, что надо запускать с того терминала, где сессия и указать vt2 (если с tty2 запуск). А с какого tty у тебя первый сервер запущен? (это требование именно systemd-logind). В обычной жизни (у меня например) сервер можно на любой tty запустить.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 4)
Ответ на: комментарий от Zubok

А с какого tty у тебя первый сервер запущен?

tty1.

А привык я командой startx $programm : --1 запускать, раньше как-то не волновало, что там где.

awesomenickname ★★★★★ ()
Ответ на: комментарий от Zubok

Не. Это означает, если на пальцах, что «в ответ на просьбу выделить устройство было возвращено устройство, к которому нет прав на доступ».

intelfx ★★★★★ ()
Ответ на: комментарий от awesomenickname

А привык я командой startx $programm : --1 запускать, раньше как-то не волновало, что там где.

Ну вот даже ты должен был попробовать. Я там даже дописал, что «номер консоли, с которой запускаешь от 1» (я имел в виду, что нумерация от 1).

Не запускаются иксы (комментарий)

Да ты и сам привел текст, который говорит прямо об этом:

Не запускаются иксы (комментарий)

Единственное, что могло сбить с толку, что у тебя *уже* один сервер запущен, а все доки исходят из того, что у тебя нет больше серверов и ты один запускаешь. Поэтому не заостряют внимание на этом, но можно догадаться, что если у тебя один сервер уже есть на tty1 и тебе надо второй на tty2, то никак нельзя его запускать из tty1 и надо переключиться, залогиниться и запустить.Это просто причуда systemd-logind. Не знаю, временные это ограничения или нет.

То есть проблема все-таки с правами изначально.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от intelfx

Не. Это означает, если на пальцах, что «в ответ на просьбу выделить устройство было возвращено устройство, к которому нет прав на доступ».

Ну, да, уже понятно. Просто я действительно не знаю, что эти ошибки значат. Предположил.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Поэтому не заостряют внимание на этом, но можно догадаться, что если у тебя один сервер уже есть на tty1 и тебе надо второй на tty2, то никак нельзя его запускать из tty1 и надо переключиться, залогиниться и запустить.Это просто причуда systemd-logind.

Т.е. автоматизма тут не добиться как я понял, нужно постоянно вызывать tty2 руками и там стартовать Х?

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Т.е. автоматизма тут не добиться как я понял, нужно постоянно вызывать tty2 руками и там стартовать Х?

Чтобы после перезагрузки у тебя автоматом всегда два сервера загружались? Или какой автоматизм имеется в виду?

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

ну что бы мне не вводить каждый раз startx $programm — :1 в вызванном вручную tty2, а что бы было как и раньше, все запускалось 1 командой.

Хотя ладно, и так уже хорошо, знаю, что Х стартует. Устал, пошел спать, спасибо еще раз за помощь с этой хитрой конструкцией!

awesomenickname ★★★★★ ()
Ответ на: комментарий от awesomenickname

Я не знаю, какие изменения произошли с тех пор, как появился systemd, но в классическом варианте, если ты используешь какой-то display manager типа xdm, kdm. gdm и т. д., то одной авторизацией можно запустить несколько серверов разом на разных VT. Но конфигурируется это с некоторыми различиями в зависимости от display manager. Например, в xdm в файл /etc/X11/xdm/Xservers можно вписать несколько серверов:

# Examples for multiple local X displays:
# :0 local /usr/bin/X :0 vt9 -depth 15 -nolisten tcp
# :1 local /usr/bin/X :1 vt10 -depth 8 -nolisten tcp

Аналогичная функциональность есть и у других DM.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от awesomenickname
xinit /mnt/hdd/system/UrbanTerror42/Quake3-UrT.x86_64 -- :1 
Dron ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.