背景

去年捡了一台便宜服务器。由于便宜啥都没有,没有 DRAC、iLO 什么的,甚至没有 IPMI。但是作为一台正规的 Intel 平台服务器,CPU 自带了 Active Management Technology 可以用。

初始化

首先要 KVM 进去设置一下。

找一个显示器一个键盘插上开机。注意一定要给显示器通电,不然用不了。我就在这一步卡了好久。

进 BIOS > Advanced > AMT Configuration 把想开的东西开起来。

重启 Ctrl + P 进 MEBx(Management Engine BIOS Extension),主要也就是设个密码。默认密码 admin 输入后即提示修改。需要注意这里有隐藏要求:8-32 个字符,需包含数字、大写字母、小写字母、除空格和下划线外的 ASCII 符号(古老的 C216 手册 3.3)。不符合要求的密码会提示设置失败而不告知任何原因。我在这里也卡了许久。

然后重启,据说就可以用了。

那么怎么用呢?

搜索得知 AMT 的提供一堆服务。那么就先从 HTTPS (TCP 16993) 开始好了。首先找到服务器 IP,发现它从 DHCP 领了两个连号 IP,其中一个是能正常连上现有系统的,于是猜测另一个是 AMT 弄出来的,结果猜错了连不上。(依然不知道那个 IP 是怎么来的)

于是尝试正常 IP,发现也不行。后研究表明不安装证书时 HTTPS 不会启动。于是使用 HTTP (TCP 16992) 顺利连上并登录。

然而进去以后好像只能看看系统信息、关关机、重重启、设设置。这也太没用了吧!

上网转一转,看人家的高级用法都需要高级小软件,似乎都是 Windows 专供。好在有个叫 MeshCommander 的客户端提供了跨平台的 Node.js 版本。npm install meshcommander 安装后 node_modules/meshcommander 即可使用。

连上以后左边会慢慢多出各种功能,比如除了关机重启之外我们现在还能远程开机了。还可以远程桌面或者安装个证书啥的。

装系统

那么既然可以远程桌面,那么来装个系统看看。

找了个 ISO,在 IDER 中远程挂载成 CDROM,重启到 CDROM。缓慢安装,找不到网卡驱动,选择驱动,又选一遍驱动,磁盘分区失败……总之各种诡异的错误。

重试了一遍还是一样,但是感觉有点不对——怎么这么卡。

这里说是 IDER 会转发每个磁盘请求,那么搞不好就是一大堆小包,自然卡死。里头建议说可以用比如 netboot.xyz 之类的工具来两步 boot,启动一个小系统然后用科学的协议挂 ISO 或者把 ISO 上传过去什么的。

然而折腾了一会并没有成功,弄了个U盘过去插上果然快多了,各种错误也不见了。看来之前的错误可能只是某些操作过于缓慢于是超时失败了。在家里弄个U盘还是可以接受的,比起抱着显示器过去蹲地上干活可好多了。

黑屏

装好系统以后我就切换到 ssh 来玩耍了。最近弄坏了 networking.service 需要用 AMT 登录却看不到东西了。研究发现是没差显示器导致核显关闭啥都不输出了。这则 reddit post 指出可以购买假冒显示器插在机器上激活显卡。或者按照这则 serverfault 答案上说的安排 nomodeset kernel option。