LINUX.ORG.RU

Bumblebee + KDE5 - could not start kdeinit5 (libnvidia-tls.so)

 , ,


2

2

Здравствуйте!

Обладатель ноута ASUS N56VZ с i7-3630QM и двумя видео-адаптерами (Intel HD 4000 + NVIDIA GT 740M). Пытаюсь завести bumblebee на Fedora 22 Workstation KDE-based. Делаю по вот этому мануалу - http://fedoraproject.org/wiki/Bumblebee. После установки проприетарного блоба нвидии (bumblebee-nvidia) падают (после перезагрузки) пятые кеды с сообщением «Could not start kdeinit5. Check your installation». При тырканьи в startx из консоли (Ctrl-Alt-F2) нахожу строчку:

../usr/bin/kdeinit5: error while loading shared libraries: libnvidia-tls.so.352.21: cannot open shared object file: No such file or directory

Смотрю руками (find / | grep libnvidia-tls):

/usr/lib/nvidia-bumblebee/libnvidia-tls.so.352.21
/usr/lib64/nvidia-bumblebee/libnvidia-tls.so.352.21
/usr/lib64/nvidia-bumblebee/tls/libnvidia-tls.so.352.21

В подарок нахожу следующую строчку в /var/log/Xorg.1.log:

Failed to load module "nvidia" (module does not exist. 0)

Модуль nvidia в lsmod отсутствует, при попытке modprobe ругается на «не найдено». Где-то вычитал, что такое может происходить при выключенной NVIDIA-карте, пробую следующие команды:

tee /proc/acpi/bbswitch <<<ON
modprobe nvidia

Модуль успешно грузится и светится в lsmod, но при попытке startx - все та же ошибка. Я не знаю, как должен работать модуль nvidia (мб подгружаться прямо во время инициализации), так что на всякий случай попробовал с включением карты через bbswitch и без ручного подключения - та же ошибка...

С миром Линукса я знаком не очень хорошо (балуюсь с мини-сервером на Debian из SSH), так что подобный момент уронил меня в глубокую депрессию, даже не представляю, куда смотреть... Гугл ничего путного не нашел (а что нашел - либо не относилось к моей проблеме, либо не решило ее). Единственный рабочий совет - переустановить и забыть, что не хочется (в смысле, забыть, сама переустановка - легко).

Модуль nouveau находится в блеклисте, модуль nvidia я из него вытащил (закомментил строки в /etc/modprobe.d/blacklist-nvidia.conf и bumblebee.conf там же). Шмель настроен на использование драйвера нвидии, D-Bus правильный, пути до библиотек (в этих путях есть и libnvidia-tls в том числе) правильные... Самое непонятное - у большинства при проблемах с bumblebee возникают проблемы только с optirun, а система грузится. У меня же даже логин-экран не появляется (зависает до появления - черный экран).

Выхлоп lspci | egrep «3D|VGA»:

00:02:0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00:0 3D controller: NVIDIA Corporation GK107M [GeForce GT 740M] (rev a1)

Выхлоп uname -r:

4.0.5-300.fc22.x86-64

На ядре 4.0.4 (Федора сама его обновила и добавила опцию в бут-меню) происходит ровно та же картина. Обновление ядра сделал ДО начала затеи с bumblebee.

Вся задача сводится к работе в Лине на Intel-карте (экономия батареи) и возможности иногда пулять приложения в optirun + primus (до него даже не доходило...) на дискретной видеокарте. В частности, хочу полностью искоренить Форточки с ноута и полностью перейти на Линукс, но иногда возникающая потребность тупо убить время в играх не дает этого сделать... Переход на только Linux-игры не рассматривается - дружное комьюнити в проектах бросать неохота...

Очень надеюсь на Вашу помощь. Заранее спасибо.

P.S: перепечатывал выхлопы ручками, так что возможны опечатки, заранее прошу прощения (вроде их нет). Сейчас уже поднял wi-fi (nmcli), так что если нужны длинные выхлопы логов/etc - не проблема.



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

Для использования совместно с bumblebee требуются специальным образом исправленные (точнее, специальным образом установленные) драйвера nvidia.

Сейчас у тебя общесистемная реализация библиотеки libGL.so из драйвера nvidia, а должна быть из mesa. При этом nvidia'вская реализация libGL.so устанавливается в отдельную директорию и используется только для тех приложений, которые запускаются через optirun.

Тебе сюда: https://fedoraproject.org/wiki/Bumblebee#Bumblebee_with_the_NVIDIA_proprietar...

Если ты делал ровно по этому гайду — то не знаю; у меня пару месяцев назад (поднимал федорку приятелю) всё запустилось из коробки. Fedora 21 тогда была.

Как откатывать систему до работоспособного состояния — тоже не знаю, т. к. не знаю, как ты её привёл в неработоспособное.

P. S.: модуль nvidia не должен автоматически подгружаться. Убьёшь энергосбережение.

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

Большое спасибо за разъяснение происходящего.

Да, делал все по гайду, сначала. Вот теперь думаю, может, пакет «bumblebee» ставить не надо, только «bumblebee-nvidia»?.. Сейчас попробую на чистой, хотя не думаю, что это так...

Вот все [основные] команды, которые выполняю в консоли от установки до вылезания ошибки:

su
dnf -y upgrade
dnf -y install libbsd-devel libbsd glibc-devel libX11-devel help2man autoconf git tar glib2 glib2-devel kernel-devel kernel-headers automake gcc gtk2-devel
dnf -y install VirtualGL
dnf -y install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee/fedora22/noarch/bumblebee-release-1.2-1.noarch.rpm
dnf -y install bbswitch bumblebee
dnf -y install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora22/noarch/bumblebee-nonfree-release-1.2-1.noarch.rpm
dnf -y install bumblebee-nvidia
reboot

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

Попробовал. Пакет bumblebee не ставил, но он сам подтянулся из bumblebee-nvidia, что логично.

Возник новый момент. Ядро обновилось до 4.0.6.300.fc22.x86_64. Запускаться стало по-другому - после логина появляется кдешная мышь на черном экране без ошибки и виснет. Ждал минут 5. В консоли на startx вылезает та же ошибка. Плюс заметил еще строку:

/etc/X11/xinit/xinitrc.d/10-qt5-check-opengl2.sh - integer expression expected

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

После перезагрузки даже логин-экран не появляется...

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

bumblebee-nvidia --check

nvidia.ko compiled into in the kernel tree ok.
modinfo output for NVIDIA:

filename:       /lib/modules/4.0.6-300.fc22.x86_64/kernel/drivers/video/nvidia.ko
alias:          char-major-195-*
version:        352.21
supported:      external
license:        NVIDIA
alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        drm
vermagic:       4.0.6-300.fc22.x86_64 SMP mod_unload 
parm:           NVreg_Mobile:int
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_UpdateMemoryTypes:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_MapRegistersEarly:int
parm:           NVreg_RegisterForACPIEvents:int
parm:           NVreg_CheckPCIConfigSpace:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_AssignGpus:charp

Check bbswitch kernel module...

bbswitch is loaded into the current kernel ok.

All checks completed successfully! NVIDIA driver appears to have compiled ok.
sharro
() автор топика
Ответ на: комментарий от intelfx

Попробовал повторить то же самое на Fedora 22 Workstation на гноме 3 (т.е. «основной» дистр федоры). Результат тот же, как только ставлю bumblebee-nvidia, DE отказывается запускаться. На гноме это выглядит так - при попытке логина пару секунд думает и выкидывает опять на страницу логина (молча крашится, насколько я понял - за страничку логина же что-то другое отвечает, не DE?). В логах иксов то же самое, в консоли после startx то же самое.

После удаления пакета bumblebee-nvidia все приходит в норму. optirun не работает, выкидывает:

Cannot access to secondary GPU - error: [XORG] (EE) systemd-logind: failed to get session: PID 2538 does not belong to any known session
Что, в принципе, не так важно без блоба нвидии. Сам bumblebeed.service запущен, питание на карту не идет (/proc/acpi/bbswitch == OFF), но даже если включить, ничего не изменится. Я так понимаю, включать он ее сам должен.

Глаз зацепился за фразу в мануале:

«bumblebee-nvidia» is both a rpm package and a shell script. The «bumblebee-nvidia» package contains the shell «wrapper» script, init scripts to run it at bootup, and a SELinux security policy <...>

Возможно, глюк скрыт как раз в этих init-скриптах?..

Даже не знаю, в какую сторону смотреть... ( Есть идея попробовать повторить на openSUSE, благо в прошлом я уже ставил на нее шмеля (правда, тоже не сразу), но она из коробки работает хуже... Плюс в федоре все свежее, да и вообще понравилась она мне, не хочется уходить...

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

Благодарю.

Еще возникла идейка - попробовать с другой версией драйвера. Пока ставится (в который раз...) чистая Федора, нагло залез с винды (выкачал rpm и вытянул ссыль, и ее в браузер) в репо шмеля и заметил там несколько разных версий пакета bumblebee-nvidia (http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora22...). У меня ставился последний, попробую по убывающей. Где-то находил, что кому-то это помогло (правда, не конкретно с этой проблемой, но хоть какое-то действие лучше бездействия...)

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

Меня можно больше не причислять к федоровцам -_-

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

На гноме это выглядит так - при попытке логина пару секунд думает и выкидывает опять на страницу логина (молча крашится, насколько я понял - за страничку логина же что-то другое отвечает, не DE?)

Там тот же gnome-shell, только по дефолту он запускает вейланд-сессию.

1) Запущен ли abrtd? Есть ли новый креш в abrt-cli ls?
2) Запускается ли gdm если в /etc/gdm/custom.conf раскомментировать WaylandEnable=false?
3) Что в логах если в /etc/gdm/custom.conf в секции [debug] указать Enable=true?


Про КДЕ ничего подсказать не могу.

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

Большое спасибо, что откликнулись на каст.

Да, демон запущен (в «systemctl status abrtd» стоит running). Но краша нет... А логов gdm я вообще найти не могу (они ведь лежат в /var/log/gdm? Там пусто...)

Раскомментировал строки в custom.conf. Ничего не изменилось - логов нет, в abrt-cli ничего не летит.

Попробовал поменять политику SElinux на permissive (с Хабра вычитал в статье про Fedora + Bumblebee) - все так же.

Кстати, заметил необычное поведение. После первой перезагрузки с момента установки bumblebee-nvidia gdm (или кто там отвечает за логин-страничку) запускается и ведет себя как я писал выше. При последующих же перезагрузках до него даже не доходит, и с WaylandEnable, и без него. Дело останавливается на экране, не знаю, инициализации? Фото приложу (как сделать скрин такой штуки - не знаю, простите). При закомментированном WaylandEnable экран немного другой.

При сносе bumblebee-nvidia все становится на круги своя, все грузится.

Фото: WaylandEnable закомментирован - *click*
WaylandEnable раскомментирован - *click*

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

А логов gdm я вообще найти не могу (они ведь лежат в /var/log/gdm? Там пусто...)

Они в journalctl. Лучше всего почитать полностью логи - можете выложить результат

sudo journalctl -b -l > journal.log
?

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

товарищ, у тебя беда с nvidia драйверами впринципе. попробуй поставить akmod-nvidia и сделать akmods, или как-то так.

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

Вопрос в том, почему они все тянут nvidia'вскую libGL.so вместо нормальной. (Я более чем уверен, что libnvidia* подтягивается транзитивно через libGL.)

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от sharro
июн 30 13:41:30 Oct-F.triangle /usr/libexec/gdm-x-session[1519]: /usr/bin/gnome-session: error while loading shared libraries: libnvidia-tls.so.352.21: cannot open shared object file: No such file or directory



Интересно, почему /usr/lib/nvidia-bumblebee не в LD_LIBRARY_PATH. Как советуют тут в /etc/bumblebee/xorg.conf.nvidia нужно в начале добавить

Section "Files"
    ModulePath   "/usr/lib64/nvidia-bumblebee/"
    ModulePath   "/usr/lib64/xorg/modules"
EndSection
и в конце:
Section "Screen"
    Identifier "Screen1"
    Device "Device1"
EndSection

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

bumblebee вроде в том и заключается что переключает LIBRARY_PATH со стандартного месовского (используется intel) на проприетарный (будь это бинари с сайта или akmod-nvidia), вопрос в том почему он этого не делает вообще и даже не использует intel

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

Потому что не должно быть. Библиотеки nvidia (любые) должны быть невидимы для обычным образом запущенных приложений; в этом суть bumblebee.

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

в этом суть bumblebee

Отчего они тогда требуются при старте? Я так понял, где-то торчат куски пропритарного драйвера, которые bumblebee прячет только частично

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

vrutkovs, Уже пробовал менять xorg.conf.nvidia по этому гайду (находил в другом месте), ничего не изменилось, то же поведение и ошибки. Пробовал еще на кедах, но думаю, принципиальной разницы тут нет...

i_gnatenko_brain, Я тоже больше импонирую к свободному ПО (это еще один плюс ухода с винды, хотя и там стараюсь придерживаться), но тут-то деваться некуда, как я понял - альтернатив нет. А выкидывать четверть ноута просто из-за проприетарщины или жить с дуалбутом не хочется... Хотел заморочиться с виртуализацией, Xen и VGA-passthrough (виндам дискретку, линуху интеловскую), но проц не держит VT-d, так что мимо (

Кстати, с akmod-nvidia пробовал возиться, но не взлетело. Хотя я и пробовал не очень качественно, скорее себя убедить, что так не получится. Там получился примерно тот же результат, сам akmod-nvidia брал с RPMFUSION. Попробую вечером еще раз, но не думаю, что сработает. Насколько я понял, с akmod-ом для Bumblebee возились на Федорах до 18 версии, а потом уже появился тот («официальный»?) гайд из первого поста. И в том-то и прикол, что на него никто не жалуется и все работает из коробки (в смысле из мануала), а у меня фигня какая-то...

Ради интереса сделал find / | grep libGL.so:

/usr/lib/nvidia-bumblebee/libGL.so
/usr/lib/nvidia-bumblebee/libGL.so.1
/usr/lib/nvidia-bumblebee/libGL.so.352.21
/usr/lib/libGL.so.1
/usr/lib64/nvidia-bumblebee/libGL.so
/usr/lib64/nvidia-bumblebee/libGL.so.1
/usr/lib64/nvidia-bumblebee/libGL.so.352.21
/usr/lib64/fakelib/libGL.so
/usr/lib64/libGL.so
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so.1.2.0

Потыкался file. В папках nvidia-bumblebee первые два файла - симлинки на третий, который libGL.so.352.21. Файл /usr/lib/libGL.so.1 ссылается на такой же в lib64/nvidia-bumblebee (не тут ли глюк?). Файл в fakelib ссылается на VirtualGL/librrfaker.so. Два предпоследних ссылаются на последний. Не знаю, правильно ли это, поэтому и решил сюда написать.

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

Файл /usr/lib/libGL.so.1 ссылается на такой же в lib64/nvidia-bumblebee (не тут ли глюк?)

Определённо тут. Так не должно быть.

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

Потому что что-то где-то пошло не так.

Проприетарные драйвера (и специальным образом запущенный X-сервер) должны подсовываться отдельным программам обёрткой optirun.

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

Сделал наглость.

rm -f /usr/lib/libGL.so.1
ln -s /usr/lib64/libGL.so.1 /usr/lib/libGL.so.1
reboot

О чудо, gdm прогрузился и залогинился, optirun glxgears -info | grep «GL_VENDOR» показывает нвидию и сам glxgears выдает под 2к+ фпс. Без optirun показывает Intel Open Source и гораздо меньше фпс. Таки получилось?

Теперь два главных вопроса. Первый - с какого перепуга так получилось (делал ровно по гайду, только сначала dnf -y upgrade && reboot)? Ведь в таком случае глюк должен быть у всех, кто так делает. Процесс установки ошибками не плевал, лог сборки модуля nvidia (откопал уже не помню где) вроде тоже нормальный... И второй - можно ли так оставлять, посчитав за работоспособный и некостыльный вариант? Может, например, откуда-нибудь взять нормальную lib/libGL.so? «dnf install libGL» сообщает, что mesa-libGL уже стоит (x86_64), что логично.

Всем огромное спасибо за помощь и наводки!

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

Да, так и должно быть. Считай, что получилось.

Ну, это работоспособно и полностью корректно, но ближайшее обновление всё сломает. Желательно, конечно, разобраться, почему инсталляционный скрипт сходит с ума.

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

Ясно, спасибо, успокоили ). Если что еще найду, отпишусь сюда.

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

То что пакет bumblebee-nvidia кривой аки турецкая сабля — не секрет.

Во многом из-за кривости bumblebee / его опакеченной версии для Fedora из левого репа / не всегда возможной сборки модулей ядра блоба с новыми ядрами-компиляторами / etc. я и отказался от карт Nvidia. Как только в radeon'е запилили энергосбережение, автоотключение дискретки в простое, DRI_PRIME, vdpau и прочие ништяки, я и свалил на AMD.

<torvalds_finger.ko>

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

Увы, тот же X-Plane (единственное, для чего мне вообще нужна дискретка) работает только с блобами. А блоб у нвидии таки интегрально лучше сделан.

А так да, согласен, nvidia fuck you.

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

carasin, О да... В openSUSE я тоже мудохался со шмелем знатно, там вроль модуль не собирался никак. Но как-то победил...

Карту в ноуте не поменять...

Возникла очередная проблема, но уже поменьше масштабом - «optirun playonlinux» вышибает, что не может найти 32-битные либы libGL (соответственно, то, что я им ставлю, тоже падает). И примусом, и VirtualGL, хотя пакеты VirtualGL.i686 и primus.i686 стоят. Правда, ставил все это я не сразу, и вообще, уже такая путаница в голове и в дистрибе от попыток фикса предыдущей траблы... Сейчас в очередной раз делаю чистую Федору, попробую еще разок сделать все точно по тому гайду + переделать симлинк, мб получится... Но боюсь, что нет (интуиция шепчет...).

Причем /usr/lib/nvidia-bumblebee/libGL.so.352.74 - реальный файл, не симлинк, и именно 32-битный (вроде)

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

Сорри, о том, как там (в федорке) мультилиб устроен, я вообще ничего сказать не могу.

Но, так или иначе, поставить надо 32-битные версии virtualgl, bumblebee, bumblebee-nvidia и (вероятно) основной libgl из mesa.

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

bumblebee-nvidia отказался ставиться - ругнулся, что ядро не подходит о_О там PAE надо вродь. И версия у блоба нвидии была ниже, да и 32-битные либы в /usr/lib/nvidia-bumblebee были. Все остальное вроде и так было, может быть, еще просто bumblebee не стояло. В гайде написано, что нужны только VirtualGL.i686 и primus.i686

If you want to run 32 bit apps on your 64 bit system, then also install: yum install VirtualGL.i686

If you want to run 32 bit apps on your 64 bit system, then also install: yum -y install primus.i686

Сейчас обновляю Федору, минут через 5 закончится == минут через 10-15 отпишусь, взлетело или нет.

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

Значит, в федорке bumblebee-nvidia уже сразу мультилибный. Короче, тут начинаются совершенно дистроспецифичные детали.

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

Вот я сейчас ставлю VirtualGL.i686. Он за собой тянет кучу i686-пакетов, в том числе mesa-libGL и пригоршню иксовых. Я так понимаю, что их и пытается искать optirun-запущенное приложение? И не находит... Надо пути в конфиге шмеля еще проверить...

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

Вот я сейчас ставлю VirtualGL.i686. Он за собой тянет кучу i686-пакетов, в том числе mesa-libGL и пригоршню иксовых.

Всё правильно.

Надо пути в конфиге шмеля еще проверить...

У меня LibraryPath=/usr/lib/nvidia:/usr/lib32/nvidia и PrimusLibraryPath=/usr/lib/primus:/usr/lib32/primus, всё остальное запускается из 64-разрядных процессов.

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

Я готов рвать волосы на себе и на всех, кто попадется под руку. Сделал все ТАК ЖЕ, один в один! Ничего не менял, ровно по шаблону - обнова федоры, ребут, команды из гайда, ребут. И все заработало... Из коробки. И гном (я на нем эксперименты ставлю сейчас) взлетел, и optirun заработал, и PoL в нем четко сказал в stdout «хозяин, 32-рендер разрешен, все хорошо»... Правда, я примус не ставил [пока], но не думаю, что он виноват...

Вот теперь я в полной прострации. На баг Шредингера не похоже...

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