Nvidia独显驱动安装

驱动选择

查看系统内核版本uname -r

查看显卡情况 : lspci -k | grep -A 2 -E "(VGA|3D)"

根据显卡型号选择驱动版本 :

如:

lspci -k | grep -A 2 -E "(VGA|3D)"

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
	Subsystem: Acer Incorporated [ALI] Device 1133
	Kernel driver in use: i915
--
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
	Subsystem: Acer Incorporated [ALI] Device 1133
	Kernel modules: nouveau, nvidia_drm, nvidia

搜索GM108

NV110 family (Maxwell)
...
NV118 (GM108)	GeForce 830M, 840M, 930M, 940M[X]
...

根据相应的型号安装相应驱动 :

在64位的操作系统上,需要32位程序发挥驱动的优势,可从multilib 源中安装 nvidia 相应的lib32包(如lib32-nvidia-utils

安装驱动

sudo pacman -S nvidia lib32-nvidia-utils

重启, nvidia 包含一个将 nouveau 模块列入黑名单的文件,因此必须重新启动

使用optimus-manager实现双显卡切换

安装 optimus-manager : sudo pacman -S optimus-manager

optimus-manager仓库

配置optimus-manager

确保 /etc/X11/xorg.conf/etc/X11/xorg.conf.d 下没有其他显卡和显示相关的配置,如果有的话可备份后删除,原因是 optimus-manager 会生成显卡配置文件 /etc/X11/xorg.conf.d/10-optimus-manager.conf,多个显卡配置文件可能导致出错,更多参考optimus-manager说明文件

tree /etc/X11

/etc/X11/
├── xinit
│   └── xinitrc.d
│       ├── 40-libcanberra-gtk-module.sh
│       └── 50-systemd-user.sh
└── xorg.conf.d
        └── 10-optimus-manager.conf

启动optimus-manager服务

sudo systemctl enable optimus-manager
sudo reboot

配置文件详解

[optimus]

switching=nouveau
# 定义了用于接通Nvidia卡电源的方法。
# 可选值:
# -nouveau:将nuveau模块加载到Nvidia卡上。
# -bbswitch:使用bbswitch模块关闭卡的电源(需要bbswitch依赖项)。
# -acpi_call:尝试各种ACPI方法调用以打开和关闭卡的电源(需要acpi_call依赖项)
# -custom:使用自定义脚本 /etc/optimus-manager/nvidia-enable.sh 和/etc/optimus-manager/nvidia-disable.sh 切换
# -none:请勿将外部模块用于电源管理。对于某些笔记本电脑型号,最好是将此选项与pci_power_control结合使用。
# 具体选择参考: https://github.com/Askannz/optimus-manager/wiki/A-guide--to-power-management-options



pci_power_control=no
# 在Intel模式下启用PCI电源管理。
# 此选项与acpi_call和bbswitch不兼容,因此会被忽略。


pci_remove=no
# 从PCI总线上卸下Nvidia卡。可以防止通电导致的崩溃。
# 当switching 为 nouveau 和 bbswitch 将被忽略。


pci_reset=no
# 在重载nvidia模块之前,在PCI级别上重置Nvidia卡。
# 在重载nvidia模块之前,确保卡处于新状态。
# 可解决一些切换问题。
# 可选值:
# -no:不执行任何重置
# -function_level:执行轻度的“功能级别”重置
# -hot_reset:对PCI桥接器执行“热重置”。注意:此方法直接与硬件混淆,在使用前请阅读optimus-manager的在线文档,即使pci_remove=no,它也会执行PCI移除操作。


auto_logout=yes
# 切换GPU时自动注销当前的桌面会话。
# 以下DE/WM 支持此功能:KDE Plasma,GNOME,XFCE,LXDE,Deepin,i3,Openbox,AwesomeWM,bspwm
# 如果禁用此选项,或者使用其他桌面环境,GPU切换仅在下一次图形界面登录时生效。


startup_mode=intel
# 在启动时启用的GPU模式。可选值:nvidia,intel,hybrid,auto
# auto 是一种特殊模式,可以自动检测计算机是否依靠电池运行,并选择适当的GPU模式。


startup_auto_battery_mode=intel
# 用于在 startup_mode=auto 且依靠电池运行时选择GPU模式。
# 可选值:nvidia,intel,hybrid

startup_auto_extpower_mode=nvidia
# 用于在 startup_mode=auto 且使用外部电源运行时选择GPU模式。
# 可选值:nvidia,intel,hybrid


[intel]

driver=modesetting
# 用于Intel GPU的驱动程序。可选值:modesetting , intel
# 要使用intel驱动程序,需要安装软件包 xf86-video-intel 。


accel=
# 加速方法(对应于Xorg配置中的AccelMethod)。仅适用于intel驱动程序。
# 可选值:sna,xna,uxa
# 默认为空(未指定任何选项)

tearfree=
# 在Xorg配置中启用TearFree选项。仅适用于intel驱动程序。
# 可能的值:是,否
# 默认为空(未指定任何选项)

DRI=3
# DRI版本。可选值:2,3

modeset=yes
# 是否为nouveau驱动程序启用模式设置。
# 不影响Intel GPU驱动程序的模式设置,仅在将nouveau用作切换后端时,此项才有意义。

[nvidia]

modeset=yes
# 是否启用模式设置。 PRIME同步所需(防止撕裂)。

PAT=yes
# 是否在Nvidia驱动程序中启用NVreg_UsePageAttributeTable选项。
# 推荐,否则会导致CPU性能下降。

DPI = 96
# DPI值。将传递给登录管理器的Xsetup脚本进行设置。
# 将运行命令 xrandr --dpi <DPI>
# 默认为空(上述命令将不运行)。

ignore_abi=no
# 如果正在运行一个更新版本的xorg-server (假设启用PRIME 渲染卸载),由于ABI版本不匹配,可能无法加载nvidia驱动程序。将此项设置为 yes 将允许加载nvidia驱动程序。

allow_external_gpus=no
# 如果要与外部Nvidia显卡一起使用optimus-manager,设置为yes(实验性)

options=overclocking
# 以逗号分隔的Nvidia特定选项的列表。
# 可用选项:
# -overclocking:在Xorg配置中启用CoolBits,这将在Nvidia控制面板中解锁超频选项。注意:不适用于混合模式。
# -triple_buffer:启用三重缓冲。

使用

切换到nvidia: optimus-manager --switch nvidia

切换到Intel: optimus-manager --switch intel

设置开机使用intel: optimus-manager --set-startup=intel

optimus-manager [参数]

可选参数:

-h,--help 			显示此帮助消息并退出
-v,--version 		打印版本并退出
--status 			打印optimus-manager的当前状态
--print-mode 		打印当前桌面会话正在运行的GPU模式
--print-next-mode 	打印下次登录会话时将使用的GPU模式
--print-startup 	打印将在启动时使用的GPU模式
--switch MODE 		将GPU模式设置为MODE。需要注销然后登录以应用更改。可选模式:intel,nvidia,hybrid,auto(自动检测您可能想要切换到的模式)
--set-startup STARTUP_MODE 		将启动模式设置为STARTUP_MODE。可选模式:intel,nvidia,hybrid
--temp-config  		PATH设置临时配置文件的路径,仅用于下次重新引导。对于测试电源开关配置而不会导致无法启动的安装很有用
--no-confirm 		切换GPU时不要求确认并跳过所有警告
--cleanup 			删除守护程序剩余的自动生成的配置文件

使用图形界面配置: yay -S optimus-manager-qt

optimus-manager-qt

Gnome shell插件:

optimus-manager-argos

Optimus-Manager-Indicator

Manjaro双显卡

Manjaro官方提供一个驱动驱动管理工具mhwd,可用于直接安装相关驱动

mhwd [指令]

指令 说明
--pci 仅列出PCI设备和驱动程序配置
--usb 仅列出USB设备和驱动程序配置
-h/--help 显示帮助
-v/--version 显示mhwd的版本
-f/--force 强制重新安装
-d/--detail 显示-l / -li / -lh的详细信息
-l/--list 列出设备的可用配置
-la/--listall 列出所有驱动程序配置
-li/--listinstalled 列出已安装的驱动程序配置
-lh/--listhardware 列出硬件信息
-i/--install <usb/pci> <config(s)> 安装驱动程序配置
-ic/--installcustom <usb/pci> <path> 安装自定义配置
-r/--remove <usb/pci> <config(s)> 删除驱动程序配置
-a/--auto <usb/pci> <free/nonfre> <classid> 自动安装classid的配置
--pmcachedir <path> 设置程序包管理器缓存路径
--pmconfig <path> 设置程序包管理器配置
--pmroot <path> 设置软件包管理器root

安装闭源驱动

nvidia : sudo mhwd -f -i pci video-hybrid-intel-nvidia-prime
nvidia-390xx : sudo mhwd -f -i pci video-hybrid-intel-nvidia-390xx-bumblebee

使用默认的bumblee管理显卡

将用户加入到bumblee组: sudo gpasswd -a $USER bumblebee

设置bumblebeed开机启动: sudo systemctl enable bumblebeed

重启

修复无法进入桌面

若重启无法进入桌面,在开机后黑屏的地方按 Ctrl+Alt+F3 即可进入 tty ,在终端中进行相关配置

查询BusID

lspci | grep -E "VGA|3D"

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)

nvidia的BusID为: PCI:1:0:0

/etc/X11/xorg.conf.d/90-mhwd.conf 备份然后修改为如下配置

Section "Module"
    Load "modesetting"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1:0:0"
    Option "AllowEmptyInitialConfiguration"
EndSection

重启

测试性能

安装性能测试工具: sudo pacman -S mesa-demos glmark2

测试集显性能

glxgears
glmark2

测试独显性能

optirun glxgears
optirun glmark2

NVIDIA setting面板打不开使用命令 : optirun -b none nvidia-settings -c :8

使用optimus-manager管理

关闭bumblebeed

sudo systemctl stop bumblebeed
sudo systemctl disable bumblebeed

安装 optimus-manager 然后启动服务

sudo pacman -S optimus-manager
sudo systemctl enable optimus-manager

根据上文内容配置 optimus-manager 然后重启即可。

其他

很多硬件厂商的BIOS驱动对Linux不友好,无法顺利加载ACPI模块,从而导致无法驱动独立显卡,这就需要修改grub启动文件使ACPI模块能正常工作

修改 /etc/default/grub


# 在 GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=2d6d6716-4886-49ff-a277-55ba5d9f19d8" 中加入 acpi_osi=’Windows 2009’ 或者 acpi_osi=Linux acpi_osi=’Windows 2015’ pcie_port_pm=off
# acpi_osi=’Windows 2009’的意思是告诉ACPI模块,我是‘Windows 7’,模拟Windows让其继续运行

# 如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=’Windows 2009’ resume=UUID=2d6d6716-4886-49ff-a277-55ba5d9f19d8"

更新grub文件使生效: sudo update-grub

重启

参考

NVIDIA ArchWiki

optimus-manager README

(已解决)Manjaro安装英伟达NVIDIA闭源驱动后无法进入桌面