标签 Archlinux 下的文章

最近到手了一个很轻便的笔记本,换装Arch的时候遇到一个问题:界面会不断地刷pcie bus error的提示,类似于

pcieport 0000:00:01.1: PCIe Bus Error: severity=Corrected, type=Physical layer, id=00e5(Recelver ID)
......

不断刷屏,根本不知道自己的命令打成了什么样,更不要提查看结果了。

几经查阅,发现这个问题大概是由于硬件间通信速度不同导致的错误,除了更换插槽以增加两个硬件之间的物理距离外,没有其他的解决方案。所以如果系统运行正常,那么搁置这个问题即可。

所以,解决无望,只能想办法屏蔽这条消息。

方法很简单。在Arch安装盘的选择界面按e(类似于编辑grub的启动项),结尾增加 pci=nomsi,再回车进入安装程序即可。

同样的,如果在安装之后还出现这个问题,则可以将这个参数加入grub启动项中来解决。不过我这里在装好之后就好了,所以我感觉这可能是USB插槽距离CPU或者某些控制器有点儿近导致的吧…

视频点此

大概是从去年,Linux阵营的改善仿佛充了会员一般……越来越多的公司开始贴近Linux。比如说微软的Linux子系统、WPS重启了Linux版本的维护、Steam开始Steam Play项目,使得非Linux阵营可以运行Windows专属游戏、百度网盘的Linux版、NVIDIA开始在Linux的驱动中加入双显卡支持……

到现在,连QQ for Linux都诈尸了

现在,在电脑版的QQ下载页的其他产品中,赫然放着 QQ for Linux 的下载入口

点进去,提供了几乎各个主流分支的安装包,直接下载安装即可。

但是,请永远记住:

Arch的源永远不会让你失望。如果没有,那么请使用AUR

至于体验如何,可以看我的视频。我在这里只想展示一下linux中国对于这次复活的一段评价


在 10 月 24 日这个程序员节上发布了 Linux QQ 2.0 版本让人觉得有点无厘头,甚至让人觉得可能仅仅是一个快闪活动,频繁的断线都让人担心是不是到了 25 日,可能 Linux QQ 就又不能用了。在 1024 程序员节的释出,使得 Linux QQ 可以以一个怀旧的形态重新出现在人们的眼前。但是,同样的,在这个节日的释出,也让人觉得这件事似乎并没有相信中的那么重视,对于 Linux QQ 的前景蒙上了一层阴影。

而且,腾讯并非一个慈善组织,对于腾讯这样的一个企业,是否会长期为一个很难产生现金流,而且小众的操作系统提供长期维护还尚未可知,更是让人无法相信 Linux QQ 的未来。

近两年来,自主研发的操作系统不断的刷屏,我们也一次次为自主研发的操作系统而欢呼。但是,高潮之后,还能剩下来的是什么?

我一直强调,操作系统卖的不是系统本身,而是卖因其产生的生态,由生态倒逼用户为系统本身付费。就如同我尝试很多次从 iPhone 转回 Andorid ,从 macOS 转回 Windows,但是,也正如我自己每次失败后的总结一样,我没有办法完全抛弃掉 iPhone 、macOS,因为其所带来的生态是我无法迁移到 Android 上的,被操作系统所挟裹,不得不去面对的现实是:最终,我还是回到了 iPhone 所构建的生态。

对于 Linux 也是一样的,Linux 的服务端的用户诉求是明确的、简单直接的、绝大多数场景都可以被覆盖掉的。而桌面端的产品可能会有数万种不同类型的需求,这使得产品经理在进行设计时预见不了需求的问题,也就很正常的问题。

我们回过头去看,Linux 想要占领桌面市场还需要什么呢?需要的不仅仅是一个 Linux QQ,我们需要给更多人提供 Linux 上的微信、办公套件等等一系列软件。没有这些软件,我们就很难让用户迈过入门的第一关:我如何登录 QQ /微信和我的同事、家人沟通。如果他发现,我用了 Linux ,但是我却没有办法使用 QQ /微信进行沟通,那么我用 Linux 还有什么意义呢?

对于 Linux 来说,除了去适配这些我们所熟悉的软件以外,更是需要有厂商能够面向 Linux 开发出独占的杀手级用户,这样,才能够更好的去推动一个操作系统的发展。

如果 Linux QQ 仍然继续更新,那对于 Linux 来说,是一大利好消息,一些做的好的、做的不好的应用,都可能会重新考虑创建自己的 Linux 版本。而过去,可能没有这样的机会。


我个人还是比较认同这种观点的。不只是腾讯QQ,算上之前发布的百度网盘,我也觉得是为了顺应国家政策而不得不开发出的产品。所以说,很多国内Linux用户一看到QQ for Linux复活了,就好像多大的喜事一般欢呼雀跃,奔走相告,甚至乐观的认为腾讯良心发现……

谈不上,甚至对提出这种观点的人有一股愚昧的印象。目光真的就只能看这么近吗?如果说,腾讯在之后发布了更多的迭代版本,功能上不求跟上Windows,能跟上OSX,再说它“良心发现”也还算过得去(虽然我不认为发布Linux版本软件能跟所谓“良心”挂上钩)。现在仅仅发布了一版便如此兴奋,正所谓“希望越大,失望越大”。

所以,请保持平常心。就仿佛Windows又新出了一个软件一样的心态来看待QQ for Linux的复活吧…

这个文章有点儿啰嗦…要看解决方案到底是什么的,就直接拉到文章最后一节


笔记本,Intel核显+NVIDIA独显,解决方案?

只安装NVIDIA独显闭源驱动?大黄蜂切换?nouveau?

正确的方式是什么?


一、为什么放弃了大黄蜂

本身我一直推荐用户通过大黄蜂+bbswitch来实现双显卡切换。但直到前些日子我打算玩儿{{theHunter:Call of the Wild:猎人:野性的呼唤}},它不能运行了。

我知道这个游戏是Windows专属,所以它是通过Proton来实现运作的。但是根据protondb.com给出的数据,这个游戏的支持度是很好的。

怪哉!

实在没有办法,只好用steam play bumblebee为关键词搜索,偶然看到了个描述(原网页懒得找了):大黄蜂不支持dxvk

原来问题在这里。

那就不得不放弃大黄蜂了。

二、选啥方案

只安装闭源驱动?

性能是好,但是太费电啊…

nouveau?

省电,还能自动切换,但独显性能太渣了啊…况且好像还不能执行CUDA?

Ubuntu有着Linux世界里边最好的I+N双显卡解决方案,叫做PRIME。这个方案是通过在显卡管理器中更改配置文件达到使用核显或独显的目的的。Arch有没有类似的?

三、找到了可能是最好的方案

ArchWiki一查,还真有:nvidia-xrun

很明显,这个方案比Ubuntu的PRIME方案复杂了太多太多。而且使用时还需要切换到一个字符界面。但它确实能提供完整的英伟达显卡性能,在不使用的时候也可以关闭。

顺着这篇wiki,我又来到了Graphics索引页面。然后看到了一个名字为NVIDIA Optimus的Wiki项。要知道,Arch下面的显卡方案往往都被归类为Optimus。所以点进这个Wiki看一看

emmm... nouveau, Bumblebee, nvidia-xrun。没什么特别的。

难道就只有这种通过tty载入独显驱动一条路了吗?

不!任何时候都请记住:养成查看英文页面的好习惯。

看到变化了吗?看到英文页面的5.4小节了吗?就是它!只需从托盘右键选择一个显卡,就可以自动注销并切换!比Ubuntu需要打开显卡管理器—选择配置文件—手动注销再登录还要简便!而且还不需要xrun那样事先配置一堆文件!简直是赶超Ubuntu驱动管理的最佳选择!

四、配它

简单到什么程度?只需装几个软件包,再点几下鼠标即可完成:

pacman -S nvidia bbswitch    
# nvidia: 英伟达闭源驱动。如果使用自定义内核,或者不想驱动崩掉,那就安装nvidia-dkms
# bbswitch: 切换使用的节能工具。如果使用自定义内核,那就安装bbswitch-dkms

yaourt -S optimus-manager-qt
# 托盘程序(可视化切换及设置)。会自动安装核心程序
# 如果配置有archlinuxcn源,那么同样可以使用pacman来安装
# 如果使用KDE桌面,另有optimus-manager-qt-kde可供选择

现在重启,应该就能看到托盘多出了一个小图标了。右键点击它,选择设置—OptimusSwitching method选择Bbswitch,确定保存。

完成了。以后只需要右键这个图标,选择对应的配置方案,便可进行切换了。


所以,总结一句话:

一定记得看英文页面


注:

  • 根据项目readme,仅支持Arch分支的发行版
  • manjaro由于自带电源管理和自己的大黄蜂驱动方案(一样的残缺),需要对照git项目,删除/修改指定的配置文件以完成部署

对应的git项目 点这里

如果发现默认设置还是不能启动proton游戏,尝试如图配置

视频点此

霍金说2032年是世界末日——当然怹老人家到底说没说过咱也不知道。到底是不是真的咱也不敢问。只是那一年有个小行星会跑到地球附近,碰撞概率是千分之一。概率虽高,但仍有很大的不确定性因素。所以当下的人们,更重视并着手解决着另一个世界末日——Unix世界的末日。因为它已经不可避免的会发生,并且发生时间已经明确了:格林尼治2038年1月19日3点14分7秒,北京时间11点14分7秒。这一点可以跟Siri证实一下。

为什么?


就像世纪初的千年虫,2038年是属于Unix的“千年虫”——使用 POSIX 时间的 32 位计算机应用程序在到达2038年1月19日3点14分7秒后,将会跳到1901年12月13日20点45分52秒继续。怎么会这样?

在Unix世界中,时间是通过一个秒数——从Unix创世元年(1970.1.1 0:0:0)到现在经过的秒数——记录的。所以在Unix里边看到的时间,都是通过创世纪时间+秒数得到的。而这个秒数,被保存在了一个32位有符号整形中,通过正负号表示0时刻之前和之后。

如果你学过编程,你应该就知道32位有符号整形是什么意思:32位的二进制数,其中最高位表示正负。位数有限,则可以表示的数字便也会有极值。这个最大值取在01111111 11111111 11111111 11111111这个二进制数上,对应的十进制就是2^31-1=2147483647。这么多秒换算成时间,就是68年零18天3小时14分7秒。加上创世纪的1970年1月1日0时刻,便得到了这种记录方式的最大时间——2038年1月19日3点14分7秒。再往后,二进制的数字进位,首位变成了1。而首位为1意味着是负数而不是+1,所以时间跳回,Y2038问题便出现了。


这个问题有什么影响吗?至少使用time_t函数的C语言程序会导致时间溢出,Unix系统也不例外。但几乎可以肯定的是,不会有千年虫的影响大。因为OpenBSD直接粗暴的把变量换到64位有符号整形来保存,Linux内核虽然不能这么干,但一直在致力于解决这个问题。而截止到5.1内核版本,其已经开始引入2038年安全的系统调用了。最终目的是让老程序能转换到正确时间,新程序则直接用64位保存时间,这便可以让时间正确运行到大约2920亿年以后。也就是说,64位的“千年虫”将在2920亿年以后出现。而你的电脑硬盘则在38年后的几十年便转秃噜轴了,太阳也早在两千八百多亿年前就变成了红巨星并一点点的冷却了,所以64位的“千年虫”,我们怕是见不到了。