Linux独立显卡驱动安装

Linux到独立显卡分开源驱动和闭源驱动两种,开源驱动不能完全发挥独立显卡到性能,闭源驱动使用bumblebeeoptirun 的兼容性不好。而 optimus-manager 可以设置开机默认使用 Intel 还是 Nvidia ,可以随时在这两者之间切换。

安装依赖

sudo pacman -S virtualgl lib32-virtualgl lib32-primus primus

安装闭源bumblebee版驱动

# sudo mhwd -f -i pci video-hybrid-intel-nvidia-bumblebee
sudo mhwd -f -i pci video-hybrid-intel-nvidia-430xx-bumblebee

讲用户加入到bumblee组

sudo gpasswd -a $USER bumblebee

设置bumblebeed开机自启

sudo systemctl enable bumblebeed

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

sudo vim /etc/default/grub

# 在 GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=! resume=UUID=2d6d6716-4886-49ff-a277-55ba5d9f19d8" 中加入 acpi_osi=’Windows 2009’ 或者 acpi_osi=! 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=! acpi_osi=’Windows 2009’ resume=UUID=2d6d6716-4886-49ff-a277-55ba5d9f19d8"

更新grub文件,使永久有效

sudo update-grub

#重启
reboot

性能测试

# 安装性能测试软件
sudo pacman -S mesa-demos
sudo pacman -S glmark2

测试集显性能

glxgears
glmark2

测试独显性能

optirun glxgears
optirun glmark2


## NVIDIA setting面板打不开使用以下命令

optirun -b none nvidia-settings -c :8


# 使用optimus-manager管理显卡

[optimus-manager仓库](https://github.com/Askannz/optimus-manager)

```bash
sudo pacman -S optimus-manager

配置

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

目录结构如下

tree /etc/X11/

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

关闭 bumblebeed

sudo systemctl stop bumblebeed
sudo systemctl disable bumblebeed

启动optimus-manager服务

sudo systemctl enable optimus-manager

重启

使用

# 切换到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 			删除守护程序剩余的自动生成的配置文件

intel模式为省电模式,nvidia模式为游戏模式

使用图形界面配置

通过optimus-manager-qt或gnome-sell扩展optimus-manager-argos来使用图形化前端来进行切换

图形化配置通过生成/etc/share/optimus-manager.conf文件并添加内容实现配置的,如果已经有该文件会直接覆盖修改

配置文件详解

optimus-manager的配置文件:/usr/share/optimus-manager.conf

如需自定义配置,将该文件复制一份到/etc/optimus-manager/目录下进行修改即可

[optimus]

# 此参数定义接通Nvidia卡电源的方法
# 可能的值:
# -nouveau:将nouveau模块加载到Nvidia卡上
# -bbswitch:使用bbswitch模块关闭卡的电源(需要bbswitch依赖项)
# -acpi_call:尝试各种ACPI方法调用来打开和关闭卡的电源(需要acpi_call依赖项)
# -none:请勿将外部模块用于电源管理。对于某些笔记本电脑型号,最好将此选项与pci_power_control结合使用(请参见下文)。设置该选项后,您还可以使用脚本nvidia-enable.sh和nvidia-disable.sh执行自定义命令以进行电源管理

switching=bbswitch


# 在Intel模式下启用PCI电源管理。此选项与acpi_call和bbswitch不兼容,因此在这些情况下将被忽略

pci_power_control=yes

# 从PCI总线上卸下Nvidia卡。可以防止电源开关引起的死机。如果switching = nouveau或switching = bbswitch则被忽略

pci_remove=no

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

pci_reset=no

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

auto_logout =yes


[intel]

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

driver=modesetting

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

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

异常处理

更新后黑屏

Manjaro 的仓库版本相较于 Arch 的库晚些,而 AUR 内的包调用的是 Arch 库内的包,这就会产生包版本不对的问题,产生一些错误,这时通过主动升降级可解决。

通过 optimus-manager --status 查看状态,提示报错日志位置,通过报错日志找相应的报错内容。
如:/var/log/optimus-manager/switch/switch-20220330T193127.log

参考:
使用 optimus-manager 来管理显卡切换

Optimus-Manager的
README
Wiki
电源管理选项指南
常见问题,常见问题,故障排除