liujia 发布的文章

初试 GPT-3.5 Poe 助手

约在一年前,王亮建议我多了解一下当时热门的 ChatGPT ,因为他觉得好玩,且较多人有这方面的需求。我不以为然,因为当时我觉得用谷歌搜索就够了,不必额外打开另一个页面或软件来做同一件事。

过年时,有个客户要求在阿里云的虚拟机上安装 FreeBSD 9.3 系统。FreeBSD 9.3 系统版本较老,是约在十年前发布的,阿里云官方提供的 FreeBSD 9.3 系统模板中,最低版本是 FreeBSD 11。我在年初一,尝试用常规的方法来安装 FreeBSD 9.3,但遇到了“拦路虎”—— FreeBSD 9.3 里自带的 VirtIO 驱动无法识别到阿里云新版本的虚拟机硬盘。经翻查资料,知道阿里云官方是提供了适合 FreeBSD 11 和 12 系统使用的 VirtIO 补丁,但没有旧版本 FreeBSD 9.3 的。

我要解决的问题,是如何修改阿里云的补丁,让它能在 FreeBSD 9.3 系统里使用。会读,会改程序代码,这是程序员必备的技能,但我仅是个“民工”,如同在电脑城里组装电脑的“师傅”,是装装 Windows 系统的菜鸟而已。哪怕是只有几行,几十个英文单词的代码,我都看不懂,不知道那是干什么用的。因为不知道怎么入手,很难用谷歌搜索关键字来查找到解决方法。我迫切地希望有个“老师”来给我讲解程序的代码。我想起 Poe 的“助手” ,抱着试试看的心态,一个问题接一个地向它提问,它解答了,且效果令我惊奇。我以前买过如《计算机C语音入门》之类的书,但根本没看懂,没学到一点儿的C语言编程知识,更没有实践紡程过,但现在“助手”它能即时讲解,内容简要并有指引性,我觉得它很实用,且3.5版本的 GPT 现在是免费的。

在这两个月的时间里,我先后两次通过工单请求阿里云客服让工程师花点时间为 FreeBSD 9.3 写个补丁,但他们拒绝了,说那是个很老的系统,新的虚拟化环境不支持,要用就得用老的虚拟机。阿里云官方不愿意写补丁,我又不好意思去 FreeBSD 官方社区里问,因为那儿写了,“结束支持的系统版本最好不要提问”。我只好每天,或隔几天,或在睡觉前,又或者在五、六点早醒时,断续着,在“助手”的帮助下,不断地尝试办法,推进测试的进度。例如,先从 FreeBSD 9.3 内核中的重编译过程中,剥离掉 VirtIO 模块,这样可以减少测试时编译所花的时间,仅重点测试 VirtIO 模块的编译和加载结果。然后又在不同的 FreeBSD 版本和不同的主机商虚拟环境中,测试 VirtIO 官方补丁的结果。最后,不断地在 VirtIO 补丁的程序代码中添加上 printf 的打印输出信息,看看驱动程序在加载过程中的逻辑和结果。得益于“助手”和谷歌搜索,滚泥水般反复测试,在约两个月后,我在阿里云实机测试,终于能成功运行 FreeBSD 9.3 系统。

在这件事情里,我没有写出程序代码,但在 GPT 助手的讲解和引导下,经过很多次的实机测试,再以测试结果中的关键词不断地在谷歌里搜索,最后查找到网友的解决方案。我对 GPT 助手的“博学多才”很惊讶,更难得的是,它“诲人不倦”啊,能一步步地为我讲解程序代码里的逻辑和函数(作用)。我是个“小白”,我对计算机编程是零基础的,但“助手”它能在我的普通提问中,让我了解了“中断”、“向量”等名词。如果这是在现实中,估计老师会对我的提问感到厌烦甚至是动怒,因为有时我是傻瓜般来回地提问。

GPT “助手”能给普通人在学习和了解知识上带来明显的效果。我希望以后能使用到它的场合越来越多,希望它能给社会带来普遍性的好处。

inbucket - apache - 反向代理 websocket 设置 - RequestHeader unset Origin

问题:如果想通过域名来访问 inbucket 的页面,在 apache 里设置反向代理后,inbucket 的 monitor 页显示 disconnected 。

尝试:Monitor 页的信息是调用 WebSocket 信息显示的,需要在 apache 的反向代理设置内容中,有相应的内容,如:

RequestHeader unset Origin  

RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:9000/$1 [P,L]

ProxyRequests Off
SSLProxyEngine on
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/

参考:

ubuntu 24.04 - pxe 安装 - unable to find a live file system on the network - 要用和iso文件匹配版本的 vmlinuz 和 initrd

问题:客户要求安装 ubuntu 24.04。我偷懒,直接复制原 ubuntu 22.04 的目录,然后替换其中的 iso 文件。实机操作提示出错,unable to find a live file system on the network , BusyBox initramfs。

尝试:需要从新版本iso文件casper目录中提出 vmlinuz 和 initrd 文件,替换旧版本的,因为两者要匹配,否则会报错。

参考:https://unix.stackexchange.com/questions/633218/unable-to-find-a-live-file-system-on-the-network-pxe-boot-ubuntu-from-centos

在阿里云云服务器上安装 FreeBSD 9.3 操作系统 - hw.pci.honor_msi_blacklist

问题:前些天,我再次通过阿里云的工单系统,请求工程师为 FreeBSD 9.3 的老旧系统打上 VirtIO 的补丁,以识别到云服务器的磁盘。客服的回复结论是:

6、7代实例底层环境不兼容旧版的 freebsd系统,freebsd 9系统早就eol了,后续也不会再更新相关的补丁了。如果确需使用freebsd 9.3系统,可以考虑如前面所说,使用5代或更早的实例规格,然后我们尝试从后台帮您迁移到KVM集群。

思考:我个人不太理解。首先,如 centos7 也是约在十年前发布的,但现在还能正常在阿里云5代以上的规格里使用。第二,具体到 freebsd 9.3,那是 virtio 的驱动问题,它的早期 virtio 驱动没有考虑到阿里云会自己另外定制虚拟机,不算是 freebsd 内核的问题,因为 virtio 可以从内核中剥离开,用 kldload 的方式动态加载。第三,freebsd 的 virtio 驱动也在不断进行更新,以适应更多的场景。它的源码是可以查询和获取的,所以您的工程师能在 freebsd 11.2的基础上添加上补丁。总之,这不是为freebsd的内核加补丁,只是为freebsd的virtio模块打补丁。工程师能为freebsd 11.2的virtio模块打上补丁,理论上也能为freebsd 9.3的virtio模块打上补丁。只是工程师愿不愿意花上一点时间而已,对于有经验的工程师来说,这很可能就仅仅是在操场上慢跑3~5圈的时间而已。但对于我个人来说,难得比爬天梯还难。

尝试:在谷歌搜索、poe 机器人、FreeBSD 相关文档 和 VirtualBox 的帮助下,在阿里云发布的 0001-virtio.patch 的补丁基础上,加入 hw.pci.honor_msi_blacklist=0 的参数,即可识别到硬盘。

FreeBSD 9.3 在阿里云ECS启动过程

参考:

买过了季节的柚子

昨天路过果园“好友超市”,听到促销的喇叭喊,其中一句“沙田柚一块钱一个”吸引了我。我走近一看,出口附近堆了一些用胶袋包着的柚子。胶袋显得旧了,隔着胶袋看到,柚子明显皮皱、缩了水。我站着犹豫了一下,没买。它虽然便宜,但我觉得这其中必有“猫腻”,认为收柚子的季节已经过好几个月,这些肯定不新鲜,便宜不会有好货。且我对前两次在“好友超市”买的“1.99元/斤,本地香蕉”和“0.99元/斤蕃薯”的经历颇有怨言。因为我买回来发现,香蕉和蕃薯的报价和当时“美团优选”上的一样,且货品还没美团上的好。

今天上午我买菜时,看到有的阿姨提着有柚子,难道它还可以吃?我隔了约两个小时,再走那条路,看到路旁的休息凳子上有两堆柚子皮,且只有柚子皮,没见肉,难道他们买了后,在路上剥开试吃了,且全吃下肚?因为地上光见有柚子皮,没见柚子肉。我贪心上来了,何不买个柚子试试?

我提了个柚子回家。上称,约1.5市斤,剥皮后剩约一半重。我还发现,外边胶袋上的那个红色印刷的“福”字,已经不仅“印”到了黄色的柚子皮上,还渗透进白色的柚子肉内皮。我打开柚子肉,果然,裂开的部分显示柚子水分已经跑光了,干干的条状柚子肉如同枯了的草,即使放进嘴里也嚼不出水分来。“如同嚼蜡”。唉……我远远提回来的一斤多柚子,剥开后,又要提下楼扔掉,费劲。贪便宜会吃亏的。