保佑Nouveau,或者说我对Nvidia Optimus的煎熬。 第1部分。Arch文档的美

在我开始之前


在开始主要故事之前,我想澄清几点。 本文主要针对希望安装GNU / Linux(以下称Linux)的采用Nvidia Optimus技术的笔记本电脑的所有者。 该材料旨在确保上述中亚熟悉该问题的可能解决方案,并促进和加快其解决。 此外,本文的动机并非最不重要,它旨在使人们理解一个简单的事实:在Linux中,就像在生活中一样,总有一种解决方法,如果您放弃,它也不会变得更好(在大多数情况下)
Qui quaerit,曲目
-拉丁语

前言


暂时我是一个普通的Linuxoid。 我测试了不同的发行版,并慢慢学习了新知识。 只是因为我有兴趣。 通常,“知识”仅限于Ubuntu及其分支,Fedora和一些“用户友好”发行版。 但是,正如另一个拉丁谚语所言,全神贯注,全神异变,也就是说,万事万物,一切都在变化,很显然,这不可能永远持续下去。

一切开始顺利


应该注意的是,我没有太多的实验空间: 相对较弱的PC(勉强能拉动GNOME 3)和缓慢的Internet(使整体情况复杂化)。 但是对于12岁的男孩来说再增加一点是没有必要的。 最后,我厌倦了实验,安装了Windows 10,并忘记了Linux几年了。

时间流逝,大约两年后,我意识到是时候该更新我那块生硬的 PC 铁了 ,开始省钱了。 通过出售他的财产获得了一些东西,得到了一些东西,其中一半以上是由他的父母抛出的,他甚至不得不牺牲掉以出售他的Xbox(!) 改善您的FAQ来提高您的Linux技能。 这次,我决定尝试安装Arch。 我听说他有很好的文档。 然后他开始了。

Arch文档之美


安装速度很快,并且相对简单。 再次感谢文档。 安装系统和以KDE Plasma表示的DE之后,我尝试将笔记本电脑连接到外部显示器,因为该显示器的对角线为24',而笔记本电脑的显示屏仅为15.6'。 什么也没发生,监视器上没有信号。 和往常一样,我开始谷歌搜索。 经过30分钟的搜索,我发现问题出在Nvidia Optimus技术上。

关于Nvidia Optimus的一些知识


英伟达是一个很好的公司。 在其25年的历史中,他们实施了许多相对较好的解决方案。 英伟达擎天柱就是这样的一个。 该主题是一种混合技术,可确保笔记本电脑上的两个图形卡(通常是功能强大的Nvidia图形和集成的Intel)正确运行。 如果正确配置的Windows中运行,则有助于节省电源和便携式计算机资源。 所有这些都非常好,但是促使我写这篇文章的原因是,根据开发人员的说法,Linux中的这项精美技术只能部分起作用,而且我认为配置它需要很多,大量的神经,时间和精力。

Arch文档之美(续)


在找出问题的真正根源后,起初我很高兴地确定了“狗被埋在哪里”(只有Nvidia卡具有HDMI输出),而第一步是阅读Arch的官方文档。 其本质是使用Xorg.conf和.xinitrc来强制X仅使用Nvidia卡。 完成这些步骤并重新启动后,出现黑屏。 该文档说,在这种情况下,有必要检查.xinitrc中是否有“&”号,如果没有,请使用“替代配置”,该配置强制X仅使用Intel卡。 这不适合我,因为默认情况下已经使用了英特尔卡,并且该选项不适合我。 还有各种DM的选项。 它们也不合适,因为它们出于各种原因都无法启动X服务器。
分别描述它们将是一个非常漫长而毫无意义的练习。

Qui quaerit,曲目


拉丁语翻译中的这个表达意思是“谁搜索,发现”。 一开始我并没有白费,因为就我而言,这种表达将成为本文的理想寓意。

我很绝望。 我花了两天时间试图找到一个解决方案,搜寻了国外论坛(只是在他们身上,因为在Orthodox LOR中,答案是这样的:您无法以任何方式通过Nvidia启动X。这是不可能的,调和)。 但是,在搜索的第三天多云的早晨,我在Nvidia开发论坛上碰到了一个线程(地下室中的链接),其中描述了如何在Arch笔记本电脑上的Arch中实现Nvidia Optimus。 我立刻意识到-我得救了! 按照这些步骤,我重新启动,然后...出现黑屏。 当然,我很沮丧,但后来我想起来了:我没有在.xinitrc行中注册运行DE。 编写了exec startkde后,我再次重新启动,它开始工作了。 X通过Nvidia启动。 我花了四天的时间来安装和配置Arch,但是我做到了!

汇报


现在,让我们解析上面线程中的指令。 让我们开始:

首先,您需要通过在GRUB_CMDLINE_LINUX_DEFAULT = parameter行中添加到内核参数(文件/ etc / default / grub)来启用KMS支持(内核模式设置,直接在内核中进行分辨率设置)。

nvidia-drm.modeset=1 

然后,我们为DM(登录管理器)创建一个脚本。 考虑使用LightDM的选项。 我们使用以下内容创建脚本/etc/lightdm/display_setup.sh:

 #!/bin/sh xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto 

使用此脚本,我们可以指定提供程序并设置最大可能的屏幕分辨率。

让我们使创建的脚本可执行:

 chmod +x /etc/lightdm/display_setup.sh 

让LightDM在启动时执行上述脚本。 首先,编辑/etc/lightdm/lightdm.conf:

 nano /etc/lightdm/lightdm.conf 

输入参数

 display-setup-script=/etc/lightdm/display_setup.sh 

您可以在我已经提到的线程(位于地下室的链接)中看到SDDM的说明。

现在,我们需要更新CPU微码(有关地下室链接中微码的更多信息):

 sudo pacman -S intel-ucode 

更新微码后,从Nvidia安装一堆软件包:

 sudo pacman -S lib32-mesa-demos mesa-demos libva-vdpau-driver nvidia nvidia-libgl lib32-nvidia-utils nvidia-settings lib32-opencl-nvidia 

注意:某些软件包可能不可用。 在这种情况下,请分别安装所有组件。 跳过将不可用的软件包。
打开nvidia.persistenced守护程序,该守护程序负责Nvidia驱动程序的持久性(在basement链接中了解更多信息):

 systemctl enable nvidia-persistenced.service 

自动配置GRUB:

 sudo grub-mkconfig -o /boot/grub/grub.cfg 

创建一个可启动的RAM磁盘:

 mkinitcpio -p linux 

检查.xinitrc:

 nano ~/.xinitrc 

如果未输入,请输入

 exec gnome-session 

对于GNOME和

 exec startkde 

用于KDE Plasma。

重新启动:

 reboot 

重新启动笔记本电脑后,使用您的帐户登录并享受Arch的世界。

关于大黄蜂和总理


您可能已经注意到,我没有提及旨在确保Nvidia Optimus在Linux上正确运行的“拐杖”:Bumblebee和PRIME。
另外,我只有一张带有专有驱动程序的Nvidia卡,Nouveau不起作用(这就是为什么这篇文章被称为“ Bless Nouveau”。
至于我与他们的亲身经历,他又小又可怜:两个拐杖都没看到我的Nvidia显卡。 如果您对它们感兴趣,可以在地下室找到指向它们的资料的链接。

后记


如果您阅读了整篇文章,那么您就是英雄(嗯,还是主持人)

在写文章时,我试图用相对有趣的笑话来为您稀释,以某种方式证明其中没有图片。 希望您阅读后达到禅宗。

来源清单


关于微码: en.wikipedia.org/wiki/微码
关于Bumblebee: wiki.archlinux.org/index.php/Bumblebee_ (俄语)
关于PRIME: wiki.archlinux.org/index.php/PRIME
线程: devtalk.nvidia.com/default/topic/1027679/linux/optimus-support-for-arch-linux-for-dell-i7559-dual-graphics-intel-nvidia-gtx-960m-laptop-/2
关于持久性: en.wikipedia.org/wiki/Persistency

Source: https://habr.com/ru/post/zh-CN414061/


All Articles