准确地说,也是我闲着蛋疼,想试试 AWS 跑 Xmrig 的算力如何。结论说在前面,别指望用 AWS 挖矿赚钱,本都回不了。不过,编译 Xmrig 的过程确实值得记录一下。
首先,AWS 的实例有两种虚拟化形式,一种是 HVM,另一种是 PV,两个都是基于 Xen 的架构,一种比较好理解的方式就是将 HVM 比作 KVM,而 PV 就相当于 OpenVZ,是一种共享内核的架构。
如果要使用一些比较老的实例类型,比如 m1 c1 这样的实例,很可能遇到一种情况,就是他们不支持 HVM 全虚拟化架构,需要使用 PV 半虚拟化,但是问题在于 AWS 现在已经逐步移除对 PV 的支持,仅仅剩下 Amazon Linux 还可以使用这个架构,没有我比较熟悉的 Ubuntu。这给我尝试编译造成了比较大的麻烦。不过好在毛球的文档比较齐全,还是有惊无险地搞定了。
首先处理依赖,Amazon Linux 使用 yum 包管理器,也就是 RHEL/CentOS 用的那款,说实话我不是很喜欢,不过也没办法。此外,虽然使用 yum,其源包库并不是 CentOS 的,这个要注意。
sudo yum install -y epel-release sudo yum install -y git make cmake gcc gcc-c++ libstdc++-static libmicrohttpd-devel libtool curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src cd /usr/local/src/libuv-1.8.0 sudo sh autogen.sh sudo ./configure sudo make -j$(nproc) sudo make install
Xmrig 的编译需要 libuv-static 这个包,很遗憾 AWS 源中并没有这个包,我们只能选择编译安装,命令如上所示。
之后则是比较通用的 git clone 部分,注意去除作者的强制捐赠选项。
git clone https://github.com/xmrig/xmrig vi xmrig/src/donate.h # constexpr const int kDonateLevel = 0; vi xmrig/src/Options.cpp # case 1003: /*donate-level*/ # if (arg < 0 || arg > 99)
之后进行编译
cd ~/xmrig sudo ldconfig mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DUV_LIBRARY=/usr/local/lib/libuv.so make -j$(nproc)
这样就搞定了,再次重申一次,即使使用最便宜的上一代实例 c1 或者 m1(w/o AES-NI),也不可能回本,挖出的矿最多就是实例费用的一半,所以想发财的人,还是别看这篇文章了。