LINUX.ORG.RU

Проблемы с графикой в slackware

 , ,


2

2

Поставил на второй диск слаку 14.2. С дефолтным ядром (не обновленным из патчей) паника при загрузке, что странно, потому что загрузка с тем же ядром с установочной флешки работает без проблем. Возможно, что проблема в модулях, но я не стал разбираться. Обновил ядро из зеркала, все заработало, но производительность очень низкая. По lspci я не вижу вменяемого названия карты, не указан драйвер. В /sys тоже информации по драйверу нет. Карточка rx 480, которая вроде как на ядре 4.4.* уже должна поддерживаться нормально свободными драйверами.

Чтобы как-то решить проблему, я собрал два lts ядра 4.19.32: одно с дефолтным конфигом, который я вытащил у ядра слаки, второе с дефолтным конфигом ядра слаки + включенными в конфиге ядра опциями в разделе граф. драйверов, где фигурировало «amd» или «amdgpu». Оговорюсь, что ядро собираю второй раз, порядок прочитал в слакбуке, но применительно к частным случаям слакбук ничего не поясняет, так что действовал почти что наугад. Сборка ядра и модулей прошла без ошибок.

С обоими лтс ядрами все загружается, но есть две проблемы. Во-первых, существенные задержки при переключении окон по alt-tab. Доходит до 10-15 секунд, когда окно загрузится, при этом при переключении мышкой через панель все загружается мнгновенно. Во-вторых, тиринг, который никак не фиксится. На арче мне достаточно или поставить compton и запускать его с opengl-swc, или в конфиге Х прописать tearfree опцию. В слаке не работает ни то, ни другое. В настройках xfwm при активации vsync тиринг пропадает в видео, которые запущены в нативном размере (не во весь экран) или в плеерах в браузере, но если максимизировать или переключить на весь экран плеер в браузере или локальный плеер, то тиринг возвращается. Тиринг при прокрутке в браузерах вообще никак не фиксится.

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

Давайте для начала глянем, кто подхватил карту в ядре

# lspci -knns номер:на.шине
и куда-то положить /var/log/Xorg.0.log или показать из него выхлоп драйвера.

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

Сейчас ничего не могу предоставить, с работы описываю впечатления . Точно помню, что команды lspci -knn и lspci -knnv даже на lts ядрах не давали информацию по драйверу карты. Единственное полезное - номер ширы по VGA 26:0.0. При поиске в /sys по find /sys | grep "driver.*26:0.0" ничего не получал в выхлопе.

Судя по поведению системы что-то все таки менялось в драйвере видеокарты, потому что я стал получать нормальное разрешение в консоле при загрузке системы и графика стала более отзывчивой, не считая казуса с переключением окон. Вечером сброшу лог Х.

Yorween ()
Ответ на: комментарий от bormant
root@slackware:~# lspci | grep VGA
26:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 67df (rev c7)

root@slackware:~# lspci -kns 26:0.0
26:00.0 0300: 1002:67df (rev c7)
	Subsystem: 1462:3413

root@slackware:~# find /sys | grep "drivers.*26:0"
/sys/bus/pci/drivers/snd_hda_intel/0000:26:00.1

Лог X - https://pastebin.com/Jp5iiCK4 . Из информации в логе выходит, что amdgpu есть и он используется. На 37.536 видно, что подхватывается мой конфиг с tearfree. По бектрейсам нашел два старых нерешенных багрепорта на ланчпаде и несколько тем на gentoo.org и SO. Нигде решения или хотя бы точной причины не объясняется…

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

Клинит драйвер. Похоже, его ядерная часть (т.е. есть смысл пытать счастья со свежими ядрами).
Похожее (закрыто за давностью без реального решения):
https://bugzilla.redhat.com/show_bug.cgi?id=1161953

Причем, с подобными симптомами бывают крэши и nouveau, и intel, и radeon.


PS. -knns (повтор n — не опечатка) информативнее. Но поскольку недостающее уже есть в выводе выше, повторять не нужно.

bormant ★★★★★ ()

[ 37.688] (EE) AMDGPU(0): glamor detected, failed to initialize EGL.

Старовата mesa?

Может действительно на current и не обновляться какое-то длительное время? Должен же релиз состояться (правда пока не виден даже на горизонте).

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

Меса 11. Нашел в каком-то блоге инфу о том, что нужна минимум 12 для сборки ядра под мою карту, хотя ядро в общем-то собралось. Попробую обновить чуть позже.

На current не хочется пока переходить, это доп. проблемы. Я со стабильной еще не разобрался как следует, а тут еще обновление и прочее. Когда выйдет слака 15 будет, конечно, полегче. Там ничего обновлять не из оф. реп не придется, все должно завестись, а пока обходными путями. Спасибо за помощь.

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

Может быть есть смысл попробовать amdgpu-pro с ядром 4.9 (xorg-server и так 1.18)? Ваша карта им вроде как поддерживается.

https://github.com/bassmadrigal/slackbuilds/tree/master/unfinished/amdgpu-pro...

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

Проприетарный драйвер совсем не хочется ставить.

По месе, нашел такой тред - https://www.linuxquestions.org/questions/slackware-14/slackware-14-2-and-latest-stable-mesa-4175609214/ . Все совсем не так просто, как казалось. Придется разбираться с кучей зависимостей для апгрейда меса и установкой 32 битной меса той же версии для wine. Это если расчитывать на то, что проблема именно в меса, а не где-то еще… Не знаю даже, стоит ли игра свеч.

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

Не знаю даже, стоит ли игра свеч

Говорят, что все можно настроить, если достаточно долго вертеть в руках. Про стоимость сдесь только косвенно — «достаточно долго» ;)

В любом случае, если решиться на замену части системы, почему бы не попробовать то, где эти замены уже сделаны (угу, это про current). Если следовать простой стратегии — ставим все нужное (в идеале полная установка без KDEI, KDE) и просто пользуемся, не обновляя, то с этим отлично можно жить даже имея развесистый набор самосборных сторонних пакетов. Но точно не обновляя без предварительного чтения ChangeLog.txt и оценки последствий. В принципе, обновления, не влекущие .so version bump можно считать относительно безопасными. Для подстраховки стоит помнить адресок «неправильного зеркала», которое синхронизируется без удаления пакетов — всегда будет шанс откатить обновленное до прежнего состояния. Или вести локально зеркало на момент проверенно рабочей установки, обновляя в нем пакеты только после проверки их работоспособности в своей системе.
Очевидное неудобство — сторонние бинарные пакеты будут под актуальный срез current, что не всегда тождественно установленному, и тем статистисчески выше вероятность конфликта, чем больше изменений между этими состояниями.

Про сторонний софт.
У SBo есть ветка для current, sbopkg про нее знает. У Эрика есть активные ветки для current. Плюс можно смотреть на хранилища slackel — он тоже на current.

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

@bormant, я не бросил попытки осилить слаку.

Возвращаясь к моему вопросу о графике и лагах, которые были обнаружены. Я почитал немного на lq, что нужно обновить и утащил из current64 mesa, libdrm и glibc в 14.2, а также собрал последнее lts ядро. После этих манипуляций все прежние глюки исчезли, даже тиринг перестал проявлятся без конфигурирования x-ов. Вопросы: правильно ли я сделал (достаточно ли?) и не выйдет ли мне эти обновления боком? Осваиваю не очень быстро, боюсь, что когда дойду до какого-то более поздного этапа, зафейлюсь из-за недостаточно понимания того, что сделал сейчас. Но вроде все должно быть правильно, т. к. на сайте mesa libdrm значится как единственное, что должно был соответствующей версии. А glibc пришлось обновить, т. к. без него я не мог запустить иксы после обновления mesa и libdrm (ругалось на низкую версию).

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

Вопросы: правильно ли я сделал (достаточно ли?) и не выйдет ли мне эти обновления боком?
А glibc пришлось обновить, т. к. без него я не мог запустить иксы после обновления mesa и libdrm (ругалось на низкую версию).

Если взяли из current бинарные пакеты, то хотелось бы сразу сказать «нет», но тут не все так просто.

Во-первых, почему «нет» в обычной ситуации. В current за три года ее развития с выпуска 14.2 произошли существенные изменения:
1) произведен отказ от .la файлов,
2) обновлен gcc с изменением C++ ABI.
В журнале эти оба события отмечены апрелем 2019:

Thu Apr 19 01:04:06 UTC 2018
Hi folks, and welcome to the third ever Slackware Mass Rebuild (and the longest ChangeLog entry in project history). There were two primary motivations for rebuilding everything in the main tree.
The first was to switch to the new C++ ABI.
The second was to get rid of all the .la files in the LD_LIBRARY_PATH.


3) обновлена glibc 2.23 -> 2.27.

В обычной ситуации стоило бы взять слакбилды от current, закомментировать удаление *.la, собрать желаемое в 14.2.

Во-вторых, чем эта ситуация необычна.
В отношении ядра — ничем. А вот в отношении mesa есть нюансы: от выпуска 14.2 прошло уже более 3-х лет, и не исключено, что в 14.2 с родным набором софта и родным компилятором текущую mesa и то, что она хочет, окажется собрать невозможно или слишком затратно. Но проверить бы стоило ;-) включая сборку стоковых пакетов требуемых свежих версий.


Поэтому в подобной ситуации я советовал бы перекатиться на current, внимательно отслеживать его ChangeLog.txt, при большом количестве стороннего самосборного софта отказаться от обновлений как только очередной so-version bump потребует пересобирать что-то тяжелое. В очередной раз обновиться с релизом 15.0 или как только польза от обновления покажется существенно больше, чем требуемые затраты (например, захочется обновить бинарный LibreOffice от Эрика, который он на тот момент соберёт с зависимостью от обновленного libboost). Хорошим подспорьем может быть отключение автоматической очистки кэша загруженных пакетов в slackpkg.conf, ну или понадеяться на то, что администраторы «неправильных» зеркал, типа http://ftp.pieskovisko.sk/slackware/ все еще не добавят --delete к rsync-команде синхронизации, а, следовательно, промежуточные версии пакетов для возможного отката назад будут на них все еще доступны.

Тем не менее, система ваша, решать вам.

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

Поэтому в подобной ситуации я советовал бы перекатиться на current

Обновился на current по докам. Система виснет при загрузке на этапе компиляции GSettings XML схем. Буду разбираться…

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

Обновился на current по докам

По каким?
Они учитывали установку Added и удаление Removed пакетов в соответствии с актуальным ChangeLog.txt, отработку .new файлов?

Дело в том, что UPGRADE.TXT, CHANGES_AND_HINTS.TXT обновляются перед самым выходом релиза, в current они содержат сведения от 14.2, т.е. неактуальные (особенно второй).
Тут я не совсем прав, обновление было недавно 2019-08-09 07:36.

на этапе компиляции GSettings XML схем

или после них? по выводу на экран несложно и ошибиться, нужно этот момент отдельно проверить.

Буду разбираться…

Вероятно значительно проще в текущей ситуации окажется забэкапить /etc, /home (если он почему-то не на отдельном разделе), прочие данные и поставить начисто с форматированием корня. /etc использовать для справки.

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

виснет при загрузке на этапе компиляции GSettings XML схем

В 14.2 в rc.M так:

if [ -x /usr/bin/glib-compile-schemas ]; then
  echo "Compiling GSettings XML schema files:"
  echo "  /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas &"
  /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas >/dev/null 2>&1 &
fi
В 14.2 эта команда запускается в фоне, т.е. не на ней стопорится загрузка, а где-то дальше по rc.M.

Легко может быть виновата ненастроенная сеть и ожидание кем-то таймаута.


PS. В current тоже в фоне.

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

Нет, не потеряли. Спасибо за предыдущий развернутый ответ. Я пока не возвращался к слаке. Как уже писал, осваиваю не быстро ибо в будни времени в обрез из-за работы. Вчера попытался дебажить, но ни к чему не привело. Пробовал подождать отвисания каких-то сервисов, но и через 15-17 минут все также висело. Поэтому я пока только переустановил с нуля 14.2 и буду в ближайшее время обновлять ее до текущей версии. Возможно, проблема в том, что я уже успел установить/обновить из текущей версии. Как только будет информация, обязательно поделюсь. Я точно добью слаку до работоспособного состояния.

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

Кстати, про свежую mesa и 14.2:
после добавления и замены нескольких пакетов сборка закончилась успешно.
Вопрос о том, всё ли и насколько работоспособно, пока открыт ;)

Новый llvm уже есть готовый в extra/.
python3, python3-setuptools есть у alienbob.
Остается пересобрать из current (закомментировав удаление *.la)
l/libclc, l/Mako, x/libdrm, x/libglvnd, x/libva, x/mesa.

Ну и а) в блэклист добавить их, чтоб на стоковые не вернулись, либо, что выглядит предпочтительнее, б) сделать репо, дописать в slackpkgplus.conf с приоритетом выше стоковых пакетов.

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

Обновил чистую 14.2 до текущей. В этот раз все еще хуже… Не работает ни одно устройство ввода (все usb), не работает сеть судя по логу и тому, что не могу по ssh подключиться и nmapом найти пк. Пробовал переподключать клавиатуру уже после загрузки на экране логина в tty, ничего не произошло.

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

Не работает ни одно устройство ввода (все usb), не работает сеть судя по логу и тому, что не могу по ssh подключиться и nmapом найти пк.

Допущены ошибки при обновлении между версиями.

Предположу, что симптомы говорят о том, что загружено одно ядро, а модулей от него нет (а если есть, то от другого).

Смотрим
1) версия загруженного ядра
# uname -r
2) установленные пакеты с ядром и модулями
# ( cd /var/log/packages ; ls kernel-* )
версии в (1) и (2) должны совпадать.

Если нет,
1) для загрузки BIOS и lilo выполнить и проконтролировать отсутствие ошибок
# lilo -v
2) для загрузки UEFI и elilo выполнить
# eliloconfig
или руками скопировать ядро (и, если используется, initrd) на предварительно смонтированный раздел ESP (обычно в /boot/EFI), при необходимости подправить elilo.conf


Если предположение неверно, хотелось бы подробностей.

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

Допущены ошибки при обновлении между версиями.

Обновлял по докам. Установил чистую 14.2, раскомментировал в mirrors в разделе current сервер, далее

slackpkg update
slackpkg install-new
slackpkg upgrade-all
slackpkg clean-system
eliloconfig

И ребутнулся. Ядро подхватило, это видно при загрузке. Модули нового ядра на месте, я проверил с дебиана.

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

Проблема, видимо, была в ядре. Переустановил 14.2, собрал ядро с конфигом от дефолтного, апгрейднулся, оставив самосборное ядро основным в elilo.conf. Теперь устройства ввода работают и сеть есть. Правда графика совсем не радует. Все те же болячки в виде каких-то диких задержек и лагов при перемещении окон, тиринг везде. Буду разбираться.

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

Играть в угадайку — так себе занятие ;-)

Чтобы не гадать, самый простой путь видится таким — берем
1) http://bear.alienbase.nl/mirrors/slackware/slackware64-current-iso/slackware6...
ну или там же полный iso
2) делаем установочный носитель
3) грузим с установочного носителя установленную систему, не установщик
Для BIOS-загрузки рецепт указан на стартовом экране и заключается в передаче ядру параметров «root=/dev/sdXY ro rdinit=».
Для UEFI-загрузки используется GRUB, у него есть пункт «Detect/boot any installed operating system», но он делает немного не то, что нам нужно. Он загружает установленную систему с установленным ядром, а нам нужно погрузить систему с ядром с установочного носителя. Поэтому в первом пункте жмем «e» и в строку-параметр, начинающуюся c «linux» после «SLACK_KERNEL=huge.s» дописываем «root=/dev/sdXY ro rdinit=», жмем F10 для загрузки.

Выполняем п.2 из предыдущего сообщения, неплохо было бы скинуть фотку с выводом.

С какого зеркала выполнялось обновление? У меня почему-то стойкое ощущение, что оно содержало kernel-huge/kernel-generic и kernel-modules разных версий (находилось в неконсистентном состоянии).

В установщике на сегодня ядро 4.19.72. По ChangeLog.txt у вас на диске должны быть модули именно от него, заодно проверьте в /lib/modules. По # lsmod должны быть видны загруженные hid, usbhid, hid_eneric, [eo]hci_hcd, USB-устройства должны быть в рабочем состоянии.
Если это так, можно из этой оболочки починить систему.


Другой вариант — взять полный образ
http://bear.alienbase.nl/mirrors/slackware/slackware64-current-iso/slackware6...
и поставиться с него. Этим вы исключите ошибки при обновлении.

Про умолчальное зеркало
https://mirrors.slackware.com/slackware/slackware64-current/
нужно сказать, что это CDN, для России по факту будет скорее всего редирект на yandex.ru, а за ним не раз замечал рассинхроны.
Для установки по сети я б использовал эталонное зеркало на slackware.osuosl.org, раз уж не хотите брать полный ISO.

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

Разобрался за выходные немного. Оказывается, проблема была в том, что я случайно скипнул диалог о разруливании нескольких версий программ (все, что я ставил в 14.2 из current). Что я нажал тогда, я не помню, но точно что-то не то. Сейчас удалил все старые пакеты, апгрейднулся с абсолютно чистой 14.2. Наткнулся на то, что новое ядро не копируется в /boot/efi/EFI/Slackware, что странно. Еще интересно, что система 14.2 с generic ядром грузилась без проблем при отсутствии initrd, а с generic ядром из current 4.19.76 не грузится ни в какую без initrd (пишет, что не находит корневую фс). Даже с huge ядром, в котором вроде как все включено, загрузка останавливалась на панике с той же ошибкой. Все это я поправил. Графика, вроде, более-менее работает, тиринга нет. Осталось доустановить нужный софт.

Пользуясь случаем, хочу спросить совет, какой полноценный видеоплеер проще поставить? Из mpv и vlc. У alien mpv не нашел, только vlc. Там вроде немного зависимостей. И еще нужен адекватный просмотрщик pdf с поиском на кириллице и латинице. Встроенный xpdf это ужас. Хотел поставить zathura, а там куча зависимостей. Mupdf тоже есть, но без поиска…

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

Еще интересно, что система 14.2 с generic ядром грузилась без проблем при отсутствии initrd,

Так не бывает.

а с generic ядром из current 4.19.76 не грузится ни в какую без initrd (пишет, что не находит корневую фс).

Так и должно быть

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

Так бывает, но не в вашем случае.

Эти симптомы говорят только о том, что по факту грузилось вовсе не то ядро, какое вы думали должно было грузиться.
Такое часто могло происходить при использовании LILO (точнее, неиспользовании команды lilo для обновления загрузчика).

С загрузкой EFI ситуация возможна похожая, хотя и по другой причине: пакет ставит файл ядра в /boot/, делает симлинки на ядро в /boot/. А фирмварь грузит eLilo.efi с ESP, в его конфиге прописан путь к ядру на ESP. Поэтому, как говорил Амаяк Арутюнович, надо еще обязательно дунуть; если не дунуть — не скопировать нужное ядро на ESP — фокус не получится.
Копировать при помощи eliloconfig, или руками, или своим сценарием — дело десятое.

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

Так не бывает.

Вам виднее, но в /boot/efi/EFI/Slackware initrd.gz отсутствовал, а в конфиге elilo.conf указания на initrd не было.

Такое часто могло происходить при использовании LILO (точнее, неиспользовании команды lilo для обновления загрузчика).

lilo и не использовал, использовал eliloconfig. Ошибок не было. Если в результате выполнения eliloconfig новое ядро должно было скопироваться в /boot/efi/EFI/Slackware, то этого не произошло. Пока руками не перенес и не создал initrd.gz там же ничего не загружалось.

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

какой полноценный видеоплеер проще поставить? Из mpv и vlc. У alien mpv не нашел, только vlc. Там вроде немного зависимостей

У VLC как такового зависимостей весьма немало. Но опакеченный Эриком линкует большинство их статически — риск поломки бинарника при обновлении системы существенно ниже.
В комплекте с системой уже идет mplayer.

просмотрщик pdf с поиском на кириллице и латинице

Есть такой встроенный в FireFox и в Chromium ;-)
Zathura попробую собрать, посмотрю.

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

Хотел поставить zathura, а там куча зависимостей

Не увидел кучу, из обязательных один только girara.
Собрал, поставил. Поиск на русском вполне работает.

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

Спасибо, я понял. Не правильно интерпретировал вывод sbopkg. Он не проверяет удовлетворенные зависимости, поэтому я считал еще meson и все, от чего он зависит, тоже нужно устанавливать. Действительно, zathura работает. Осваиваюсь дальше.

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

Он не проверяет удовлетворенные зависимости, поэтому я считал еще meson и все, от чего он зависит, тоже нужно устанавливать.

Стоп.
По этой фразе могу судить, что sbopkg или/и sqg у вас настроены на репо SBo от 14.2.
Это неправильно и повлечет как ошибки при сборке, так и замену дистрибутивных пакетов. Проверьте источники в sbopkg:

# grep REPO_[BN] /etc/sbopkg/sbopkg.conf
REPO_BRANCH=${REPO_BRANCH:-current}
REPO_NAME=${REPO_NAME:-SBo-git}

# grep REPO_[BN].*= $(which sqg)
#REPO_BRANCH=${REPO_BRANCH:-current}
#REPO_NAME=${REPO_NAME:-SBo-git}

т.е. в sbopkg.conf должно быть хранилище слакбилдов для current, а в sqg — закомментировано или такое же.

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