工控解惑|英伟达显卡适配难题?

供稿:北京国科环宇科技股份有限公司

  • 关键词:国产操作系统,实时Linux,嵌入式操作系统
  • 摘要:不管是国内网友还是国外网友,适配nvidia显卡,经常会遇到经典的nvidia_drv.so找不到符号的问题,例如: undefined symbol: noPanoramiXExtension。这是英伟达显卡适配过程中非常常见的错误,找不到符号,找不到谁的符号,那自然是xserver中的符号。虽然每个人的解决办法不同,很多时候我认为一点意义没有,最后,搞的越来越玄学!网友B的解决办法:哐哐xserver又是升级又是降级,说兼容性问题。网友A的解决办法:哐哐安装一堆nvidia-driver各种版本。

不管你是来自国内,还是远在海外的网友,只要给电脑适配 NVIDIA 显卡,大概率会碰到那个经典难题:nvidia_drv.so 文件里找不到对应的符号,就像弹出个报错提示:undefined symbol: noPanoramiXExtension,是不是看着就头大?
咱先来瞅瞅论坛里各路网友的 “自救” 大招:
网友 A 那叫一个简单粗暴,疯狂下载安装各种版本的 nvidia-driver,心里想着,“我多装几个,总有一个能行吧!”
网友 B 则把目光瞄准了 xserver,又是给它升级,又是让它降级,嘴里念叨着 “肯定是兼容性捣的鬼”。
再看看 Archlinux 论坛这位网友,在标题为 [SOLVED] Nvidia driver not loading / Newbie Corner / Arch Linux Forums 的帖子里分享经验,说自己在高手指导下设置了个环境变量 LD_BIND_NOW,这才把问题给摁住了。
不过说实话,虽说大家办法各异,但有时候我忍不住吐槽,这些招啊,好多都治标不治本,越折腾越让人迷糊,跟玄学似的。
得,咱不扯那些没用的了,下面就好好讲讲到底该咋解决这个麻烦事儿。

给你们看看常见的错误场景:当你执行 nvidia-smi 指令,转头再去查看 X 的运行日志,保准会瞧见这么一行扎眼的报错:Nvidia_drv.so : undefined symbol: noPanoramiXExtension。

2df71dded01d4093a80eeeff156de71e.png

a629ddf724d64b7396daf4b0dbdaf896.png

这错误在英伟达显卡适配的时候频繁冒头,为啥会找不到符号呢?其实啊,是找不到 xserver 里的符号。这时候,就得钻进 xserver 的源代码里一探究竟。

6762ff0f8ab3487f97287c490f391ee3.png

耐着性子找啊找,嘿,在 os/utils.c 这个文件里发现了线索,旁边还有个注释写着:/* Xinerama 是默认关闭的,除非通过 +xinerama 开启 */,啥意思呢?就是说 xinerama 这个拓展功能,默认是关着的,没开启呢。

1d213e4897d040889edadbea996d7cce.png

那咱就动手把它打开,再重新编译一遍。另外要注意,xserver 1.21 版本往上走,它会用 pkgconfig 来检测系统里有没有 xinerama,要是检测到有,就自动帮你打开,是不是还挺智能?那咱就顺着它的意思,先安装 xinerama,在终端敲一行:dnf install libxinerama1。

60ca352b25cc4885906cd0654b3575a2.png

接着再回 xserver 代码里瞅瞅,执行一下 menson build,这下妥了,该有的都有了。下一步,麻溜地编译安装:ninja && ninja install,完事重启系统,输入 reboot。

45e3aa0da9b5401f96327380874f4a7b.png

等系统重启好,再去查看显卡状态,哈,Nvidia 驱动已经稳稳当当地适配好啦,是不是还挺有成就感?

ba23d8263fc640d1917b3511c0f23e2e.png


还有什么关于操作系统的疑问,可以随时来我们网站交流切磋

也欢迎免费下载体验咱的国产嵌入式操作系统:

https://www.onewos.com/


发布时间:2024年12月24日 14:19  人气:   审核编辑(王静 )
相关链接

我有需求