11-nvidia-prime.conf使X-window启动失败
Tofloor
poster avatar
iixii
deepin
2019-06-03 23:50
Author
本帖最后由 johncarmark 于 2019-6-4 14:45 编辑

我用深度15.10.1系统,i7-6700HQ处理器和Nvidia GTX960M显卡,我一开始用bumblebee的。

我先通过 /etc/modprobe.d/blacklist.conf 禁用了nouveau和nvidiafb
blacklist nouveau
blacklist nvidiafb
并且重新生成了initrd
update-initrd -u

然后我装了bumblebee-nvidia nvidia-driver等等一系列的软件包,下面这些内核模块都能加载的:
nvidia
nvidia_drm
nvidia_modeset
所以我觉得驱动装得没问题。

我用bumblebee方案一开始有个问题,就是这个问题:
https://github.com/Bumblebee-Project/Bumblebee/issues/764
我必须在/etc/defaults/grub的内核启动参数后面加 acpi_osi=! acpi_osi='Windows 2009' 才能进图形界面,
否则内核会报这个错(我把quiet、splash、plymouth停了看内核输出),进不了图形界面,系统直接死机:

  1. NVRM: This is a 64-bit BAR mapped above 4GB by the system
  2. NVRM: BIOS or the Linux kernel, but the PCI bridge
  3. NVRM: immediately upstream of this GPU does not define
  4. NVRM: a matching prefetchable memory window.
  5. NVRM: This may be due to a known Linux kernel bug. Please
  6. NVRM: see the README section on 64-bit BARs for additional
  7. NVRM: information.
  8. nvidia: probe of 0000:01:00.0 failed with error -1
  9. NVRM: The NVIDIA probe routine failed for 1 device(s).
  10. NVRM: None of the NVIDIA graphics adapters were initialized!
Copy the Code

改完grub参数后,我用 grub-mkconfig -o /boot/grub/grub.cfg 写入配置,重启后能进图形界面了。
进入图形界面后,是intel集成显卡在工作(我的笔记本有个指示灯,集显是蓝灯,独显是红灯),同时:

optirun glxinfo|grep NVIDIA
optirun -b none nvidia-settings -c :8
这2个命令都能看到nvidia显卡的信息。


但是primusrun和optirun任何3d游戏(包括steam自带的CS:GO,改steam游戏启动参数)都会直接闪退。
我是这么加参数的:https://support.steampowered.com/kb_article.php?ref=6316-GJKC-7437
那这bumblebee对我来说除了减少发热,就没啥使用价值了。

所以我想试试PRIME切换双显卡,所以我:
添加panda安装源:

deb http://mirrors.163.com/deepin panda main contrib non-free
然后安装了deepin-nvidia-prime软件包
这个软件包里面有这么个配置:
https://github.com/linuxdeepin/nvidia-prime/blob/master/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
  1. Section "OutputClass"
  2.         Identifier "Nvidia Prime"
  3.         MatchDriver "nvidia-drm"
  4.         Driver "nvidia"
  5.         Option "AllowEmptyInitialConfiguration"
  6.         Option "IgnoreDisplayDevices" "CRT"
  7.         Option "PrimaryGPU" "Yes"
  8.         ModulePath "/usr/lib/nvidia/current/"
  9. EndSection
Copy the Code
我用深度自带的显卡切换工具,切换到PRIME模式的时候,xorg会报一个错,然后不能启动:
11-nvidia-prime.conf line 5: "Option" is not a valide keyword in this section.

有点类似于这个错误:
https://forum.manjaro.org/t/x11-nvidia-config-probleme-and-become-unbootable/68702

为什么xorg在这里不支持 Option 关键字?
是不是这个配置文件本身写错了?还是/usr/share/X11/xorg.conf.d/里的配置文件拼接到一起的时候出的错误?
这是xorg的bug还是deepin-nvidia-prime的bug?

Reply Favorite View the author
All Replies
avatar
funtoo
deepin
2019-06-04 00:25
#1
  1. Section "OutputClass"
Copy the Code
似乎写错了,应该是
  1. Section "Device"
Copy the Code
,没查到有OutputClass这么一种section。
Reply View the author
avatar
iixii
deepin
2019-06-04 01:44
#2
https://bbs.deepin.org/post/178781
似乎写错了,应该是,没查到有OutputClass这么一种section。

多谢!多谢!我觉得还真的很有可能是这个问题。

我以前试着改过这个配置文件11-nvidia-prime.conf,但是显卡配置工具在设置PRIME模式的时候会重启,重启之后,又用错误的文件覆盖到/usr/share/X11/xorg.conf.d/目录下了。

也就是说,deepin-nvidia-prime有某种机制,向/usr/share/X11/xorg.conf.d/里面写配置,当然这是切换显卡需要做的,但是它写入的是个错误的配置,而且把我手动改对了的配置给又写错了。

所以我的新问题:这个写入机制在那里改?如果这个11-nvidia-prime.conf是有模板的,而模板写错了,那么我应该去哪里去改模板?
我这几天用dpkg-query看看这个软件包的内容吧。
Reply View the author
avatar
funtoo
deepin
2019-06-04 02:00
#3
https://bbs.deepin.org/post/178781
多谢!多谢!我觉得还真的很有可能是这个问题。

我以前试着改过这个配置文件11-nvidia-prime.conf,但是 ...

没找到,本来以为和deepin的grub类似,在/etc下面有个脚本会覆盖配置,但是这个包里面没有相关脚本
Reply View the author
avatar
iixii
deepin
2019-06-04 02:10
#4
https://bbs.deepin.org/post/178781
似乎写错了,应该是,没查到有OutputClass这么一种section。

我发现OutputClass是支持的:
https://lists.x.org/archives/xorg-devel/2014-February/040564.html

而且我 man xorg.conf 也能搜到 OutputClass 的说明,类似于这个手册:
https://www.systutorials.com/docs/linux/man/5-xorg.conf/

手册的意思是说,在OutputClass里面可以定义多个Option,并且在这里定义的所有的Option,会被传给与它匹配的Driver。
When an output device has been matched to the OutputClass section, any Option entries are applied to the device.
我是这么理解的,应该是这样的。

所以 11-nvidia-prime.conf 在这里想要定义3个Option并传给nvidia这个Driver
Option "AllowEmptyInitialConfiguration"
Option "IgnoreDisplayDevices" "CRT"
Option "rimaryGPU" "Yes"

但是不知道为啥,这3个Option报错了。
Reply View the author
avatar
iixii
deepin
2019-06-04 02:21
#5
https://bbs.deepin.org/post/178781
没找到,本来以为和deepin的grub类似,在/etc下面有个脚本会覆盖配置,但是这个包里面没有相关脚本 ...

我觉得显卡切换工具可能是执行了类似于 apt install deepin-nvidia-prime 这种操作,而且可能是在重启之前把包下载到本地,重启之后直接安装(我的电脑是wifi连接,没启动GUI的时候wifi应该没有连上)。
Reply View the author
avatar
iixii
deepin
2019-06-04 02:44
#6
我找到一个关于ATI显卡的Option问题:
http://forums.debian.net/viewtopic.php?f=6&t=134996
在这个帖子里,就是把
  1. Section "OutputClass"
Copy the Code

改成
  1. Section "Device"
Copy the Code

就好了。
Reply View the author
avatar
873792861
deepin
2019-06-04 21:42
#7
你出现这个问题可能是头像太骚的原因!100块!
Reply View the author
avatar
iixii
deepin
2019-06-04 22:25
#8
本帖最后由 johncarmark 于 2019-6-4 20:06 编辑
https://bbs.deepin.org/post/178781
你出现这个问题可能是头像太骚的原因!100块!

我也奇怪,我的头像怎么图片裂了,我又重新上传了一个。
Reply View the author