Linux 下使用 Nvidia 显卡和 Virtualbox 遇到的一些坑

Like
Like Love Haha Wow Sad Angry
31

nouveau 显卡驱动,并不好。

Virtualbox 的问题

Virtualbox 安装完毕 Windows 10,却莫名其妙卡在了登陆之后应该出现桌面的地方。而且它不仅仅是客户机卡死,宿主机也一并卡死了。

我没太注意这个问题。大不了暂时不用 QQ 好了。

Nvidia 显卡

无独有偶,另一个问题的出现使整个事情出现了转机。

使用 Linux 后不久,就发现了问题。桌面环境(xfce4)经常无故完全卡死,甚至连 Ctrl+Alt+Fn 切换 tty 都没有用。偶尔出现还能忍,但是在短短的两三天就数次出现,呈现一定规律。我决定一探究竟。还好直接看日志就能发现问题——journalctl -xe里面出现了红红的nouveau sched_error ctxsw_timeout,几乎能让人确信是 nouveau显卡驱动的问题。

查了一下,貌似是一个普遍的问题:Bug 93629 – [NVE6] complete system freeze, PGRAPH engine fault on channel 2, SCHED_ERROR [ CTXSW_TIMEOUT ],而且看不到被解决的趋势。

对症下药,我赶紧卸载 nouveau,切换了 Nvidia 的官方驱动,至今运行良好:

sudo pacman -S nvidia

Virtualbox 和 Nvidia 显卡

这时我突然想起,会不会 Virtualbox 的问题,也是 nouveau显卡驱动的问题呢?我激动地打开了 Virtualbox,登陆,一切如期。看来真的是缘起这个显卡驱动。

我还没激动多久,又出现了一个问题。用 Windows 的目的之一,是测试 Angular 对 IE11/Edge 的 polyfill 管不管用。所以我打开 Edge,加载最近在写的 www.zjuqsc.com/m,却发现整个图形界面都在不停闪烁。起初我以为是 UWP 的 bug,然而换了 IE 之后依然如此,安装了 QQ 之后依然如此。我又一次失望起来——这事情就搞不好了吗?

还好,搜索 “virtualbox windows10 flickering” 直接给出了答案:SCREEN FLICKERING IN VIRTUALBOX WITH 3D ENABLED [UPDATED SEP 21, 2017]

看起来,是 Nvidia 显卡的 3D 加速驱动的问题。根据文中内容,虽然只要改动一行代码,但是由于会「破坏一位付费用户用的某些功能」,所以官方不会修改,只能用户自己动手。

好在作者和一位评论者,分别提供了 5.1.85.1.30 编译好的、要打补丁的那个文件VBoxOGLrenderspu.so,只要用它替换/usr/lib/virtualbox/里的同名文件就行了。后者经过我测试,是可以在 ArchLinux 下的 Virtualbox 5.2.* 下正常工作的。

后记

Linux 下的桌面环境,还存在种种问题。还好这些问题现在基本是可以修复的。尤其是相比 Windows 下不可忍受的效率问题,还是早日切换到 Linux 的好。

Like
Like Love Haha Wow Sad Angry
31