一个三无工控机的折腾日记

前言

之前给人做一个快递柜控制系统留下的样机,把外面的铁壳子扔了,留下了里面的工控机,这个机器自带的某国产“优化增强版”Windows 7,启动要半个小时,进入系统映入眼帘的就是各种垃圾网页游戏弹窗,以及一大堆捆绑软件在桌面上,这还是“出厂”自带系统,不知道这个厂家负责装系统的人员是不是此类国产优化版系统的长期受害者。既然是工控机,就对配置没啥期望,打开设备管理器,果然n2840的CPU,还行吧,少说也是个多核处理器,内存4GB。只有一个网口,搞不了软路由,但是USB口居然高达5个(但是只有1个是USB3),拿来外挂硬盘做NAS应该还行。内置硬盘是一个mSATA的32GB闪迪的SSD。

折腾之旅开始

既然做NAS,首先考虑的就算是黑群晖了。网上找了篇教程,看着挺简单,跟装Windows差不多,只不过它是做成了img镜像,用类似linux下dd的工具把这个镜像写入U盘就能引导了。

踩无数坑

然而,事情发展没有想象的顺利。
这破工控板开机提示按DEL键进入BIOS,按ESC或者F11进入启动菜单,然而我把键盘都快按爆了,都不理我,我怀疑是不是这个BIOS开机是不是不初始化USB控制器,只能识别PS2键盘,不认USB键盘,问题是它也没有PS2接口,我也没有PS2键盘啊。好吧,那我先用U盘做引导。
因为默认启动顺序是内置SSD优先,只能先把内置了“优化增强版”的SSD拆了,看U盘能不能“顺位”接替启动。
然而我想得太美好了,拆掉了内置SSD以后,直接进入EFI Shell了,感情除了内置SSD,第二顺位就是EFI Shell了吧,这可咋整。于是我干脆拆了它,然后尝试清空COMS看能不能有幸让优先从USB设备启动。拆开设备外壳,发现居然没有清空COMS的跳线,于是用最古老的办法——抠电池。
然而我又错付了,清空COMS以后,现在启动顺序优先EFI Shell了,就算把SSD装回去,启动以后还是优先进入EFI Shell,这就操了。要是之前,好歹还能SSD优先启动,大不了把SSD拆下来用其它电脑装好系统再塞回去。现在可好,开机优先进入EFI Shell,又进不了BIOS改启动顺序……
事已至此,死马当活马骑,大不了每次开机都通过EFI Shell输命令来启动EFI引导吧。现学EFI Shell的用法,了解如何挂载硬盘,如何执行EFI程序就行了。在EFI Shell里手动执行grub的EFI引导程序,顺利引导。安装黑群晖的过程没有遇到任何问题。
到这一步了,用起来应该没啥问题了,毕竟NAS也不需要经常重启吧。
但是即便NAS并不需要频繁重启,强迫症让我无法接受每次开机都要手动在EFI Shell里输入命令来启动引导。于是网上各种搜索无法进入BIOS的问题的解决方案。
关键是这个工控机厂家不明,主板厂家也不明,根本无从搜索,搜索到相关的问题,比如Intel的NUC也有人反应开机键盘无反应,无法进入BIOS的,键盘只在启动系统以后才有反应,刚好也是bay trail凌动的方案,简直跟我遇到的状况一模一样!官方的说明是因为BIOS开启了快速启动,所以开机跳过了USB设备的检查,解决办法是长按电源键3秒开机,就能关闭快速启动。所以我以为找到了最终解决方案,然而我尝试了不下于20次,都没能“关闭所谓的快速启动”,没有任何作用,开机键盘的大小写都能切换,然而依然进不了BIOS或者启动菜单,仿佛开机显示的那个按键提示是随便写的一样,于是我把F1-F12都试了一遍,全都没反应。所以应该不是按键不对的问题了,而就是这个BIOS开机不认键盘的输入。
既然是EFI引导的,那我记得可以在系统中设置EFI引导顺序,甚至在系统中设置下次开机直接进入BIOS,于是做了个Win PE,用引导工具,发现真的可以让EFI下次启动直接进BIOS。
于是,真的进入BIOS了,熟悉的经典的蓝色皮肤的AMI的BIOS,然而,键盘依旧不起作用!我操了!
但是首页让我看到了一个信息,Project Name,项目名称?RZBYT1 v0.26? RZBYT是什么鬼,认证避孕套?去百度搜索,发现当我输入RZBYT的时候,已经有前人搜索过了。
微信截图_20221117042719.png
我以为我能顺藤摸瓜,找到厂家信息,甚至能找到问题解决办法,然而,除了前人搜索过以外,搜索结果里没有任何相关内容。使用谷歌搜索,搜到了ebay上有人卖这个二手板子的。再也没其它有用信息了。
问题回到原点,于是我在想会不会换个USB接口就好了,我把5个接口挨着试了一遍,但是开机依旧没反应。

最终结局

折腾了很久,直到无意中,我在BIOS界面下,不重启的情况下,直接换USB接口,擦,居然有反应了。这什么鬼问题?!?!
也就是说:如果键盘在开机前就已经插上USB接口了,开机的时候反而会没反应,在开机以后,再插,BIOS反而有反应了。我都怀疑这是谁故意这么搞的?我记得这种工控板重装系统是要收费的,难不成故意搞这种幺蛾子让一般人用一般的方法装不了系统,所以以此牟利?除此之外我实在想不明白咋个会有这种BUG,只能是有人故意为之了。
验证了一下,先拔掉键盘,开机出现了bay trail的标志以后,以最快的速度插入键盘,然后按DEL键,顺利进入BIOS了,再也不需要通过设置EFI来进入BIOS了,强迫症终于舒服了……

在Arm服务器上部署OpenIM

克隆代码库

# v2.0.6是版本号
git clone https://github.com/OpenIMSDK/Open-IM-Server.git -b v2.0.6 --recursive 

并且删除makefile里的arch设置

cd Open-IM-Server
sed -i 's/ GOARCH=amd64//' cmd/*/Makefile
sed -i 's/ GOARCH=amd64//' cmd/rpc/*/Makefile

编译

cd script
chmod +x *
./build_all_service.sh

安装etcd

wget https://github.com/etcd-io/etcd/releases/download/v3.5.3/etcd-v3.5.3-linux-arm64.tar.gz
tar xzvf etcd-v3.5.3-linux-arm64.tar.gz
mv etcd-v3.5.3-linux-arm64/etcd /usr/bin/
mv etcd-v3.5.3-linux-arm64/etcdctl /usr/bin/
chmod +x /usr/bin/etcd /usr/bin/etcdctl

安装kafka

wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
tar xzvf kafka_2.13-3.1.0.tgz

运行

./start_all.sh

检查服务

./check_all.sh

又一个配电脑的故事

很久没有理这个博客了,已经没有写技术相关的热情,仅供“牢骚”。
今天让我想起了另一个配电脑的故事,上一个故事是给亲戚配电脑,这次的故事是给一个不熟的人。
一年前有个不是很熟的人让我帮他配电脑,给6000的预算,然后我大概给他说了一下预算分配,
CPU 1300元,主板700元,显卡2500元,机箱200元,散热器200元,内存500元,硬盘500元,加起来5900元,
因为本来价格都在波动,所以不可能把每个部件的价格算得那么精细。
他觉得完全没问题,还说相信我balabalabala,接着支付宝转给我6000,说多出的100是辛苦费。
实际上,价格怎么可能刚好5900那么多,总价接近6200多,我各种凑优惠,还用上了自己的会员优惠券,实际总共花费6086元,考虑到有100左右的返利,算是5986元吧,
好吧,“赚了”14元辛苦费,就当帮朋友个忙。
但是麻烦才刚刚开始,后来他觉得显卡不合适(因为他朋友以为显卡是2500的预算,就给他推荐了另一个2500多的显卡),就让我退了,说要换另一个,他那个朋友在网上帮他重新买了,
要退的那个显卡因为优惠,我当时实际花费2270元,省下来的200多元钱给他加大了内存,然后退款成功以后我就直接转给他2270,他就问我,不是显卡2500么,你怎么才退我2270,我听他那语气,我心里一凉,感觉我当了冤大头,我给他解释:当初给他说的2500是预算,实际显卡没有花到2500元,然后省下来的钱我帮你升级了其它配置,他就回了个“哦”,我也不知道他这个“哦”是什么意思。于是我截图给他看,结果不截图不要紧,截了图更说不清了,订单里显示的是原价,减的金额是支付环节减的(信用卡满减和支付券),越解释越复杂,他也没有听我解释的意思,反正感觉起来好像是抓到贼,贼在辩解一样,我就是那个“贼”,这下我是真的跳进黄河洗不清了。解释了半天,那边不理解,他总是觉订单显示的的那个2370是优惠后的价格,所以我应该退他2370,我都把退款记录给他看了,确实是退的2270,最后我懒得解释,直接加100按2370退给他了,于是我的妥协成为了“承认我是贼”。
我以为我赚了14元辛苦费,结果最终倒贴100进去,还做了回“贼”。
每当想起那天为了给他省钱,准时守到电脑前面,抢优惠,我就觉得自己很可笑,当初辛苦给一个不熟的人抢的优惠,最后成了我自己的坑。
如果我成心要坑他,我有很多种把他坑了他还觉得很划算的办法,进而让我想起以前朋友的一句话:真正的奸商,是把你坑了,你还觉得自己占了便宜。
以前看电视剧、电影,一些“好人”因为一些冤枉就突然“黑化”,以前无法理解那种心境。
做“贼”,如果没被抓,那就“赚”了,如果被抓,那也是理所当然,也不亏;
做个“好人”,如果别人懂你,那是刚刚好,如果别人冤枉你,你就做了好事还被人恶心。
于是:做坏人永远不亏,做好人可能受罪。这也成了奸商、渣*的格言。

感觉我写了一篇毒鸡汤,那件事情以后我并没有因此黑化,只是我开始拒绝帮助那些不相信我的人。
如果你相信我,请你相信我,如果你不相信我,请不要告诉我,你相信我。

这只是我的视角,如果是那个人的视角,他觉得我补这100是应该的,也是对的,错的在我,实在不行,错也错在我解释不清楚上。

解决精简版系统Arduino驱动安装问题

问题

一部分人反馈说他们无法正常安装Arduino的驱动,安装完Arduino驱动以后,设备管理器里Arduino设备出现感叹号,无法正常启用。设备状态中出现错误信息:

Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)

找不到对象名。

或者:

Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。 (代码 52)

解决

出现这个问题的主要原因是:Arduino的驱动程序依赖于Windows系统自带的USB串口驱动,精简版系统精简或者替换了USB串口驱动,导致Arduino的驱动无法加载这个依赖而工作不正常。为此我封装了一个Arduino的驱动程序,并且自带修复Windows自带串口驱动程序的功能,涵盖Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10等系统,包括各个SP版本。
下载地址:https://pan.baidu.com/s/1gfaPp4n
使用方法:下载以后,直接运行压缩包中的程序即可,修复系统自带驱动以及安装Arduino驱动过程中,可能会有安全软件提示修改系统文件,请选择允许。