开发机重整计划 Day 2
PS: 之所以昨天没有发 Day 1 的日记,是因为 Day 1 的时候我还没连上网
前些日子开发机状况频出,不是硬盘小文件读写速度奇慢无比,就是网络爆炸获取不到 IP,要不然就是各种窗口卡死(没错,taskmgr 跟着一起卡的那种,感谢阿三程序员的杰作),十分影响体验。每天开机先修锅.jpg
经过思想挣扎,决定买一块星星星 990 PRO 来把联想自带的系统盘换掉,并且把自带的系统也一并扬掉(之前电脑刚买来的时候偷懒没重装系统,只花了一段时间调整自带的系统,删除了联想{电脑,软件}管家等等垃圾 软件)。
于是成功的在换硬盘的时候把卡扣拆坏了。
装系统的流程就不再重复了,装好以后按照惯例先装火绒(伏笔),然后打驱动。
驱动打着打着,发现 Windows Defender SmartScreen 开始提示无法连接,以为是校园网抽风,结果打完以后发现之前旧系统联网后无法获取 IP 的老毛病又出现了。流汗黄豆.jpg 这下问题找到了,原来是驱动就有问题啊。那好吧,用 pnputil 卸载了得了。
卸载完了发现问题并没有解决。这下尴尬了,莫非是哪些修改没有被还原?于是乎,经过一个多小时的尝试后,决定从头再来一遍。在再次重装之前,突然想到了有的驱动安装以后会自动创建还原点,遂进入 WinRE 尝试还原。结果发现联想给的驱动好像一个也没创建,反倒是火绒建了一个。果然给力!这下不用再吃一遍 OOBE 的 shit 了,大大的好评!
接下来我学乖了,装一个驱动就打一个还原点,于是 —— 在装完无线网卡驱动以后,我成功地发现,网!又!炸!了!好你个美帝良心想,给的原厂驱动还不如 Windows 自己匹配出来的靠谱。于是一气之下还原到没打驱动的状态,反正插着网线,让 Windows 自己匹配去吧。
事实证明 Windows 匹配出来的确实比联想给的靠谱。除了 Intel Arc Control 和 NVIDIA Control Panel 需要自己下载以外,其他的都非常完美 —— 吗?诶?人脸识别怎么又炸了,明明 OOBE 的时候还是好的。好在不是特别影响使用体验的问题,暂且按下不表。
经过这么一周遭折腾,系统层面上基本好了。接下来装好浏览器发挥完 Edge 作为 Chrome 下载器的使命 以后,已经晚上十一点多了,遂进行一个觉的睡。
第二天一早睡醒觉,我又神清气爽地投入到了令人头大的造灵车工作中(至于为什么说是造灵车,是因为经过半年的久远历史发展,有的环境配置技艺已经失传)。把 WSL 装好以后,发现 WSL2 的 mirrored network mode 与开启了 TUN Mode 的 Clash for Windows 八字不合,导致 WSL 的网络访问叒挂了。上网搜索未果,遂先安装了 Windows 侧的常用软件和蓝牙 LDAC 驱动(没错,Windows 默认不支持 LDAC 协议)。
上了节高数,吃了顿午饭,睡了会午觉,我又把视线转回了这没网的 WSL。开 NAT 模式可以解决上网的问题,但是不太好解决上互联网的问题。于是又经过了一段时间的搜寻,我翻到了 一篇帖子 解释了为什么会产生冲突 —— Clash 的 TUN Mode 创建的网卡的默认 MTU 会被设置为 9000,把它改成 1500 就正常了。但显然帖子里提到的通过启动脚本进行 patch 的方案有一些 dirty,于是打算从 Clash 侧下手(正好给我了一个机会换掉已经停更的 Clash for Windows)。于是经过一系列的研究决策,我决定尝试一下 Clash Verge。迁移现有的配置花了一段时间,不过由于内核配置相似,所以大部分时间其实花在了外围配置上面了。哦对了,帖子里没有提到的是,TUN Mode 的 stack 需要设置为 gvisor,不然也是无法上网的。
剩下的时间我把旧系统上的 oh-my-zsh 配置和 code signing toolchain 迁移到了新装的 WSL 内,又安装了一些常用的编译器和运行环境,把 VMware、Docker Desktop、WSA 也简单配置了一下。
说句题外话,我在 11 月的帖文 中提到的搜狗输入法的问题,在安装了旧版搜狗输入法(9.8a)以后显著缓解,同时也没有了一系列「AI 助手」「磁盘工具」「PDF 大师」等看似不合理实则合情的「插件」。
至此,我的基础开发环境就已经基本重新搭建完毕了,不至于无法应付突发情况。至于部分非高频工具链以及损坏的功能组件,则仍要等待计划的继续进行,才能有时间进行处理。
不知不觉洋洋洒洒写了这么多的流水账,感觉也可以算得上是经验分享了,希望频道的读者能够在遇到与我类似的情况的时候能够有的放矢,手到 bug 除!
前些日子开发机状况频出,不是硬盘小文件读写速度奇慢无比,就是网络爆炸获取不到 IP,要不然就是各种窗口卡死(没错,taskmgr 跟着一起卡的那种,感谢阿三程序员的杰作),十分影响体验。
经过思想挣扎,决定买一块星星星 990 PRO 来把联想自带的系统盘换掉,并且把自带的系统也一并扬掉(之前电脑刚买来的时候偷懒没重装系统,只花了一段时间调整自带的系统,删除了联想{电脑,软件}管家等等
装系统的流程就不再重复了,装好以后按照惯例先装火绒(伏笔),然后打驱动。
驱动打着打着,发现 Windows Defender SmartScreen 开始提示无法连接,以为是校园网抽风,结果打完以后发现之前旧系统联网后无法获取 IP 的老毛病又出现了。
卸载完了发现问题并没有解决。这下尴尬了,莫非是哪些修改没有被还原?于是乎,经过一个多小时的尝试后,决定从头再来一遍。在再次重装之前,突然想到了有的驱动安装以后会自动创建还原点,遂进入 WinRE 尝试还原。结果发现联想给的驱动好像一个也没创建,反倒是火绒建了一个。果然给力!这下不用再吃一遍 OOBE 的 shit 了,大大的好评!
接下来我学乖了,装一个驱动就打一个还原点,于是 —— 在装完无线网卡驱动以后,我成功地发现,网!又!炸!了!好你个美帝良心想,给的原厂驱动还不如 Windows 自己匹配出来的靠谱。于是一气之下还原到没打驱动的状态,反正插着网线,让 Windows 自己匹配去吧。
事实证明 Windows 匹配出来的确实比联想给的靠谱。除了 Intel Arc Control 和 NVIDIA Control Panel 需要自己下载以外,其他的都非常完美 —— 吗?诶?人脸识别怎么又炸了,明明 OOBE 的时候还是好的。好在不是特别影响使用体验的问题,暂且按下不表。
经过这么一周遭折腾,系统层面上基本好了。接下来装好浏览器
第二天一早睡醒觉,我又神清气爽地投入到了令人头大的造灵车工作中(至于为什么说是造灵车,是因为经过半年的久远历史发展,有的环境配置技艺已经失传)。把 WSL 装好以后,发现 WSL2 的 mirrored network mode 与开启了 TUN Mode 的 Clash for Windows 八字不合,导致 WSL 的网络访问叒挂了。上网搜索未果,遂先安装了 Windows 侧的常用软件和蓝牙 LDAC 驱动(没错,Windows 默认不支持 LDAC 协议)。
上了节高数,吃了顿午饭,睡了会午觉,我又把视线转回了这没网的 WSL。开 NAT 模式可以解决上网的问题,但是不太好解决上互联网的问题。于是又经过了一段时间的搜寻,我翻到了 一篇帖子 解释了为什么会产生冲突 —— Clash 的 TUN Mode 创建的网卡的默认 MTU 会被设置为 9000,把它改成 1500 就正常了。但显然帖子里提到的通过启动脚本进行 patch 的方案有一些 dirty,于是打算从 Clash 侧下手(正好给我了一个机会换掉已经停更的 Clash for Windows)。于是经过一系列的研究决策,我决定尝试一下 Clash Verge。迁移现有的配置花了一段时间,不过由于内核配置相似,所以大部分时间其实花在了外围配置上面了。哦对了,帖子里没有提到的是,TUN Mode 的 stack 需要设置为 gvisor,不然也是无法上网的。
剩下的时间我把旧系统上的 oh-my-zsh 配置和 code signing toolchain 迁移到了新装的 WSL 内,又安装了一些常用的编译器和运行环境,把 VMware、Docker Desktop、WSA 也简单配置了一下。
说句题外话,我在 11 月的帖文 中提到的搜狗输入法的问题,在安装了旧版搜狗输入法(9.8a)以后显著缓解,同时也没有了一系列「AI 助手」「磁盘工具」「PDF 大师」等看似不合理实则合情的「插件」。
至此,我的基础开发环境就已经基本重新搭建完毕了,不至于无法应付突发情况。至于部分非高频工具链以及损坏的功能组件,则仍要等待计划的继续进行,才能有时间进行处理。
不知不觉洋洋洒洒写了这么多的流水账,感觉也可以算得上是经验分享了,希望频道的读者能够在遇到与我类似的情况的时候能够有的放矢,手到 bug 除!
开发机重整计划 Day 3
PS: 旧文新发,但是有扩充。
之前折腾&使用了很久的基于 wsl2-ssh-pagent 的 WSL2 与 Windows 的物理安全密钥互通方案。这个方案不仅不稳定,要想让它跑起来还需要加各种 dirty hack,比如开机先带起来 gpg-agent、再启动 WSL 内的 socat 转发、且需要确保二者时序不能出现混乱、中间不能有其他自启程序执行,还要加上禁掉 WSL 内的 gpg-agent 防止它在签名的时候被错误呼起等等操作。总而言之就是非常灵车。
我既然发文章来说这个事情,读者们应该也已经能够猜到,肯定是有更高更妙的解决方案的。
众所周知,在 Git 的配置选项中是可以指定调用的 GPG 程序的。我最开始以为这个行为还是会依赖 Linux 环境下面的 GPG socket(因为不了解具体的原理,而且我也没有多少操作系统底层知识),所以未经尝试就直接开始折腾 socket 转发的操作了,其实不然。
查阅 Git 源码中与签名逻辑直接相关的 gpg-interface.c 可以找到与调用 GPG 直接相关的函数 sign_buffer_gpg()。这个函数的结构并不复杂,其实就是构造所需的参数,然后使用
所以,事情到这里就变得非常清晰了 —— 直接调用 Windows 上的
至此,我才理解了「the Interoperability between Windows and Linux commands」的真正含义,不得不感叹,这真是一个精妙的设计。
PS: 旧文新发,但是有扩充。
之前折腾&使用了很久的基于 wsl2-ssh-pagent 的 WSL2 与 Windows 的物理安全密钥互通方案。这个方案不仅不稳定,要想让它跑起来还需要加各种 dirty hack,比如开机先带起来 gpg-agent、再启动 WSL 内的 socat 转发、且需要确保二者时序不能出现混乱、中间不能有其他自启程序执行,还要加上禁掉 WSL 内的 gpg-agent 防止它在签名的时候被错误呼起等等操作。总而言之就是非常灵车。
我既然发文章来说这个事情,读者们应该也已经能够猜到,肯定是有更高更妙的解决方案的。
众所周知,在 Git 的配置选项中是可以指定调用的 GPG 程序的。我最开始以为这个行为还是会依赖 Linux 环境下面的 GPG socket(因为不了解具体的原理,而且我也没有多少操作系统底层知识),所以未经尝试就直接开始折腾 socket 转发的操作了,其实不然。
查阅 Git 源码中与签名逻辑直接相关的 gpg-interface.c 可以找到与调用 GPG 直接相关的函数 sign_buffer_gpg()。这个函数的结构并不复杂,其实就是构造所需的参数,然后使用
pipe_command
函数去调用 config 中的 gpg.program
去进行签名,最后从调用输出中解析签名结果 or 错误信息。从整套 sign_buffer
的调用来看,全程只进行了 stdio 交互,不依赖任何 socket 调用。所以,事情到这里就变得非常清晰了 —— 直接调用 Windows 上的
gpg.exe
就可以顺利地完成签名了!当然,在我 8 月份换到 S/MIME 证书签名以后,应该调用的是 smimesign.exe
。至此,我才理解了「the Interoperability between Windows and Linux commands」的真正含义,不得不感叹,这真是一个精妙的设计。
baoshuo.ren, baoshuo.dev 等域名及其子域名的 SSL 证书部署出现了问题,导致相关服务无法访问,目前正在修复中。
时间线 (UTC+8)
2025/02/07 15:11 问题出现
2025/02/07 15:13 人工介入
2025/02/07 15:15 定位异常代码
2025/02/07 15:15 上线新版证书部署程序
2025/02/07 15:16 问题解决,大部分服务恢复
2025/02/07 15:48 全部服务恢复
#outage
时间线 (UTC+8)
2025/02/07 15:11 问题出现
2025/02/07 15:13 人工介入
2025/02/07 15:15 定位异常代码
2025/02/07 15:15 上线新版证书部署程序
2025/02/07 15:16 问题解决,大部分服务恢复
2025/02/07 15:48 全部服务恢复
#outage
【河北省石家庄无线电监督执法局宣】2025年2月13日是全球第十四个“世界无线电日”,主题为“无线电与气候变化”。电波卫士提示高效利用频谱资源,依法使用无线电频率、设置无线电台(站),维护空中电波秩序,服务经济社会高质量发展。
#sms
#sms