技术

让人从何说起呢⋯⋯

我装了个 Ansible,想给我的所有虚拟机一起滚个升级,我设计的流程是这样的:

  1. 升 pacman

  2. archlinux-keyring

  3. 升整个系统

其中一台机器由于太久没滚,升完 pacman 以后和系统中的老 glibc 不兼容,挂了。怎么办呢⋯⋯正好旁边有台机器已经手动升好了,于是我想着直接把那台机器的 glibc 拷过来就好了。结果发现这个新的 glibc 还是不能用(都是 Arch Linux 最新的,我也不知道怎么回事⋯⋯),说有个符号找不到。但是现在由于 glibc 太新,不光 pacman 不能用,其他所有 binary 都不能用了⋯⋯

⋯⋯

⋯⋯

当然这本来没什么,虚拟机么,大不了删了重新开一个。但是情况是这样的:我目前人在第二根据地,机器在第一根据地。我是连着第一根据地的 VPN 来升级的。这台出问题的虚拟机正好就是跑 VPN 的机器,所以如果我删了这台机器,VPN 就断了,我就只能人过去修⋯⋯

这也太囧了⋯⋯

目前这个 VPN 还连着,完全归功于当年 POSIX 文件系统的精妙设计:如果一个文件正打开着,外部可以随便删除或覆盖这个文件。对于已经打开这个文件的进程,依然指向旧版本的文件,后来打开这个文件的进程指向新文件。当所有旧文件的描述关闭后才真正删除旧文件。但是这个 VPN 目前很脆弱,如果由于某些神奇的原因 systemd-networkd(因为是 WireGuard)或者机器本身重启了,就挂了⋯⋯

我大概想了半小时,没想到救这台机器的办法,只好另开一个虚拟机,重新架 VPN,在路由里重新设好 NAT,连到新的 VPN,再把老 VPN 停掉,最后把新机器的 IP 改成老机器的。

这件事告诉我们几个道理:

  • 作就会死,不作一般不会死。

  • 在虚拟机里做任何系统级改变之前都要做快照

  • 备份啊备份。是的,我的虚拟机都没备份,原因是我一直在计划写一个备份的框架,但是一直都没时间写⋯⋯但是真的得备份!有时你吃着火车唱着锅,不知怎么的啪叽一下系统就挂了⋯⋯

想法

在处理上面那件事的时候发现了这样的一个大佬,他有这样的一篇文章:Let’s not Encrypt。看完以后我好像突然明白了为什么当时在给我的网站和家里的公开服务加 Let’s Encrypt 的时候总感觉特别傻逼。因为这事就是特别傻逼!Let’s Encrypt 的这个巨复杂的三个月一更新的系统就是特别的脆弱。而现在需要这个系统的根本原因是这种基于 CA 的证书机制本质上是大厂的 circle jerk,现在强行推广给所有人;同时浏览器厂商(主要是 Google)为了占领市场和标准的高地,无底线地拉高浏览器的「安全」标准。现在的浏览器都要求证书的有效期限不超过一年,这件事除了恶心人以外基本上屁用没有。现代的安全最佳实践都推荐「短寿命」的证书和密钥。这个「短寿命」指的是一个 session 的长度,一年在这个标准下和三五年没什么本质区别,只是给 root CA 更多生意而已。我一直都觉得特别奇怪,这些 root CA 都是那种看名字就觉得恶心的公司,何德何能能成为 root CA?你们这些公司 circle jerk,号称可信就罢了,老子凭什么相信啊???我宁愿搞 web of trust 那一套都不愿意让别人告诉我该相信谁。🤬🤬🤬

编程

继续推进网摘程序。之前一直试图实现 QML 的 tree view,这周终于放弃了,太尼玛麻烦了,直接改用 QtWidget。

读书

读啥子书啊,都看《机器猫》了。

游戏

游啥子戏啊,都看《机器猫》了。