Tips:于2024-8-25基于新的情况又修改了一个版本,上一个版本由于未能深入研究与思考,存在很多问题。

当年,年少无知,被引入了Arch神教,在Y9000X 2022款下,为了解决Optimus的兼容问题,一路倒腾。

注意:本文章对应的机子为Y9000X 2022 i7+3060款,在外置硬盘上安装了ArchLinux,使用的是Optimus-manager闭源nvidia驱动。参考本教程操作系统时,若造成不良后果,本人概不负责。

什么是MUX?

muxed-introduction

笔记本中的MUX(多路复用器)是一种硬件组件,它的主要作用是选择和切换不同的视频输出信号源。很多现代笔记本电脑都有两个图形处理器(GPU):一个是集成在处理器中的低功耗集成显卡,另一个是独立的高性能显卡。MUX可以帮助用户在集成显卡和独立显卡之间切换,从而根据需要在节能和性能之间进行平衡。

MUX Switch可以说是一种多显卡切换方案,具体细节不再追述,请自行查阅相关资料,简单来说分为:integrated(集显模式)、hybrid(混显模式)、discrete(独显模式)。

上述模式功能如名,是与接入显卡的方式有关的。可以看上图展示的三种模式,其中Y9000X很荣幸使用了第三种Very high-end low的模式,在混显模式下独显会通过核显输出(与图中描述有点差异),在独显模式下,将会屏蔽核显,直接由独显输出。

针对Mux的适配方案

Optimus Manager 是一款在 Linux 系统中管理双显卡切换的软件,主要针对带有 NVIDIA Optimus 技术的笔记本电脑。Optimus 是 NVIDIA 提供的一项技术,用于在集成显卡(通常是 Intel GPU)和独立显卡(NVIDIA GPU)之间自动切换,以便在性能和电池续航之间取得平衡。

正常情况下,你只需要安装optimus-manager即可,但是如果你需要能够同时支持独显与混显,那么还是需要配置一下。

Optimus Manger会根据配置文件,在开机时自动配置显示模式。但是,在集显模式下,它由于没有识别到集显,认为这是一个非支持Mux的机子,故直接报错且不生成相关的显示配置文件,这就导致了无法找到画面输出窗口和输出卡。

针对X11来说,可以在/etc/X11/xorg.conf.d/下创建一个30-nvidia.conf,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0" # 一般是1:0:0,根据自己的实际情况来
Option "AllowEmptyInitialConfiguration"
EndSection

Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Option "AllowNVIDIAGPUScreens"
EndSection

Section "Screen"
Identifier "nvidia"
Device "nvidia"
EndSection

这样就可以在Optimus Manager无效的情况下,也能选择这一个次优先配置文件,加载相应的显示配置。

建议自行查找资料,学习Linux桌面环境是如何从查找输出设备、屏幕到输出这个过程的。

尾语

从最开始的22年还是23年捣鼓这个事情,到现在又捣鼓了几个星期,确实了解到了不少东西。

尤其是,在Linux环境下修复Bug是一个具有逻辑、挑战以及意义的事情,你想要修复一个看似是显卡加载带来的问题,实际上也会遇到显示流程带来的问题。因此,连贯、系统、有逻辑分析与思考地认识问题,从问题中不断的研究与学习我觉得是必要的。

最开始的解决方案也是歪打正着,实际上也是创建了一个备用的配置文件,在Optimus Manager不能生成配置文件时启用了,但是当时把整个的错误原因怪罪于Optimus Manager。

捣鼓Linux尤其是像Arch这种稍微折腾一点的,确实是一件浪费时间的事情,但是他真的单纯是浪费吗?

在Windows下,如果遇到了一个问题,不断的查日志、查官方的资料,即使你最后找到了问题的根因,也不一定能够动手去解决这个问题,最终可能是要等官方推送新的补丁,或者说根本解决不了。

能力越大责任越大,在Linux下,挑战与机遇并存,在一次次的解决与尝试中,就像魂类游戏在一次次的死亡中研究对手招式一样不断的积累与突破自我,最后打败对手的那一刻,饱含了无数次死亡蕴含的不甘、激情与兴奋。敌愈强,吾愈强。

踏上取经之路,比达到灵山更重要。