LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

2020 年 Linux 给我的糟糕体验

前话

2020 年可谓是多灾多难的一年,不仅仅新冠疫情蔓延了大半个年还未消散,就连 Linux 的那个世界也像在这场悲伤得了重症一般,真叫人心悸。

之前也经历过各种 Linux 问题,不过,一切都在能接受的时间内被修复,即使未及时,也能够在各种官网找到替代方案,记忆中,历经的几场大动荡都能够被温柔地予以化解:

  • Hal 被废除,当时的 udev 出现了各种问题
  • KMS 的引入,基本所有跟显示有关的都出现问题
  • 内核版本号万年 2.6 到 3.x,各种发行版都难逃 Kernel Panic
  • 硬盘设备从 hdd 转为 sda,各种识别不了硬盘,Grub 的写入也有各种 bug
  • 电源管理问题,特别是 GPU 的电源管理,当年的 ATI 开源驱动体验比闭源还好
  • ……

牢骚开始

Intel GPU 导致高温异常,续航只剩下 1/3 不到

从 Linux Kernel 5.2.x 开始由 Intel 修复一些紧急漏洞引入的 bug,会导致 gpu 无法休眠,一直处于 100% 工作,然后同期的 4.x.x 版本会相应被合并引入 bug……

不同以往,这个问题可能比较棘手,棘手到连 Intel 的员工一直都没能整明白,所以这个特严重的问题持续了快一年。

因为笔记本是核显,平时也很少关心 Linux 的 changelog 和 bug,所以问题来临的时候,总以为是 CPU 的问题,方向错了,处理得心力焦悴。

问题关联地址

解决

5.8.1 修复了该问题!

Intel GPU 导致系统不可恢复的死机

上述的 GPU 没有休眠问题,其实期间 5.6.x 版本有修复过,不过这就引起另一个更加致命的问题,直接死机,与 Kernel Panic 一样是无法切到控制台去修复显示的问题,不同的是内核崩溃你是图形界面不在了,而这里图形界面是挂起状态。

这期间几个版本都是不定时挂起死机,你以为正常了,就给你当头一棒……

问题关联地址

解决

5.8.1 修复了该问题!!

Linux 5.8 和 Virtualbox 的不兼容

因为 Kvm 对于 USB 的操作支持不是很友好(虽然直通什么的功能强大,但是对于文本配置和 TUI 的新鲜感早被纯用户的惰性代替),而我需要在虚拟机里用 Windows 烧录 Android 给我的 OrangePi,所以我都是用 Virtualbox。没想到以为 Intel 的高温和死机消失后可以愉快的我还是撞到冰凉的门了,Virtualbox 在 5.8 的都没法编译过,而且 gentoo 取消了 virtualbox-bin 包了……

问题关联地址

解决

将要发行的 Virtualbox 的 6.1.13 会兼容新 Linux 内核!

Nvidia 450 版本和 kscreenlocker 导致桌面假死

本来以为在 2020 年避开了 Intel 的低压商务本的接触,用我 Nvidia 显卡的 ITX 不就可以了嘛,结果现实又再次无情疯狂抽我脸。更新 440 版本后 steam 不能正常工作导致我天天盼着 Nvidia 发新驱动,刚结束 Intel 的破事后,看到 450 已经过了好几个版本了,新闻说 450 版本是带着各种革新而来,440 版本也早在 Gentoo 里已经是 mask 了!兴奋的我马上升了级,结果电脑每次第二次睡眠唤醒就界面假死,这问题诡异得我说不出苦来,毕竟我习惯了近十年几个月不关机只睡眠的生活。

以为是内核问题,换了几个内核还是这样,以为是显卡驱动问题,换了几个 450 版本又都是一样,还没有相关 error 或 warning 日志,气死了。

后来是偶然在 ArchLinux 论坛看到标题是说 450 随机假死,有人解答是 kscreenlocker 版本的问题,一语惊醒梦中人,真要命啊。

问题关联地址

解决

所以只能将 Nvidia 降到 440 版本,Mask 450 以上,等 kscreenlocker 修复,或者禁用。

Fontconfig 导致一些应用 Core Dumped

TeXmacs 在 gentoo 里面还是依赖 guile 1,所以被系统自动 mask 掉,更要命还依赖 qtwebkit,在 Gentoo 看到 qtwebkit 和 qtwebengine 我都得绕着走,所以要么在 Lxd 里的 ArchLinux 解决,要么用官方的编译版本。

TeXmacs 和 Typora 在 lxd 里面输入中文老是会有穿透现象,所以我只好使用官方编译版本。官方编译的TeXmacs 每次打开都会出现 fontconfig xxx 的错误和警告,生成一个 fontconfig 目录,选个字体,动不动就 core dumped,在网上找了一圈也没有答案,只说这是 fontconfig 一个历史遗留问题。

解决

既然是历史问题,那估计是 fontconfig 新老不兼容问题,那么将 /etc/fonts/fonts.conf 的文件拷贝一份到 TeXmacs 的目录中,把提示错误和警告的那部分都去掉,我这里的大概如下:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<dir>/usr/share/fonts</dir>
	<dir>/usr/local/share/fonts</dir>
	<dir>~/.fonts</dir>
	<match target="pattern">
		<test qual="any" name="family">
			<string>mono</string>
		</test>
		<edit name="family" mode="assign" binding="same">
			<string>monospace</string>
		</edit>
	</match>
	<match target="pattern">
		<test qual="any" name="family">
			<string>sans serif</string>
		</test>
		<edit name="family" mode="assign" binding="same">
			<string>sans-serif</string>
		</edit>
	</match>
	<match target="pattern">
		<test qual="any" name="family">
			<string>sans</string>
		</test>
		<edit name="family" mode="assign" binding="same">
			<string>sans-serif</string>
		</edit>
	</match>
	<cachedir>/var/cache/fontconfig</cachedir>
	<cachedir>~/.fontconfig</cachedir>
</fontconfig>

然后在 TeXmacs 的启动脚本里面判断 $TEXMACS_PATH 里加入对 fontconfig 文件的指定:

export TEXMACS_PATH=$(dirname `readlink -f "$0"`)/../
export FONTCONFIG_FILE="$TEXMACS_PATH/fonts.conf"