archlinux 笔记本安装nvidia显卡驱动与intel显卡驱动

archlinux 双显卡配置

Posted by ivo on February 18, 2018

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

本文部分引用 http://www.voidcn.com/article/p-dzlmvihd-bdx.html

本文部分引用 https://wiki.archlinux.org/index.php/NVIDIA_Optimus_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)