帖子

解决登录卡顿问题一例

ArchLinux,Gnome。有些时候,笔记本从睡眠中醒来,登录 Gnome,会卡好一阵子。经查是因为挂载了网络文件系统的缘故——比如休眠之前通过 gvfs 挂了个 samba,醒来重新登录的时候基本上要等一个超时才能见到桌面。

于是一直都是小心翼翼的在合上笔记本之前把该卸载的都卸载掉。但是这样人肉毕竟不方便。作为一个程序员,如果都不能给自己日常工作增加生产力,实在是羞耻。

于是准备用代码来解决问题。准备工作如下:
suspend 的 hook。翻了翻 wiki,现在什么 acpid、pm-utils 都不用了,hook 可以直接写成 systemd service file 的形式。卸载 fuser 的挂载。linux 的外围存储都是 sshfs 挂上来,在 mount 表里直接可以看到,最容易处理。卸掉 gvfs 的挂载。主要是来自 windows 的外围存储,Gnome 自带的 gvfs 其实还挺好用。但 gvfs 令人讨厌的是挂载行为变化不定,挂载点用 mount -l 是看不到的,之前还在 /run/user/$(id -u)/gvfs 下,而现在的版本则又找不到地方了。搜了一圈下来,看到 gio mount -s 可以直接按类型卸载,还算方便。干掉 vpn 进程。好几次休眠之前开着公司的 vpn,唤醒之后忘了,结果一边是 vpn 在顽强的尝试恢复连接,一边是我一头雾水在看为啥网络不通。 写好 suspend-root.service,实测发现以 root 用户身份执行的 gio mount -s 是有问题的,而且简单的用 su 或者 sudo 换掉身份也不行。gio 依赖 dbus,而 dbus 里面貌似也有 session 的概念,在开发环境即使用 root 都验证过了,放到 suspend hook 里还是会有问题,估计和 session 的生命周期有关,事情越搞越复杂。

好在后续的搜索工作找到了 xss-lock(其实最早 ArchLinux 的 wiki 上就提到过,但是被忽略了),可以越过 systemd 的 hook,让用户进程直接订阅 suspend 事件。于是又搞一个 user space 的 systemd service,用来卸载 gvfs 和 sshfs。

最终方案用到的脚本都在 github 的 toolbox 项目里了,用到的…

lyman 的 2016 游戏总结

坚持很难,放弃则很简单。之前一直心里想的是每月至少一篇,结果从 8 月开始,竟然也半年没写了。人到中年,问题很多。不过这不是这篇的重点,这篇还是来愉快的回忆这一年的游戏成绩。
Witcher 3 这游戏真是无论用什么溢美之词都不过分,299 小时的游戏时间创了个人的单个游戏时间记录(之前是 RE5 的 215 小时)。记几个印象深刻的点:
3 代的世界突然大了好多,使得 1 代 2 代那点破事完全不重要。不仅松鼠党在 3 代完全没有存在感,连 Triss 都明显是女二号的安排。初到诺维格瑞城外,永恒之火在挨家挨户砸门搜捕术士。第一次撞上的时候等级完全不够,读档之后小心翼翼的绕开了准备之后卷土重来,结果后来再也没找到是哪间房。二周目也没找到。二周目的时候特意想在很多关键情节上做跟一周目不同的选择。然而在雪山之巅,终究还是无法忍受 Yennifer 心碎的神情,于是最后葡萄园也还是 Yen 陪在身边。史凯利杰的海图简直丧心病狂,然而花费了大量时间清了之后,发现还是有海量的隐藏支线从来没有遇到。 Rise of the Tomb Raider 跟前作一样出色的作品。有前作铺垫,少了惊艳的感觉。不过古墓 20 周年的还专门追加了几个 DLC,还算厚道。 Invisible 难度挺高的 SLG,剧情也不错。不过玩的有点累,一周目通关之后应该还有很多玩法可解锁,但是完全没有想要再虐自己一次的冲动。 Homeworld Deserts of Kharak 听到那沉稳平静的背景女声时感动的简直快哭了。初中时 R 君送了我一套正版家园,从那个时候起就觉得,对于每个有太空梦的少年,那个女声就是浩瀚星空里最性感的声音。游戏本身中规中矩。 XCOM 2 XCOM 系列的节奏掌握的真好。同样是 SLG,XCOM 2 相比 Invisible 就更引人入胜一些。 Spec Ops: The Line 很老的游戏了,系统还是 Windows 7 的时候就装了,升级了 Windows 10 之后一直无法启动以至于以为可能要错过了。结果只是需要重新安装一下游戏就行了。剧情编排的真好,很有现代启示录的味道。 Middle Earth: Shadow of Mordor 这是个开放世界玩法的游戏,剧情上偏弱。妹子的人设明明还挺抓人的,为啥就不多安排点啥呢。而剧情结束后满世界抓兽人对我来说一点吸引力都没有…

感应灯和万能遥控器

如题,是这阵子折腾的两个提升生活品质的东西。

一、感应灯

前阵子参观同事 L 的新房,万科的精装,看到玄关有这样的设计。人在灯亮,人走灯熄,这种行为放在玄关、过道,还真的是非常恰当。

于是淘宝看了一下,红外感应的方案其实便宜的很,而且硬装已经结束的场合,还有跟灯具直接整合的产品,真的是很方便。于是给储藏间和干区过道各弄了一个。

美中不足的是渐亮渐暗没有搞定。

二、万能遥控器

很久以前就在吐槽遥控器多。虽然我已经不用机顶盒,也还是有电视,功放,天猫盒子,投影仪和树莓派。

偶然看到罗技也有类似的解决方案,而且风评也很不错,于是淘宝上搞了个 Harmony 650。

几点体会:

设备支持真的挺全的。事先到官网查兼容性,电视、功放和投影仪自不必说,连小米盒子和乐视 TV 都支持,还是挺意外的。罗技的软件一如既往的渣。同步数据到遥控器 99% 这个问题还是浪费了我好几个小时(到 99% 卡住不动的时候设备管理器里迅速的禁用再启用一下就好,手要快)。几天后意外收到注册账号激活的邮件,然而激活链接已然失效,根据页面引导重新发送了激活 url,至今没有收到过。设置好了之后真的是很方便!
为了让 Harmony 650 能支持树莓派,给树莓派又淘了个 IR 模块配置参考这篇,一定要把 KEY_POWER 相关的行注释掉,否则树莓派关掉就打不开了。另,lircd.conf 的注释 # 必须在行首,前面不能再有空格。

美中不足的是还剩了个天猫盒子——这个货用的不是红外遥控的方案。虽然也有玩家 DIY 了红外模块上去,但这个还是等我会玩电烙铁了(惨痛的经历)再说吧。

如果有一天

自上一篇文章有两个月了。事情发生了很多,人也忙的要死,而到了终于能喘息的时候,却发现这个也不能说,那个也不适合讲。

这是一种一点都不美好的状态。令人焦虑的是,在这种状态下久了,开始逐渐丧失对幸福的感受能力。

加薪?升职?年终奖?那都是很好很很好的,虽然不会不喜欢,却再也没有第一次得到时那种感动和惊喜,更没有力争上游的内在动力。

或许是被惯坏了。

两个可爱的小朋友?可我不是被吵醒,就是看到满眼的混乱和调皮,更缺少细致教导的耐心。

或许是我累坏了。

如果有一天,我连写代码都开始厌倦,那可怎么办才好。

摆脱华数机顶盒

图片
不是一定要有机顶盒才能看电视。
有种东西叫 Common Interface,配上一块 CAM 卡,再加上各地电视广播运营商(比如杭州华数)的智能卡,直接在电视上也一样看数字节目。
各地的 CAM 卡不通用,地方上各有各的利益集团,各有各的标准(从淘宝页面上可窥一斑)。
形成目前这种诸侯割据局面,广电总局和工信部功不可没。
于是国内带 Common Interface 的电视也几乎绝迹了。好在我当年买的 LG 支持。
支持杭州华数的 CAM 卡也不是没有,早些年华数营业厅还卖,也就是 200 块的东西 400 块卖给你。近些年干脆营业厅也不卖了。
不过有心还是能找到。我是找到个 QQ 群买别人囤的二手,性价比稍好一点。
CAM 卡的使用体验比机顶盒高一个数量级: 没有开机广告。切换台速度比机顶盒好很多。少了一个遥控器,而且电视遥控器品质秒杀机顶盒。顺便吐槽一下华数。吉林和郑州的机顶盒我都用过,杭州华数的最烂。 没了机顶盒之后,跟功放的拓扑关系变得复杂了一些: 原来是机顶盒/天猫盒子/树莓派做输出,通过 HDMI Splitter 分别到电视和投影仪,数据流向非常明确。电视带上 CAM 卡,能够自己作为输出之后,通常手册中设计的场景是电视直连功放的 HDMI Out,通过 ARC 来回传音频流(图中红色)。但是在有投影仪的场合,加上 HDMI Splitter 会使 ARC 失效(支持 ARC 的 Splitter略贵)。于是又加了一根音频光纤(图中绿色)。如果功放带双 HDMI 输出就好了。电视上要把 ARC 关掉。功放要配置 TV Audio 到光纤输入(默认在 HDMI ARC 上)。这套方案的缺点是没办法用投影仪看电视节目,不过对我来说完全不重要。多余的机顶盒我连到电脑显示器上了,以备丈母娘要看洗脑神剧,而我又有想看的节目的不时之需。

自制空气净化器

图片
2009 年从东京回国,很大程度上因为习惯了日本的蓝天绿树,选择了杭州。而这些年,杭州的空气质量也每况愈下,每年总有些日子让人干脆忍无可忍,冬季尤甚。

于是准备上空气净化器(下简称空净)。出于懒,开始都是在找成品。由于去年底的空气实在糟糕,性价比稍微好点的空净基本都脱销,包括小米,352。于是双十二的时候按性能价格颜值综合排序败了个 IRIS

结果被无情的打脸。虽然觉得就是个带感应器件的风扇没什么大不了,但是 IRIS 这台在工作了一夜之后电机还真就出问题了,低速时候噪音巨大,跟商家扯了半天,最终录了段视频过去给他,终于同意退了。

而此时连 FFU 都普遍从不到 1k 涨到 1.5k 左右。原本就觉得家里搞这么个巨大暴力的家伙有点不合适,现在更加没兴趣了。

于是参照 Mr工匠的博客,DIY 一台。先晒个完成图(后面三根天线是藏起来的路由器)。

风机用的绿岛风 BPT15-44J65,风量 390 立方米每分钟噪音 42 分贝,直接放在客厅运行起来的声音还是不能忽视的。对噪音敏感的同学可以考虑更小的型号。这毕竟是设计会被装修隐蔽起来的东西,所以很多装配细节跟成品的家用电器没法比。不过核心电机用了这么久以来非常 OK(真是被 IRIS 伤到了)。

忘了说,这种风机是没有插头的,需要自己配一个。而且本身配的电源线也不长,有需要的同学需要自己加长(接线的话我觉得这东西还是不错的)。


主滤材 HEPA 板用的是这家,倒不是说这家的东西有多好(事实上 HEPA 的水也比较深,在我朝除了对价格完全不敏感的食物链顶级商家,其他人大都不会说自己卖的东西是什么等级,原因你懂的),纯粹是因为尺寸恰到好处。风机是 311mm 的方形开口,这家的 HEPA 是 305mm 的方形。

之所以没有纠结 HEPA,是因为看到工匠的博客里提到了静电滤布,原理是“藉由兩種不同的纖維,在高速摩擦下產生電荷轉移,形成靜電強度大且持久的靜電棉”,说得通。

于是过滤部分就配齐了,晒一张全家福。最下面是随 HEPA 送的初滤,只能挡挡肉眼可见的大团灰尘;中间的静电滤布用了这些日子,已经明显变黑;最上面的 HEPA 只脏了一点点(貌似照出来显得有点脏),不是这块 HEPA 太不靠谱,就是静电滤布的效果太好(应该是后者)。图上是我拆下来拍照的顺序,所以装配在风机上应该是 HEPA 在最下面,中间是静电滤布,最外…

遭遇了 archlinux 桌面随机死锁

一年多没出差,结果就遇到了这么个事情。

周五要见客户,周四晚上走。周三一切正常,周四早晨笔记本从睡眠中醒来,桌面就直接死在那儿了。鼠标键盘无响应,Ctrl-Alt-数字键无法切换 tty,甚至连 Magic key 也没用,只能长按电源键强行关机。

想要直接看答案的同学请直接到文尾,中间一大段都是我的折腾过程。

重启之后不登录桌面,直接换个 tty 工作,发现不会死机。只要登进桌面,快则几秒,慢则分钟,必定会死机。

无论如何先翻 log。journalctl,~/.local/share/xorg/Xorg.0.log.old 都看过没有任何有效信息。

最可能是最近更新的包有问题。但是印象里昨天 pacman -Syu 也没什么特别的东西。去 /var/log/pacman.log 验证了一下也确实。kernel 从 4.2 升到 4.3 是去年 12/31 的事情,linux-firmware 升级是 1/4 的事情。无论如何先回滚到旧版本试试看。去 /var/cache/pacman/pkg 用 pacman -U 回滚了好几天的包。无效。

这种毫无征兆的随机死机难不成是硬件问题?按说这个 Dell E7450 是从公司更换的新本,不会这么快。但没有其他线索,还是先做排除法。先看 ssd。用 pacman -Qnq | pacman -S - 重新安装所有 package。无效。再看内存。Dell 的 BIOS 自带 MemTest 还挺贴心。全部跑通无误。

常见的诱因都排除了,又有出差的时间点,有点坐不住了。还有一招是放狗搜索,不过 desktop freeze 这种关键词必定是大海捞针。用手机搜了几下实在痛苦,接同事的本又搜了一些近期的 desktop freeze(Google 在搜索工具里可以限定时间范围,这个一定要利用),果然没啥收获。

如果硬件没有问题,那么一定软件的哪个层面或环节出了问题。tty 不会死机,所以 kernel 应该是无辜的。死锁之后连 Magic key 也不行,那么问题又确实应该出在 kernel space,X 和 Gnome 应该都是无辜的。这么分析下来,最有可能出问题的应该是——驱动?但是最近的包更新日志又没有驱动的更新记录。

继续做排除吧。从显卡开始。按 archlinux 的 wiki,先在 /etc/X11/xorg…