NVIDIA50系显卡安装内置Nvidia驱动版本系统后黑屏

如题。9月份新配了台电脑,用的是5060ti显卡,最近想玩玩本地大模型啥的,想装个双系统玩玩。之前因为关注龙芯了解到AOSC,一直对AOSC挺感兴趣,这次准备尝试一下。

第一次安装时选择了第二项“安装 AOSC OS(NVIDIA显卡)”模式,安装完成后重启,能显示grub菜单,但无法进入桌面环境,可以进入tty模式(通过把显示器的HDMI从显卡上拔下来插到主板上,独显的画面完全动不了了,我有核显)以及ssh连接;然后我就重新选择第一项不带NVIDIA显卡标识的默认选项安装了一遍,安装完成后可以正常重启进入系统;然后我又用oma手动安装了驱动(包名nvidia),重启后又无法进入系统。

我看到启动时有三行报错,最后就卡在三行报错那,我以为问题在这里,就拿着这个报错添加了QQ群请教了一下,白总也觉得奇怪,最后给我的建议是,实在不行,就删除nvidia包、安装nvidia-open包,“死马当活马医”。

我虽然觉得很有道理,但我有点强迫症,总是不想牺牲功能或性能,在我的概念里觉得闭源包还是比开源包要好。但我自己水平又比较有限,于是自己和几个AI(参与者包括DeepSeek、ChatGPT、Gemini、Grok、豆包、Copilot,排名不分先后)一起聊,研究怎么弄,给我提了很多自相矛盾的离谱建议。最后我干脆把journalctl -b整个提取出来丢给AI分析,结果找到了这个报错(时间戳和计算机名我去掉了):

kernel: NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:2d04)
         NVRM: installed in this system requires use of the NVIDIA open kernel modules.
kernel: NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x56:884)
kernel: NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
kernel: [drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to allocate NvKmsKapiDevice

也就是系统内核强制要求在我这张显卡上安装开源驱动。我问AI们为什么,几个AI当中Gemini提供的说法比较靠谱,大概是说,现在的nvidia-open并不是我印象中那个弱鸡残废的东西了,也是NVIDIA进行维护、拥有最新特性支持的驱动,而且是专门适配RTX20系/GTX16系及之后的集成了GSP协处理器的新显卡;特别是我使用的50系显卡,NVIDIA官方强制要求使用开源驱动模块。有如下证据:

NVIDIA 全面转向开源 GPU 内核模块 - NVIDIA 技术博客
https://developer.nvidia.cn/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/

对于 NVIDIA Grace Hopper 或 NVIDIA Blackwell 等尖端平台,您必须使用开源的 GPU 内核模块,因为这些平台不支持专有的驱动程序。
对于来自 Turing、Ampere、Ada Lovelace 或 Hopper 架构的较新 GPU,NVIDIA 建议将其切换到开源的 GPU 内核模块。
对于 Maxwell、Pascal 或 Volta 架构中的旧版 GPU,其开源 GPU 内核模块不兼容您的平台。因此,请继续使用 NVIDIA 专有驱动。
对于在同一系统中混合部署较旧和较新 GPU,请继续使用专有驱动程序。

所以,白总说的“死马”,其实才是我需要的“活马”!(笑)

至于一开始我在开机时看到的报错,是这样的(也去掉了时间戳):

psi: inconsistent task state! task=3:pool_workqueue_ cpu=2 psi_flags=4 clear=0 set=4
simple-framebuffer simple-framebuffer.0: probe with driver simple-framebuffer failed with error -12
genirq: Flags mismatch irq 14. 00000008 (platform[pata_legacy.0]) vs 00010088 (INTC1085:00)

这里面只有第二行和显卡有关系,但我把journalctl -b日志传给AI,AI的结论是这是一个无害的报错,和我的无法启动没有关系,这是因为Linux内核和主板BIOS对于设备初始化时分配内存的策略不太一样,我的主板BIOS把最开头的内存分给了显卡作为framebuffer,但这个内存已经被Linux系统占了,所以系统拒绝了这个分配内存的请求,报了内存不足的-12错误。

kernel: simple-framebuffer simple-framebuffer.0: [drm] could not acquire memory region [mem 0x00000000-0x002fffff flags 0x200]
------------[ cut here ]------------
ioremap on RAM at 0x0000000000000000 - 0x00000000002fffff
WARNING: CPU: 16 PID: 1 at arch/x86/mm/ioremap.c:216 __ioremap_caller+0x2ce/0x340
...(调用栈信息省略)
---[ end trace 0000000000000000 ]---
kernel: simple-framebuffer simple-framebuffer.0: probe with driver simple-framebuffer failed with error -12

最后我想提一个小建议,可以在安装盘中把带有NVIDIA字样的选项全都拆分成两个,一个是40系之前的,一个是50系之后的:40系之前的可以默认安装nvidia驱动包,或者根据上面的官方说明安装咱们AOSC维护者认为适当的驱动包;50系之后的可以默认安装nvidia-open驱动包。类似这样:

安装 AOSC OS
安装 AOSC OS(NVIDIA 显卡 - RTX 40 Series及更早型号)
安装 AOSC OS(NVIDIA 显卡 - RTX 50 Series及更新型号)
试用 AOSC OS 桌面版
试用 AOSC OS 桌面版(NVIDIA 显卡 - RTX 40 Series及更早型号)
试用 AOSC OS 桌面版(NVIDIA 显卡 - RTX 50 Series及更新型号)
安装 AOSC OS(命令行模式)
……

当然也可以添加自动识别显卡型号安装对应驱动的程序。

我了解像我这样用新N卡还装Linux系统的其实是很少的少数——装N卡的大部分是臭打游戏的,而且N卡在Linux上实在是一个非常fxxk you的问题,想好好玩Linux的都会去装A卡——还会装小众社区版的就更少了;就算有想用N卡跑AI的,可能多数也会去选择2080ti魔改22G显存版或者tesla卡,不会选择50系这么新的显卡;我甚至是文科生,并不从事开发工作,所以遇到这种问题会麻爪,可能稍微有点技术底子的人都能自己独立解决这种问题。但是,如果我觉得如果AOSC是一个追求开箱即用、舒心使用的系统,这一点小小的改善对像我一样的初级爱好者来说还是很能提升使用体验的;另外,随着AI本地部署工具越来越成熟,会在N卡机器上跑跑模型的人会越来越多,N卡+Linux的组合可能会越来越常见,随着时间的推移,50系也会从新卡变成旧卡,这个问题也迟早需要解决的^_^

最后的最后,祝安同社区越来越好!

我的系统环境:

1 个赞

感谢反馈,我们会在下一次系统发行前确定一个方案

1 个赞