NVIDIA Optimus是一种允许 Intel 集成 GPU 和 NVIDIA GPU 建成并通过一台笔记本电脑访问的技术。让 Optimus 显卡工作在 Arch Linux 下需要一些稍微复杂的设置步骤,下文说明了几种可用方法:
-
在 BIOS 里禁用其中之一,如果禁用 NVIDIA 显卡的话也许会提升电池续航能力。但并不适用于所有 BIOS, 也不能切换显卡。
-
使用闭源 NVIDIA 驱动提供的官方 Optimus 支持,这能让 NVIDIA 显卡发挥最大性能但不能切换显卡,同时会比开源驱动有更多 bug.
-
使用开源 nouveau 驱动提供的 PRIME 功能,它能够切换显卡但是和闭源驱动相比性能差劲,并且目前并未实现任何省电功能。
-
使用第三方程序 Bumblebee 来实现类似于 Optimus 的功能,同时支持切换显卡和省电,但需要额外设置。
-
利用nvidia-xrun,一个使用全性能的离散NVIDIA图形功能来单独运行X的使用程序。
以上引用自https://wiki.archlinux.org/index.php/NVIDIA_Optimus.也正是因为这个才导致的,直接再笔记本上安装了nvidia的显卡驱动以后导致黑屏进不去桌面环境.下面讲一下,需要的操作.
0x01 安装显卡驱动
这里先说一下,如果没有特殊的需求只安装集成显卡的驱动就好了.一般是intel的,我的是intel+nvidia的笔记本.这时候如果安装了独立显卡的驱动,nvidia的optimus功能会把独立显卡绘制的结果传输给集成显卡.所以如果只安装了独立显卡的驱动的话是不会有显示的.
sudo pacman -S xf86-video-intel
,不折腾的到此打住,因为后面的东西装完就启动不了图形界面了,还需要配置.
作为nvidia独显粗要安装 pacman -S nvidia nvidia-libgl xorg-xrandr
0x02 配置
集成intel显卡的不用管,nvidia独显的需要下面的配置 先用nvidia-xconfig
命令,它会生成一个配置文件/etc/X11/xorg.conf
,编辑这个配置文件.
0x03 编辑配置文件
编辑之前需要查询一些信息.用lspci | grep -E "VGA|3D"
来查询 NVIDIA 显卡的 PCI 地址.PCI 地址是提到 NVIDIA 的输出行的前7个字符,看起来像 01:00.0
. 在 xorg.conf
中,需转换为 #:#:#
格式;例如 01:00.0
应该写成 1:0:0
.BusID 那里 N 卡一般是 BusID “PCI:1:0:0” 注意格式,00:02.0 这种形式需要转换成 0:2:0
.编辑配置文件加入下面的内容
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
这时候分情况对待
- 没使用窗框管理器的以下内容添加到 ~/.xinitrc 开头:
~/.xinitrc
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
- 使用不同的窗口管理器,要在行应的位置加入这两行
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
LightDM 对于 LightDM:
# nano /etc/lightdm/display_setup.sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
赋予脚本可执行权限:
# chmod +x /etc/lightdm/display_setup.sh
编辑 /etc/lightdm/lightdm.conf 的 [Seat:*] 部分以配置 lightdm 运行这个脚本:
# nano /etc/lightdm/lightdm.conf
[Seat:*]
display-setup-script=/etc/lightdm/display_setup.sh
重启,你的 DM 应该启动了。
SDDM 对于 SDDM:
# nano /usr/share/sddm/scripts/Xsetup
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
GDM 对于GDM:
/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
确保GDM使用了Xorg模式。
KDM
/usr/share/config/kdm/Xsetup
同sddm
如果重启还是没有进入图形界面,再编辑一下配置文件/etc/X11/xorg.conf 或者在再 /etc/X11/xorg.conf.d 目录 新建文件并编辑 nano intel.conf 内容如下,Intel 的 BusID 一般是 BusID “PCI:0:2:0,这里是上面的方式查出来的”
Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
重启即可
检验 3D
你可通过安装 mesa-demos 并运行以下命令来检验 NVIDIA 是否被使用:
$ glxinfo | grep NVIDIA
本文部分引用 https://wiki.archlinux.org/index.php/NVIDIA_Optimus_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)