同步操作将从 deepinwiki/wiki 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
不管是系统运维工程师,还是普通用户,都需要对硬件进行管理,否则系统无法正常运行,也就没法正常使用了。
硬件是绕不过的弯,尤其在今天,linux对硬件的兼容性还是不强的。九成linux爱好者,遇到的问题都是硬件引起的。
xorg是linux图形桌面服务“x window system”的一个开源实现。x window可以理解为一组规范,比如http协议,而xorg是具体的网站服务器IIS之类的。
lspci |grep -e VGA -e 3D
硬件识别xrandr --listproviders
显示输出设备lspci -nnk -s 1:0.0
显示pci 1:0.0
的驱动和内核模块glxinfo | head -5
显示图形卡技术信息inxi -G
apt search xf86-video
列出开源显卡驱动系统选择显卡驱动步骤:
xserver-xorg-video-fbdev
优先替补xserver-xorg-video-vesa
通用驱动,无加速modesetting
都没有,就回退到此程序的设置xserver-xorg-video-amdgpu
开源驱动xserver-xorg-video-ati
开源驱,旧硬件
xserver-xorg-video-r128
r128显卡xserver-xorg-video-radeon
radeon显卡
firmware-amd-graphics
修补固件firmware-linux-nonfree
修补固件xserver-xorg-video-mach64
mach64显卡xserver-xorg-video-intel
开源驱动xserver-xorg-video-nouveau
开源驱动(性能较差`nvidia-driver
闭源驱动(性能较好)xserver-xorg-video-nvidia
debian封装的闭源驱动apt purge nvidia*
清除nvidia私有驱动(如果有安装过)/etc/apt/sources.list
添加参数contrib non-free
apt update
获取更新信息apt install xxx
选择上面合适的驱动安装大黄蜂bumblebee是一套开源的双显卡方案,以核显输出,独立显卡gpu协作的模式运作。协作通过调用optirun 或primusrun来执行需要独立gpu的程序。命令格式一般为: vblank_mode=0 optirun xxx
。vblank_mode环境变量关闭垂直同步。
sudo apt install nvidia-driver
安装nvidia显卡驱动sudo apt install bumblebee-nvidia
调用闭源nvidia显卡gpu,如果闭源不存在会调用nouveau 是一套开源nvidia驱动。gpasswd -a bumblebee username
大黄蜂驱动需要将用户加入bumblebee用户组才能调用。将username改为你的帐号这是另一套双卡方案。在另一个gpu上执行程序只需要添加环境变量:
DRI_PRIME=1 xxx
以上在开源驱动得到比较好的支持。
xrandr 工具可以帮助prime方案的实现。
xrandr --listproviders #列出当前的显示接口(可以理解为显卡),和接口能力
其中能力特性:
source output
: 源输出(提供者),就是将图像输出到另一个接口的能力。sink output
: 接收器输出,接收其他接口图像作为输出的能力source offload
: 源卸载, 提供输出窗口化图像到另一个接口的能力。sink offload
:接收器卸载,提供接收其他接口图像作为窗口化输出的能力。流程: source --图像--> sink --图像--> 显示器
简而言之,就是虽然都是:输出source,接收sink,但是分全局的,还是局部两种。可见,局部是更高级的能力,nvidia显卡当前驱动并不支持,只支持source output
,也就是将自身图像完全替换掉接收器,接收器只是作为连接显示器的中介,自身不再参与进行复杂的gpu运算。
(吐槽星人:不过老实说,这个命名是有点奇怪,也许是翻译的缘故很容易搞不清什么源,什么输出。)
为什么要这么麻烦的设计,因为笔记本只有一个连接显示器的接口,独立显卡和cpu内置显卡共用一个接口。为了省电,一般都是用内置显卡,玩游戏的时候才调用独立显卡。(这种能力就叫显卡offload),这种能力的简化版本就是显卡output.可见简化版本不会智能省电,对用户来说只是切换不同显卡的开关而已。
绑定设定:
xrandr --setprovideroutputsource prov source
设置输出源来自哪个接口。source值为0x0时相当于关闭接收器 prov 的显示输出
参数中的 prov 是物理接口(即连接显示器的物理接口),source 信号主接口(即渲染图形的工作接口)。
这个设置的意思是将 prov 接口的输入源指定为 source 接口。prov 接口应该具备 sink output 特性。而 source 接口应该具备 source output 特性。
因此,要让这个命令生效的前提,就是先在 xorg.conf 中设定让 source 接口作为工作接口,让 prov 接口作为备用接口,这两个接口应该同时启用。
例子: xrandr --setprovideroutputsource intel nvidia
如 intel 集显连接到显示器,nvidia 独显没有连接到物理显示器,默认系统会让 intel 显卡工作,而 nvidia 显卡不工作。但是可以通过xorg.conf 设置让 nvidia 工作,intel 备选,然后用这条命令将 nvidia 显卡渲染的画面传递到 intel 显卡,然后通过物理连接的显示器输出画面。
xrandr --setprovideroffloadsink prov sink
绑定提供者和接受者,sink为0x0即解除绑定。
注意这个和上一个命令格式的微妙区别(位置刚好调换)。sink 为0x0时,解除绑定。
这里的 prov 应该具备 source offload 特性,而 sink 接口应该具备 sink offload 特性。
例子: xrandr --setprovideroffloadsink nvidia intel
这个模式更加智能和高级(甚至你都不需要使用这个命令来设置),他不需要设置 xorg.conf 让上一个例子的 nvidia 作为主接口,而只需要设置 nvidia 让他的输出源和 intel (主接口)关联起来。
通常执行程序使用的是 intel 渲染画面,某个窗口程序使用 DRI_PRIME=1 xxx
即调用 nvidia 渲染 xxx 的画面,然后将画面输出到 intel 的该窗口区域,和其他由 intel 渲染的部分组合起来输出到显示器。
需要注意的是,nvidia 官方驱动要在 435.17 版本之后才支持这个特性,而且,他也不能使用环境变量 "DRI_PRIME=1" 来指定独显渲染,而需要安装 nvidia 的工具包(arch 系统是 nvidia-prime 包),使用 prime-run xxx
来渲染 xxx 程序。
演练:
xrandr --listproviders #查看当前的显卡配置
显示:
Providers: number : 1
Provider 0: id: 0x1b9 cap: 0x1, Source Output crtcs: 4 outputs: 3 associated providers: 0 name:NVIDIA-0
翻译一下就是:一共发现1个显卡。有个显卡叫 NVIDIA-0, 编号0,id 0x1b9,支持source output特性,四个输出,三个相关者。
从名字可以看出是nvidia独立显卡,该显卡支持source output特性。其实我的cpu是intel的,有个内置显卡,但是没有显示出来,这是为什么?因为我是台式机,把显示器直接连接到nvidia独立显卡上了。内置的显卡没有连接,它会自动关闭。
就算可以强制开启,也是没有意义的,因为nvidia显卡不能作为接收方,所以必须先把显示器接到主板的输出接口上,使用内置显卡作为输出端。
具体过程有点复杂,以下方案是给有一定动手能力的人参考:
一、linux的图形界面是通过/etc/X11/xorg.conf
来配置的,如果要重新配置(比如我需要切换到intel接口),最好是把这个文件给删了。
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak #改名备份
二、确认屏蔽掉nouveau 驱动
sudo nano -w /etc/modprobe.d/nvidia.conf
添加如下内容
blacklist nouveau
三、获取两个显卡的硬件信息:
lspci
显示类似如下信息:
...
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
...
01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
....
也就是intel的pci是"PCI:0:2:0";而Nvidia显卡的pci是“PCI:1:0:0",注意这个写法的特征,将来编辑xorg.conf配置文件需要这个。
四、编写配置文件/etc/X11/xorg.conf
sudo nano /etc/X11/xorg.conf
内容如下:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
Inactive "IntelCart"
EndSection
Section "Device"
Identifier "NvidiaCart"
Driver "nvidia"
BusID "PCI:1:0:0" #极为重要,替换为你的配置
EndSection
Section "Device"
Identifier "IntelCart"
Driver "modesetting"
BusID "PCI:0:2:0"#替换
EndSection
Section "Screen"
Identifier "Screen0"
Device "NvidiaCart"
Option "AllowEmptyInitialConfiguration" #重点
EndSection
sudo nano -w /etc/lightdm/lightdm.conf
修改其中一行:#display-setup-script=,改成如下内容:
display-setup-script=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0;xrandr --auto"
重启,完毕。
如果你重启正常,那么可以接下来处理一下问题:默认是垂直同步的,我们想fps更高,怎么办?
将Sync to VBlank
关闭即可。
sudo apt install mesa-utils #安装测试工具
glxgears #测试速度,按Esc键退出
xorg 的配置文件,一般情况是不需要手工编写,驱动会协调运作。但是对于复杂的情况,比如双显卡,多个显示器等,就需要手工编写,以提供足够的配置信息格 xorg 系统。
基本由不同的节点组成,结构如下(不区分大小写):
Section "节点类型"
选项 参数 参数
Option 组件定义参数
......
EndSection
节点类型:
<标识符>:[属性]:pri=<优先级>
,服务器路径<trans> / <主机名> : <端口号>
编号 id 位置
KDE桌面中声音管理是 phonon
,有两个后端处理,分别是:
sudo apt install phonon4qt5-backend-gstreamer
安装系统设置/多媒体/后端
可以查看。不过默认的gstreamer不支持mp3,很多应用程序无法播放mp3,修补的方法是安装以下解码器:
sudo apt install gstreamer1.0-libav
sudo apt install gstreamer1.0-plugins-good
sudo apt install gstreamer1.0-plugins-ugly
sudo apt install gstreamer1.0-plugins-bad
很多网卡驱动都需要另外安装,以下演示我的一个usb网卡的安装过程。
一、lsusb :运行两次,一个是插入usb网卡前,一次是插入网卡后,这样可以判断usb是那个型号。如:
htqx@lv6sjxpc:~$ lsusb
Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8009 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 003 Device 002: ID 05e3:0723 Genesys Logic, Inc. GL827L SD/MMC/MS Flash Card Reader
Bus 003 Device 005: ID 2f68:0082
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
htqx@lv6sjxpc:~$ lsusb
Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8009 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 003 Device 006: ID 2357:0101 #这个是新增的
Bus 003 Device 002: ID 05e3:0723 Genesys Logic, Inc. GL827L SD/MMC/MS Flash Card Reader
Bus 003 Device 005: ID 2f68:0082
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
二、根据这个型号百度,即2357:0101
,网上会有人提供驱动源代码。找到然后下载。或者在这个网站找到供应商信息:https://devicehunt.com/search/type/usb/vendor/0BDA/device/any
三、解压缩驱动包,进入目录,查看README.md这个文档,里面有指导安装命令。然后:make
编译,记住,编译的前提是你安装了linux当前内核的头文件。用uname -r
查看内核版本,并安装对应的头文件。
四、sudo make install
安装。
五、重启,或者用sudo modprobe -a rtl8812au
立即装载驱动模块。
如果该驱动包里面有dkms.conf文件,表示支持动态模块,可以用dkms自动化管理,那就更好,因为它可以在你升级内核的时候,自动编译驱动模块。根据README.md的说明:
sudo make -f Makefile.dkms install
sudo dkms status
#查看安装情况sudo modprobe -a rtl8812au
网卡驱动安装完毕,如何检验是否正常?
ip a
列出网络接口,一般无线网卡是wl
开头。kde5-nm-connection-edit
。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。