2024-04-06 17:41:50 +08:00
---
layout: post
title: 关于旧电脑的使用探索
tags: [旧电脑, Darling, whisper, Anbox]
---
性能差也不一定要淘汰!<!-- more -->
# 起因
最近我偶然得到了几台淘汰的废旧电脑, 试着重新拼装了一下, 发现还有4台电脑还能开机, 所以我想试试看这些旧电脑除了性能以外有什么该被淘汰的地方。
# 测试平台介绍
本次测试的4台电脑为了方便操作, 我都装了Linux发行版, Windows的话想要登录还要远程桌面太麻烦了, 以下是这些电脑的配置:
2024-04-06 17:43:54 +08:00
1. 装有 [Intel® Pentium® E5300 ](https://www.intel.cn/content/www/cn/zh/products/sku/35300/intel-pentium-processor-e5300-2m-cache-2-60-ghz-800-mhz-fsb/specifications.html ) CPU的电脑
2024-04-06 17:41:50 +08:00
```
.. root@localhost.localdomain
.PLTJ. --------------------------
< >< >< >< > OS: CentOS Stream 8 x86_64
KKSSV' 4KKK LJ KKKL.'VSSKK Host: G31M-ES2C
KKV' 4KKKKK LJ KKKKAL 'VKK Kernel: 6.8.1-1.el8.elrepo.x86_64
V' ' 'VKKKK LJ KKKKV' ' 'V Uptime: 2 days, 19 hours, 11 mins
.4MA.' 'VKK LJ KKV' '.4Mb. Packages: 953 (rpm)
. KKKKKA.' 'V LJ V' '.4KKKKK . Shell: bash 4.4.20
.4D KKKKKKKA.'' LJ ''.4KKKKKKK FA. Terminal: /dev/pts/2
< QDD + + + + + + + + + + + + + + + + + + + + + + + + GFD > CPU: Pentium E5300 (2) @ 2.600GHz
'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV GPU: Intel 82G33/G31 Express
' VKKKKK'. .4 LJ K. .'KKKKKV ' Memory: 597MiB / 2969MiB
'VK'. .4KK LJ KKA. .'KV'
A. . .4KKKK LJ KKKKA. . .4
KKA. 'KKKKK LJ KKKKK' .4KK
KKSSA. VKKK LJ KKKV .4SSKK
< >< >< >< >
'MKKM'
''
```
2024-04-06 17:43:54 +08:00
2. 装有 [AMD Athlon™ II X4 641 ](https://www.amd.com/zh-hans/product/1326 ) CPU 和 NVIDIA GeForce GT 440 的电脑
2024-04-06 17:41:50 +08:00
```
.-/+oossssoo+/-. mayx@mayx-server
`:+ssssssssssssssssss+:` ----------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 20.04.6 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Kernel: 5.4.0-174-generic
/ssssssssssshdmmNNmmyNMMMMhssssss/ Uptime: 1 day, 23 hours, 13 mins
+ssssssssshmydMMMMMMMNddddyssssssss+ Packages: 1276 (dpkg), 4 (snap)
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Shell: bash 5.0.17
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Terminal: /dev/pts/0
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ CPU: AMD Athlon II X4 641 (4) @ 2.800GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso GPU: NVIDIA GeForce GT 440
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Memory: 242MiB / 7925MiB
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
```
2024-04-06 17:43:54 +08:00
3. 装有 [Intel® Pentium® G3240 ](https://www.intel.cn/content/www/cn/zh/products/sku/80796/intel-pentium-processor-g3240-3m-cache-3-10-ghz/specifications.html ) CPU的电脑
2024-04-06 17:41:50 +08:00
```
.-/+oossssoo+/-. mayx@mayx-server
`:+ssssssssssssssssss+:` ----------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.4 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: H81M-S1
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.15.0-101-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 2 days, 19 hours, 58 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 984 (dpkg), 6 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.1.16
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/3
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Pentium G3240 (2) @ 3.100GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso GPU: Intel HD Graphics
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Memory: 371MiB / 3800MiB
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
```
2024-04-06 17:43:54 +08:00
4. 装有 [Intel® Xeon® E5-2620 ](https://www.intel.cn/content/www/cn/zh/products/sku/64594/intel-xeon-processor-e52620-15m-cache-2-00-ghz-7-20-gts-intel-qpi/specifications.html ) CPU的电脑
2024-04-06 17:41:50 +08:00
```
.-/+oossssoo+/-. mayx@mayxserver
`:+ssssssssssssssssss+:` ---------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.4 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: X79 0.9
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.15.0-101-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 18 hours, 41 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 773 (dpkg), 9 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.1.16
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Xeon E5-2620 0 (12) @ 2.500GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Memory: 8773MiB / 11928MiB
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
```
# 使用探索
其实对我来说,性能根本不是什么问题,毕竟想想即使是这些淘汰的电脑,性能也比树莓派强的多,包括对比上次买的[Luckfox Pico Plus](/2024/02/24/luckfox.html)来说就强的更多了,所以即使性能比较差的电脑也不是不能用。
不过这些老机器还是有一些坑的, 像第一台奔腾E5300的电脑, 我试了一下Ubuntu就装不上, 安装程序都打不开, 可能还是有一些有差别的地方, 所以安装了CentOS Stream 8。不过还好这些机器都是64位的CPU, 如果是32位的就更麻烦了, 可能很多包都没地方下载。
## 关于Darling的探索
那么对于这些机器来说干点什么好呢? 当然除了GPIO之类的, 树莓派能干的他们也能干, 所以要干就干一些特别的东西。我想了一下, 我平时用的电脑是macOS系统, 虽然给那些旧电脑装黑苹果可能不太现实, 但是我之前发现了一个叫[Darling](https://github.com/darlinghq/darling)的项目, 类似Wine那样在Linux上运行Windows程序, 这个项目可以在Linux上运行macOS的程序。看起来挺有意思的, 所以我打算在第一台机器上试着安装一下。
不过我按照官方文档上安装, 对于CentOS Stream 8来说有好多包不知道为什么似乎都没有, 比如libavformat-free-devel之类的, 我只好从网上找其他RedHat系列类似的包, 或者找替代品FFmpeg, 另外Darling需要Linux 5.0或者更高的内核, CentOS的内核版本太低了, 所以我升到了主线版本的Linux, 也就是6.8的版本……最终花了一天的时间终于编译好了, 然而悲剧的是运行的时候报了非法指令“Illegal instruction (core dumped)”的错误。一般来说这个错误是新机器上编译的程序在旧机器运行才会报的错,可我是在同一台机器上编译的为什么会报这种错误呢?可能是因为代码里包含汇编语言的代码吧。我发了个[Issue](https://github.com/darlinghq/darling/issues/1497)问了一下作者,不过看起来他也不知道是什么问题……
对于这种问题我感觉也没什么好办法……可能这台机器真的就没办法了? 在第二台速龙641的电脑上试了一下也不行……不过后来我在第三台装有奔腾G3240的电脑上试着编译安装了一下, 结果可以运行。看来确实是奔腾E5300的问题。不过它俩到底差在哪里呢? 看介绍会发现奔腾G3240里包含了Intel® SSE4.1和Intel® SSE4.2的指令集扩展。那么对于没有这个指令集扩展的CPU就没办法了吗? Intel官方给了一个解决方法是[Intel® SDE](https://www.intel.com/content/www/us/en/developer/articles/tool/software-development-emulator.html), 可以在旧机器上模拟运行使用了最新指令集的程序, 甚至包括AVX512都可以模拟的出来, 但是我用这个东西运行Darling的时候还是报错了, 可能Darling需要用到内核的一些特性, 但是SDE不能模拟……这都没办法是不是就彻底没办法了呢?
在偶然的一次浏览中,我发现了一个神奇的东西,内核扩展[OPEMU](https://github.com/mirh/opemu-linux), 它可以让不支持一些指令集扩展的CPU通过模拟的方式支持, 其实功能和SDE很像, 只是它是在内核中运行的, 我试着在第一台机器上编译安装了一下( 顺便一说, 如果是旧的5.x或者更早的Linux可以直接用这个仓库, 而更新的Linux比如6.x的需要用[PR](https://github.com/Spacefish/opemu-linux)中的这个仓库) , 结果Darling真的可以运行了! 真是令人难以置信。不过测试了一下, 可能还是有些地方有BUG, 比如用Git的时候会报错, 可能是和README中所说的CRC32表现有问题吧, 不过Darling好像可以直接运行Linux中的命令, 那我在用Git的时候调用Linux下的Git是不是也可以呢? 试了一下不太行, 因为执行Linux程序的时候不能用Darling中的目录结构, 不过我想装omz只需要/Users目录就够了, 我直接创建一个软链接把Darling的/Users目录映射到Linux的根目录就可以了吧, 试了一下还行, 可以正常运行, 虽然Homebrew不能安装有点可惜……不过Neofetch可以安装😆, 效果如下:
```
'c. root@localhost.localdomain
,xNMM. --------------------------
.OMMMMo OS: macOS 11.7.4 Darling x86_64
OMMM0, Kernel: 20.6.0
.;loddo:' loolloddol;. Uptime: 2 days, 21 hours, 11 mins
cKMMMMMMMMMMNWMMMMMMMMMM0: Shell: bash 3.2.57
.KMMMMMMMMMMMMMMMMMMMMMMMWd. DE: Aqua
XMMMMMMMMMMMMMMMMMMMMMMMX. WM: Quartz Compositor
;MMMMMMMMMMMMMMMMMMMMMMMM: WM Theme: Blue (Print: Entry, AppleInterfaceStyle, Does Not Exist)
:MMMMMMMMMMMMMMMMMMMMMMMM: Terminal: /dev/pts/2
.MMMMMMMMMMMMMMMMMMMMMMMMX. Memory: 0MiB / 2969MiB
kMMMMMMMMMMMMMMMMMMMMMMMMWd.
.XMMMMMMMMMMMMMMMMMMMMMMMMMMk
.XMMMMMMMMMMMMMMMMMMMMMMMMK.
kMMMMMMMMMMMMMMMMMMMMMMd
;KMMMMMMMWXXWMMMMMMMk.
.cooc,. .,coo:.
```
既然第一台电脑装了内核扩展还是有BUG, 那么对于第三台电脑来说总该没问题了吧, 试了一下Git可以正常运行, 安装Homebrew也没问题, 但是用brew安装软件的时候会报错, 似乎是因为Darling安装的Command Line Tools for Xcode太旧了, 有些命令没有所以不能正常安装, 不过Neofetch又不需要编译, 试着安装了一下没问题, 但是运行的时候会报Segmentation fault: 11 (core dumped)的错误……不知道是什么问题。
## 关于旧显卡利用的探索
对于第二台电脑, 可以看出来它有一张上古的独显NVIDIA GeForce GT 440, 我装好驱动之后运行nvidia-smi可以看到:
```
Sat Apr 6 08:26:45 2024
+------------------------------------------------------+
| NVIDIA-SMI 340.108 Driver Version: 340.108 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 440 Off | 0000:01:00.0 N/A | N/A |
| 40% 49C P0 N/A / N/A | 3MiB / 1023MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
```
既然是独显, 那么果然还是想试试看能不能跑机器学习的算法呢。可是一般来说执行上面的命令可以看到显卡支持的CUDA版本, 这个执行完并没有显示啊……那我要怎么用? 首先我想试试装个PaddleOCR试试看, 但就是因为不知道这个显卡到底能用哪个版本的CUDA, 也不知道安装哪个版本的PaddlePaddle框架, 更何况之前的机器学习算法对环境要求特别严格, 甚至系统新了都没法用, 于是在各种报错下我败下阵来, 放弃使用CUDA来用这张显卡😭……
但并不代表机器学习必须使用CUDA, OpenCL也是可以的啊, 正好我之前在测试OpenAI的ASR模型Whisper, 有人开发的一个C++使用这个模型的软件[whisper.cpp](https://github.com/ggerganov/whisper.cpp)是支持通过CLBlast使用OpenCL。于是我就先编译安装了CLBlast, 然后用对应的参数编译了whisper.cpp, 总算是能跑起来了, 后来看了一眼clinfo, 原来这张显卡才支持CUDA 6.5啊, 这能运行啥啊……最后试了一下效果也挺令人失望的, 就测试的那个音频用了大概33秒左右才转录完成, 果然旧显卡就是纯粹的垃圾啊。
## 关于Anbox Cloud的探索
现在轮到第四台至强E5-2620的电脑了呢, 这台电脑可不一般, 用的是服务器上用的CPU, 一看就是被奸商坑了, 买了个i9级处理器, 殊不知是淘汰的洋垃圾🤣。不过我手头用的服务器其实也没多好, 一台是[至强E5-2620v2](https://www.intel.cn/content/www/cn/zh/products/sku/75789/intel-xeon-processor-e52620-v2-15m-cache-2-10-ghz/specifications.html)(双路),另一台是[至强E5-2620v3](https://www.intel.cn/content/www/cn/zh/products/sku/83352/intel-xeon-processor-e52620-v3-15m-cache-2-40-ghz/specifications.html)(也是双路)(一二三代都有了🤣):
```
.-/+oossssoo+/-. mayx@mayx-server
`:+ssssssssssssssssss+:` ----------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.3 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: NF5270M3 00001
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.15.0-78-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 84 days, 22 hours, 20 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 954 (dpkg), 4 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.1.16
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1440x900
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Xeon E5-2620 v2 (24) @ 2.600GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ GPU: 0b:00.0 ASPEED Technology, Inc. ASPEED Graphics Family
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Memory: 68987MiB / 128875MiB
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
.-/+oossssoo+/-. mayx@mayx-algo-server
`:+ssssssssssssssssss+:` ---------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.3 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: PowerEdge R730
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.15.0-91-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 84 days, 20 hours, 16 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 1047 (dpkg), 4 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.1.16
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1024x768
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Xeon E5-2620 v3 (24) @ 3.200GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ GPU: NVIDIA Tesla T4
.ssssssssdMMMNhsssssssssshNMMMdssssssss. GPU: NVIDIA Tesla T4
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Memory: 66345MiB / 128808MiB
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
```
都是正儿八经的洋垃圾,不过对于服务器嘛,垃圾一点也没什么,又不是不能用,至少比租的云服务器好吧。
不过既然是服务器级的CPU, 自然实验也得要符合服务器级( 这个级别的处理器就不用担心什么指令集缺失之类的问题了) , 正好最近注册了个Ubuntu Pro, 里面有个Anbox Cloud, 可以拿来试试看。
关于Anbox, 我之前[试过Waydroid和redroid](/2023/12/24/android.html), 不过Anbox Cloud不太一样, 这个有点像OpenStack那样, 是云手机的管理和实现平台, Anbox对它来说就像QEMU对OpenStack, 是创建实例的工具。安装还挺简单的, 启用Ubuntu Pro之后再执行`sudo pro enable anbox-cloud`, 剩下的跟着提示走就行了, 不过因为我的硬盘有点问题, 有一半的区域有坏块, 虽然屏蔽掉了但还是有些问题, 第一次安装失败了, 第二次才成功。不过应该说不愧是云平台吗, 用起来和我当年学OpenStack在虚拟机里安装一样卡, 而且啥也没干先占掉8GiB内存, 尤其是对这个又老, 内存也小的垃圾旧机器来说果然还是有点勉强啊, 更何况硬盘还是坏的🤣。安装好之后用浏览器直接输入IP就能登录平台了, 第一次使用要绑定Ubuntu One账号, 感觉有点不开放啊……登录之后可以上传应用作为模板, 类似镜像那样, 可以在创建会话的时候使用相同的镜像, 然后每个会话之间是隔离的。不过有个问题是这个东西居然没有ARM兼容层, 上传不兼容x86_64的软件会不允许创建应用😅, 这有点废物啊, 难不成想用这个东西搭个云手机厂商还要买一堆ARM的服务器? 之后我找了半天发现Via浏览器可以兼容所有架构的处理器, 上传上去之后又报错一次😅, 重新再上传才算正常运行起来了。
# 感想
经过这次的测试, 可以看出来这些旧电脑其实安装了Linux发行版之后除了会遇到一堆莫名其妙的问题之外, 并不是不能用, 顶多是卡了一些, 或者要花点精力解决罢了。其实这么看来, 除了人工智能方面的发展确实受到了硬件方面的制约, 其他的程序其实都无所谓呢? 即使是现在的软件放到以前的电脑上也能运行, 不知道是软件发展的太慢, 还是兼容性做的太好了呢?