Nvidia独显驱动安装
驱动选择
查看系统内核版本 : uname -r
查看显卡情况 : lspci -k | grep -A 2 -E "(VGA|3D)"
根据显卡型号选择驱动版本 :
- 查找代号(如 NV50, NVC0等): 英伟达代号查询页
- 若上面的页面找不到显卡的型号,可到英伟达历史型号列表页查找
- 英伟达驱动下载站查找
如:
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]
...
根据相应的型号安装相应驱动 :
- 对于
GeForce 630-900
、10-20
和Quadro / Tesla / Tegra K
系列卡以及较新的(NVE0
,NV110
和较新的2010年及以后的卡),安装nvidia
或nvidia-lts
(用于linux-lts
内核) - 对于2010-2011年左右的
GeForce 400/500/600
系列卡(NVCx
和NVDx
),安装nvidia-390xx-dkms
(AUR) - 更老的显卡推荐直接用开源驱动
nouveau
,或参考Arch wiki
在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
确保 /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
Gnome shell插件:
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
重启