Featured image of post 记一次Manjaro插上独显后无法进入系统debug

记一次Manjaro插上独显后无法进入系统debug

最近趁着显卡降价,当大冤种溢价8100大洋买了一块4080(这卡就值6500!)。果不其然,买了没3天,更好的盈通二刺螈就降价到7950,实在是心痛。个人对于显卡在3月初降价的判断是正确的,预计年中会降到7k左右。但还是定力不足,需要继续磨练,如果这心态去投资,怕不是要亏的血本无归。

既然买了还不支持保价,也只能打碎牙齿往肚子里咽。不管怎样,插上显卡,windows打开驱动,跑个娱乐大师检测下性能,一切无误后切系统开始给Manjaro生产环境装驱动。众所周知,Arch系用pacman装N卡驱动那叫一个无脑,更不要说Manjaro还有mhwd保姆级一键完成版,装驱动应该不是什么难事。 然而,世事难料,切换系统后,直接无法进入系统了,这。。。

BIOS更改显示默认为核显

出现这第一反应肯定是显卡没驱动肯定没法给你显示,显示器应该接到核显(主板)的接口而非独显的接口。但我早已有先见之明,现在显示器就是插在核显的接口上的,所以一定是某些默认设置让独显成为优先输出设备了。上网查找,果不其然。需要进入BIOS更改默认显示

  • 重启电脑,按Del(我用的是微星主板,其他主板参照其对应快捷键),进入BIOS。打开 设置(Settings) -> 高级(Advanced) -> 内建显示配置(Integrated Graphics Configuration)。将第一显示适配器(Initiate Graphic Adapter)由"PEG"(独显优先)改为"IGD"(核显优先)。保存并退出,然后重启。直接进入了系统

安装Nvidia官方闭源驱动

对于Manjaro来说,真没啥好讲的,打开 系统设置 -> 硬件设定 -> 找到英伟达相关的独显官方闭源驱动"video-nvidia",右键点击,安装,等待一会驱动就会装上。重启,进入BIOS将第一显示适配器修改回"PEG",把显示器插到独显接口再次进入系统 (后来发现事实上如果成功了,终端检查nvidia-smi也没问题。不用重启,直接电脑开机时把显示器插到独显接口就可使用独显了,但之后重启还是得补上BIOS操作)

Manjaro_nvidia_driver_install

仍然失败

如果按照常理,这么一套下来就万事大吉可以直接使用了。然而,这次重启后仍然进入不了系统,实在是让人摸不着头脑。开始思考,在进入系统前,会经过BIOS,再经过Boot引导。在BIOS已确认没问题前提下,一定是Boot出了问题。于是乎,进入BIOS修改为核显优先,重新进入系统, 开始上各种网络查各种教程,给引导尝试添加了各种参数。结果不幸的是无一例外全部失败。期间BIOS进了无数次,重启了无数次,一下午就这么过去了,可谓一度绝望

Arch Wiki永远是Linux维护最好的伴侣

最终,一怒之下,决定骂mhwd就是一坨垃圾,使用Arch装驱动的方式来装驱动。点开相关Arch Wiki页面,却意外发现了驱动安装失败的原因:原来是英特尔搞的鬼,我艸

intel_nvidia_linux_conflict

简单来说,就是在Linux 5.18以后版本 + 英特尔11代CPU之后版本的情况下,由于Linux引入了英特尔的Indirect Branch Tracking安全功能支持,导致N卡驱动将无法正常识别独显固件,需要等待内核修复方案。。。对此我只能评价:突发事件真搞啊,怪不得网上一堆过期攻略完全无效。真正有时效性攻略,还是得找Arch Wiki

知道问题根因后,解决就容易很多了,按照Wiki的指示一步一步走即可。

  • 修改引导文件,我这里用的是grub:sudo vim /etc/default/grub
  • 找到GRUB_CMDLINE_LINUX_DEFAULT行,按i开始编辑,给之后数值的变量新增ibt=off即可。比如我的配置中修改前为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash udev.log_priority=3",修改后就变为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash udev.log_priority=3 ibt=off"了,修改完成后按ESC,输入:wq保存退出
  • 使用命令sudo grub-mkconfig -o /boot/grub/grub.cfg,将修改后的Boot配置参数刷新至Boot分区,重启系统
  • 重新进入系统后,独显驱动应该还是不会正常工作。这是因为之前我们安装驱动时是在识别不了独显固件的情况下进行的,生成的相关的驱动配置文件全是空。因此,我们需要重新刷新下驱动配置文件,这里有2种方法,任选其一即可
    • 打开设置,在硬件设定界面重装下独显驱动即可。这是因为在重装驱动的最后,mhwd会自动执行相关脚本,刷新驱动配置文件
    • 打开终端,执行sudo nvidia-xconfig。此操作会调用英伟达的驱动配置脚本,生成一个默认的驱动配置文件

一切做完后,打开终端,执行nvidia-smi进行检查,驱动加载成功!重启进入BIOS,改为独显优先并把显示器插到独显上,成功进入系统!不得不说是真的不容易啊

desktop

Built with Hugo
Theme Stack designed by Jimmy