LINUX.ORG.RU

Найти и устранить две проблемы в свежем графическом стеке

 , ,


1

3

Всем привет! Установил в Debian 5 Glibc 2.15 (уверен что до выхода Debian 8 это делали все дебианщики 6-7 версий) - это оказалось достаточным условием для того, чтобы Steam и все его игры заработали. Не пришлось даже обновлять библиотеки графического стека. Но это - с NVIDIA и Catalyst, а мне нужен ещё и Intel. А для Intel потребовалось обновить весь графический стек, от ядра до иксов.

Мне нужна помощь крутых специалистов для поиска и устранения двух багов. Чтобы вы не отказали мне в помощи, я собрал для вас LiveCD со встроенным скриптом установки нового Xorg (пакеты сделаю потом, когда всё будет работать).

Часть 0: зачем? И пакеты с ядром и Glibc

Обсуждениее того, зачем мне это нужно - не формат для Developement. Скажу лишь что мне очень нравится что система ест меньше ста мегов ОЗУ после запуска, и при этом у меня не хардкорное хакерское WM, а вполне себе полноценное KDE с апплетом Bluetooth и кучей фич, которые под виндой начали появляться только в 7-8.

DEB-пакеты с ядром и с Glibc.

Часть 1: сегфолт Mesa

Скачайте мою сборку отсюда - в ней кроме Glibc обновлены также ядро (для новых драйверов, в частности Wi-Fi) и Firefox (для гугления решений ошибок). Запишите её на DVD или Flash-диск (с помощью Unetbootin) и загрузитесь с него. Произведите первоначальную настройку: добавить русский язык, убрать все остальные, поставьте галочку «разрешить латиницу», применить, в третьей вкладке настройте комбинацию клавиш переключения, примените. В программе буфера обмена разрешите «Игнорировать выделение мышью» и запретите Actions. Настройка окончена.

Откройте консоль и выполните sudo /etc/init.d/kdm stop. О нет, белый экран! Наберите в невидимой консоли sudo modprobe i915 - и консоль появляется!

cp /privet_isden_tam_lor/xorg.tar .
tar xf xorg.tar
cd xorg
sh 0-install-deps.sh
sh 1-prepare-dirs.sh
sh 2-install.sh 2> error.txt
sh 3-fix-freezing-keyboard-and-mouse.sh
sudo /etc/init.d/kdm start

Скрипт под номером 2 займёт минут 20. Скрипт 3 обязателен к выполнению! Если забыть, то мышка и клавиатура не будут работать - даже Ctrl-Alt-F1. SSH в этом LiveCD по умолчанию отключен.

Итак, установлен самый последний графический стек. Открываем консоль и пробуем glxinfo и glxgears. Ошибка сегментирования! LIBGL_ALWAYS_SOFTWARE=1 glxgears работает. Вот лог иксов.

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

Часть 2 - неработающий драйвер иксов «modesetting»

Свежий графический стек нужен не только для графики Intel, но и для NVIDIA, если у вас Optimus (в Линуксе Оптимус называется Prime, и требует Linux 3.9, X Server 1.13, X Randr 1.4, или новее).

wget http://us.download.nvidia.com/XFree86/Linux-x86/352.21/NVIDIA-Linux-x86-352.21.run
sudo /etc/init.d/kdm stop
sudo sh NVIDIA-Linux-x86-352.21.run

Разрешаем прописать модуль в DKMS и запрещаем сгенерировать /etc/X11/xorg.conf. Вместо него берём свой отсюда (например), желательно сохранить его заранее, до выключения иксов.

Теперь по идее нужно дополнить конфиг KDM, чтобы KDM выполнял:

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Но я не нашёл как это сделать. Вместо этого создал скрипт optimus:

DISPLAY=:0 xrandr --setprovideroutputsource modesetting NVIDIA-0
DISPLAY=:0 xrandr --auto

Открыл второй терминал (по Alt-F2), и набрал sleep 30 && sh optimus. После этого Alt-F1, и sudo /etc/init.d/kdm start (проще использовать историю команд: несколько раз - клавиша стрелочки вверх). В качестве временного хака сойдёт!

На современном линуксе всё работает, на Debian 5 - такой лог. Как мы видим, NVIDIA превосходно загрузилась и замечательно себя чувствует! А modesetting (драйвер, который занимает чип Intel и работает только на вывод проброшенной картинки) виден только в нескольких строчках:

[ 38802.550] (II) LoadModule: "modesetting"
[ 38802.551] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 38802.551] (II) Module modesetting: vendor="X.Org Foundation"
...
[ 38802.551] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
...
[ 38802.559] (WW) Falling back to old probe method for modesetting

И всё! А вот какие простыни текста он должен выдавать.

Первое, о чём я вспомнил, это два патча для modesetting из статьи, по которой я составлял скрипт компиляции: add_prime_support-1.patch и fix_modesetting-1.patch. Названия как бы намекают на то, что это исправляет проблему! Но нифига. (Кстати, в скрипте они не применяются - когда вы будете тестировать, пересоберите X Server с ними, или отредактируйте скрипт под номером 2).

Второе, о чём я подумал, это параметр Option "AutoAddGPU" "on". Я ещё не знал что проблема в modesetting, и думал что это NVIDIA не подключается - поэтому разрешил горячее подключение GPU. Но чтение логов, команда xrandr --listproviders, и попытка сделать DISPLAY=:0 glxinfo развеяла мои сомнения: NVIDIA чувствует себя хорошо! modesetting - плохо.

Третье, о чём я подумал: «последняя версия драйвера modesetting - бажная!». В статье по компиляции сказано что начиная с последнего релиза X Server драйвер modesetting включен в его исходники, а не распространяется отдельно. Пофиг - попробовал версии 0.9.0 и 0.8.0. Не работает.

Четвёртое, о чём я подумал: «это всё HAL виноват! Нужно пересобрать Xorg с libudev, и тогда заработает!». Сказано - сделано: я удалил libhal-dev и установил libudev-dev (положил в xorg.tar отдельно), загрузил LiveCD заново, и собрал иксы. Снова весело словил неработающие мышь и клаву - так что если будете пробовать это действие, модифицируйте скрипт под номером 3, добавив в него правила udev. И да - логи не изменились, всё по-прежнему не работает.

Теперь я надеюсь только на вас, умные и опытные люди! Cast i-rinat

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 3)

Всем привет! Установил в Debian 5 Glibc 2.15 (уверен что до выхода Debian 8 это делали все дебианщики 6-7 версий)

Фраза, ложная на столь многих уровнях...

Найти и устранить две проблемы в свежем графическом стеке

Да, конечно, с твоей кривой сборкой на основе три года как неподдерживаемого дистра все хорошо, это новый графический стек полон проблем...

t184256 ★★★★★
()

Обсуждениее того, зачем мне это нужно - не формат для Developement.

Хорошо. Вот тебе тогда рецепт как всё починить: просто обратно разделай всё, что ты наделал.

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

Не плохой запрос. А к разрабам этих библиотек не пробовал обращаться?

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

Я б запостил баг-репорт, если бы умел перевести «Часть 1» на английский язык. Потому что Debian 5 они для меня вряд ли установят, а мой LiveCD требует инструкцию. Если у нас ничего не получится, это единственное что останется.

А пока все спят, я попробую собрать изначально без Glamor (в прошлый раз - пересобрал только X-Server). Нужно попробовать все варианты. И патч «fix_modesetting» наложу ещё раз. Очень хочу сделать эту систему дефолтной :-)

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

Потому что Debian 5 они для меня вряд ли установят.

Ясен пень, ты один такой. Участников какого именно проекта ты вообще собрался посмешить таким багрепортом?

Если у нас ничего не получится

Ололо, вас что, двое?

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

Я особо не вникал. А там можно сделать образ для VirtualBox, раз такая пьянка. Так, чтобы одна команда приводила сразу к ошибке. Ну и инфу для отладки не забудь в бинарях оставить

anonymous
()
Ответ на: комментарий от Unicode4all

ну здесь у меня простой guest additions. этот pci passthrough в virtualbox для фри не работает. Но я думаю, тс'у этого может быть вполне достаточно

anonymous
()

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

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

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous_sama

Все иксовые библиотеки скомпилировались, но одна - Mesa - работает неправильно. При этом проприетарный OpenGL чувствует себя прекрасно.

Вторая проблема - не работает драйвер иксов «modesetting», а без него невозможен Optimus.

Таким образом, мой ноутбук не может запускать игры на этой системе. Если бы заработало что-то одно, то было бы здорово! Однако не всё так плохо, и я установил ретро-систему на стационарник с GTX 650. Помимо Steam, запустил там Google Chrome (с эмулятором Android), Skype, apulse, Xinput 2 для Wine, патчи на Freetype, и на очереди 2GIS. Но в моём образе этого нет - там всё по-минимуму.

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

Ты делаешь все неправильно. Тебе нужно взять актуальный дистрибутив и собрать KDE3 или взять TDE к нему. Сейчас у тебя там сплошное решето, плюс ты превратил твой Debian в Slackware (с которой обращались очень грязно, потому-что даже в ней можно кое-как запакечивать).

anonymous_sama ★★★★★
()

ТС, тебе для пользовательской машины? Тогда забей. А хочешь для какого-то спец применений - use OpenEmbedded, там то посвежеее графический стек всегда.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Похоже, главное в комментарии ты пропустил — Mesa там была не причём. Просто в некоторых версиях срабатывал assert и программа валилась от SIGABRT, а в других случаях assert не срабатывал. И тогда в зависимости от ситуации был либо чёрный экран, либо программа валилась от SIGSEGV. Что довольно ожидаемо — данные вышли за допустимые пределы, там мусор, вызвающий обращения по совершенно диким адресам.

i-rinat ★★★★★
()

Паря, да у тебя просто МОРЕ свободного времени! Эх, мне бы так...

anonymous
()

А почему ты считаешь что для intel видеокарты должен драйвер modesetting использоваться? Смотрю себя на ноуте, intel карточка работает на intel же драйвере xorg.

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

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

увидел конечно, у меня тоже ноут с Optimus. и сколько помню никогда у меня intel видеокарты не запускались на modesetting - черный экран и все.

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

У тебя Bumblebee, и там i965 + NVIDIA. А есть ещё modesetting + NVIDIA, это описано здесь: ftp://download.nvidia.com/XFree86/Linux-x86/352.21/README/randr14.html

Мне больше нравится официальный способ от NVIDIA. Да, Bumblebee умеет обесточивать NVIDIA при неиспользовании, и да, нет тиринга. Но в Team Fortress 2 между движением мышью и перемещением взгляда игрока - 50-100 мс. Prime от NVIDIA даёт мгновенный результат.

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

> Ты делаешь все неправильно. Тебе нужно взять актуальный дистрибутив и собрать KDE3 или взять TDE к нему.

Сейчас пишу из Opensuse 11.4 с KDE3. Это не целостная система: если поставить галочку «Запомнить пароль root для текущей сессии», он не запоминается. Или Bluetooth - в GNOME и KDE свои программы для работы с ним, а не общие для всех DE на GTK и Qt. Миллион раз меняли протокол системной службы Bluez, и все эти программы уже нерабочие. То же самое с Network Manager. И гашение экрана - настройках «не гасить экран» - и что вы думаете? Гасит. Наверное все эти Xrandr и Xinerama сто раз успели поменяться, и системные настройки гашения экрана теперь в другом месте. Особенно весело во время игры в Сегу - играешь на геймпаде вместо клавиатуры, а экран погас. Я же жал на кнопки! Приходится делать xset -dpms и xset -s off

А старый Debian - целостная система, KDE3 которого глубоко интегрирован в неё. Хотя вру - экран всё равно гасится, когда в настройках KDE выставлено «не гасить» :-( А остальное радует!

P.S. В более новых Opensuse KDE3 по-прежнему есть, но там всё ещё хуже.

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

ну попробую, давно искал что-то подобное для проверки.

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

Это либо проблемы openSUSE либо ты признался у неосиляторстве. Используй blueman, много лет и работает всегда, интерфейс понятный. С экраном все просто (не помню конкретный блокировщик экрана в KDE3, но я бы не пользовался им из соображений безопасности) сейчас все завязано на dbus, когда приложение запускает оно сообщает статуc Active, и блокировщик экрана не блокирует экран. Если же приложение или блокировщик экрана (а скорей всего в блокировщике kde3 нет поддержки dbus, что логично, тогда и dbus тогда и dbus кажется не было) не поддерживает dbus, то экран блокируется. Пока это наиболее правильно реализовано только в одном блокировщике экрана и это gnome-screensaver из gnome3, или те блокировщики экрана которые основаны на нем. Также еще некоторые приложения используют более простые схемы, как например работа с самим блокировщиком экрана или работа с xdg-screensaver (что является более каноничным путем). Последний кстати может у тебя не работать. Алсо, если ты нажимаешь на джойстик, или что-то набираешь на клавиатуре, экран гаснуть не должен. Лично я использую xscreensaver, но так как у него нет поддержки dbus я отключаю его перед запуском игр.

блокировщик

Слово так режит мой слух, но не знаю как правильно сказать это по-русски.

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

экран во всех дебианах гасится, и даже с гномом

anonymous
()
30 июля 2015 г.

Всем привет! Соскучились по мне?

Первую проблему я решил откатом на Mesa 9.2.5. В процессе постепенного отката на предыдущие версии Mesa выяснилось, что команда фиксит некропроблемы. То мы глючим со старым Python (в любом случае у меня уже установлена 2.7), то в новой версии перестаём. То мы хотим python-libxml2, то жёсткая необходимость пропала. То мы ни в какую не собираемся без libudev, то мы получаем поддержку sysfs обратно. (Кстати, нужно попробовать компильнуть 10.5 и 10.6 с libudev - может дело было в этом...)

В общем, раз некропроблемы фиксят, я буду искать точную версию, в которой баг проявился. Затем найду коммит по принципу поиска льва в пустыне. Времени у меня полно... А там недалеко и до репа для тех, кто хочет устанавливать в старый Debian современные программы!

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

То мы глючим со старым Python (в любом случае у меня уже установлена 2.7), то в новой версии перестаём. То мы хотим python-libxml2, то жёсткая необходимость пропала

напоминает как овуляшки говорят: «а мы покакали!», «а у нас зубик режется!»

anonymous
()

Всем привет!

1). Неработающая Mesa пофикшена в новом релизе. Не работали релизы 10.3 и 10.5. 10.4 и 10.6 работают хорошо

2). Неработающий modesetting пофикшен в Xorg Server 1.17.2. Правда только наполовину. Картинка через Intel пошла, но PRIME по-прежнему не работает. Буду репортить на Freedesktop.

Образ по ссылке на Яндекс.Диск обновлю в конце дня.

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

Так забавно за этим наблюдать, сидя на gentoo, где все эти версии были уже несколько месяцев назад.

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

X-Server 1.17.2 недавняя. Mesa 10.6 была давно, просто я не пробовал.

В Gentoo-то и у меня не глючило это никогда! В случае с Mesa проблема, наверное, в GCC 4.3. В случае с драйвером modesetting баг был на 32-битных системах, в том числе и в новых.

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

В git это всё было месяцы назад.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.