ESXi ARPL 安装黑群晖
一、ARPL 介绍
ARPL 全称 Automated Redpill Loader
, 从名字可以看出其基于 Redpill 项目; 使用 ARPL 的优势在于:
- 直接提供 ESXi 引导盘
- 基本全自动完成修复
- 提供友好地交互 UI
- 支持常用插件集成
- 基本一致保持在最新版本
二、初始化虚拟机
2.1、下载 ARPL
由于 ARPL 直接提供 ESXi 的磁盘镜像, 所以我们直接从 Release 页面下载最新的磁盘镜像即可:
2.2、创建虚拟机
因为黑群晖需要安装在虚拟机中, 所以我们就需要先创建一下用于运行黑群晖的虚拟机, 不过在创建时有些选项需要调整:
- 1、虚拟机名称随意, 客户机操作系统选择 Linux, 内核选择 “其他 4.x Linux(64 位)”
- 2、内存需要至少 4G, 且最好选择锁定内存(勾选预留所有客户机内存), 如后续采用 PCIE 直通则此步骤是必须的
- 3、不要额外创建其他硬盘, 默认创建的 “硬盘1” 磁盘控制器切换到 SATA 0:0
- 4、删除默认的 SCSI 控制器还有 CD/DVD 驱动器
- 5、引导选项必须设置为 BIOS 引导
- 6、如果有购买的洗白码的话, 最好再添加一个网卡(新增网络适配器)
具体请看下面的截图:
2.3、上传磁盘
创建好虚拟机后, 需要使用下载的 ARPL 磁盘替换默认的启动磁盘, 在替换之前需要将我们下载的磁盘上传到 ESXi 虚拟机目录(先自行解压 ARPL zip 文件):
- 1、首先在存储选项中找到虚拟机目录
- 2、在虚拟机目录中点击上载
- 3、上传两个 arpl 磁盘文件, 上传成功后将只显示一个
2.4、调整启动盘
我们需要使用 ARPL 的磁盘作为引导盘, 所以需要将默认的 “硬盘1” 替换为上传的 ARPL 磁盘; 这个替换操作一般两种方式:
- UI 添加: 直接在 UI 界面编辑虚拟机, 删除掉 “硬盘1”, 然后使用 “添加现有硬盘功能” 选择上传的 ARPL 硬盘
- 命令该配置: 先取消注册虚拟机, 然后 SSH 到 ESXi 宿主机通过直接编辑
vmx
文件更改 “硬盘1” 配置
说下两者优缺点, 无疑第一种方式是最简单且好用的, 但是测试在 ESXi7+ 版本似乎没法识别 ARPL 的硬盘, 保存时会报错(测试是 UI BUG, 自己创建的硬盘重新导入也不行); 而第二种方式经过测试直接修改是完全没问题, 且在 ESXi8 上也没问题(第一种 ESXi8 一样不能用).
所以这里采用更通用的第二种方式, 直接修改 vmx 文件:
- 1、首选在虚拟机列表中找到虚拟机, 右键 “取消注册”
- 2、ESXi 主机管理中启动 SSH 服务
- 3、通过 SSH 连接到 ESXi 主机, 进入到虚拟机目录
- 4、使用
vi
命令编辑[虚拟机名称].vmx
文件 - 5、替换
sata0:0.fileName = "XPEnology.vmdk"
为sata0:0.fileName = "arpl.vmdk"
并保存 - 6、重新注册虚拟机, 选择刚刚修改过的
vmx
文件
2.5、调整必要参数
经过上面的调整以后, 就可以直接启动黑群晖虚拟机并进行调整了; 虚拟机启动后会直接进入控制台, 并打印 VNC 访问地址, 我们需要使用 VNC 调整参数来安装黑群晖:
访问该地之后会看到一个菜单列表, 根据需要一步一步填写信息即可:
- 1、Choose a model: 选择一个型号, 请根据需要自行填写
- 2、Choose a Build Number: 选择 build 版本, 一般直接最新的即可(选择型号后才会出现)
- 3、Choose a serial number: 选择序列号, 默认自动生成的, 无法登陆群晖账号等; 可以选择填写自己淘宝买的
- 4、Addons: 添加插件驱动等, 如果没有必要请不要添加, 除非你知道你在干什么
- 5、Cmdline menu: 启动参数, 核心配置, 可以在此调整网卡数量和添加自己的 mac 地址
- 6、Build the loader: 编译引导, 这一步会自动化下载文件并编译引导
下面是一系列的操作截图和说明, 推荐完全看完后再操作, 关于特殊的网卡和磁盘参数下一部分会有详细说明:
2.6、必要参数说明
在调整参数时首次使用的用户可能比较懵逼, 下面详细说一下一些要点:
- 1、菜单列表中只要选择了 “Yes” 或者 “Ok” 只要不重启就已经保存了, 保存完成后的 “Exit” 和 “Cancel” 都可以回退到上一层菜单, 不用担心没保存上.
- 2、像 “Cmdline menu” 之类的参数菜单一般都提供一个预览选项, 可以完整的看到自己设置的参数
2.6.1、网卡参数配置
netif_num
这个参数用于告诉群晖系统现在系统有几个网卡, 一般自己生成或者购买的洗白码都会给你两个 mac 地址; 所以通常 netif_num
会设置成 2
, 当然如果你直接使用 arpl 随机生成的大概率不能登录群晖账号, 所以默认一个能联网就行.
mac[N]
这个参数用于定义具体网卡的 mac 地址, 众所周知群晖账户登录校验是要判断网卡 mac 的; 所以一般买来的洗白码出了序列号意外也会给两个 mac 地址, 依次填写 mac1
、mac2
就行; 同时推荐也在 ESXi 里把这两个 “网络适配器” 手动设置成跟群晖里一样的 mac 地址, 避免 ESXi 某些安全机制导致你没法联网:
2.6.2、SataPortMap 和 DiskIdxMap
SataPortMap
用于定义我们有几个 Sata 驱动器, 如果按照我的教程来走基本上是两个驱动器:
Sata0
: 专门挂载 arpl 启动盘Sata1
: 专门挂载用自己的磁盘, 主要用于 RDM 模式
如果不使用 RDM 而是直通 Sata Controller, 那么理论上这个 Sata 控制器等同于 Sata1
(都是第二个). 明白了这一点就好理解为什么 SataPortMap
教程里被设置为 14
了: 因为第一个 Sata0
肯定只有 arpl 启动盘, 所以是 1
, 第二个需要根据用户实际情况自己写自己有几个盘; 我这里是 4 个 RDM, 所以自然写 4
.
DiskIdxMap
用于定义群晖里硬盘识别的计数, 有个小技巧就是如果你把某个 SATA 控制器上的磁盘计数设置成 0F
就会隐藏这个驱动器上的所有磁盘; 文章里 0F00
的意思就是告诉群晖: 挂 arpl 启动盘的这个 “Stata0” 控制器上所有磁盘给我隐藏掉, 所有硬盘序号从第二个控制器开始数”.
2.7、添加物理硬盘
我在这一步翻车遇到了点问题, 当时以为是 ESXi 版本问题, 所以从 7.0 切换到 8.0; 后续截图会看到是 8.0 的截图, 所以不用怀疑, 我不是在胡编滥造… 当然升级 ESXi 8.0 以后得到了一个好消息和一个坏消息, 好消息是确实是版本问题, 坏消息是 8.0 也特么没修复(郭德纲经典相声了属于是)…
这部分本来不太想写, 网上随便一搜就有(翻车了…); 简单的说 ESXi 把物理硬盘直通到虚拟机里就两种方式, 一种是编辑 /etc/vmware/passthru.map
直接把 SATA 控制器直通进去, 另一种就是采用 RDM 方式创建 RDM 磁盘链接来直通; 两种方式孰优孰劣这里不做讨论; 唯一要说明的是如果采用 RDM 记得把 RDM 盘挂载到 Sata1
上, 因为上面的 SataPortMap
和 DiskIdxMap
都是按照两个 SATA 控制器设计的.
下面是我添加 RDM 的一些步骤和截图, 仅供参考:
首先命令行创建 RDM 磁盘, 核心命令就是 vmkfstools -z "物理磁盘路径" "RDM 磁盘路径"
:
接下来就是把 RDM 磁盘添加到虚拟机里; 说起来我写文章的时候觉得我以前操作很简单… 没想到这里翻车了; 简单说下问题, 估计大部分人跟我都一样, RDM 创建好以后发现添加现有硬盘添加不上, 表现跟上面说 UI 添加 ARPL 磁盘一样, 都是容量不显示也没法保存; 经过查论坛文章发现这是从 “ESXi 7.0 Update 3i” 版本开始导致的 UI BUG, 目前解决方案只有通过 PowerCLI 命令行方式解决:
- 1、准备一台 Windows 11 的虚拟机, 以管理员权限运行 PowerCLI(Terminal)
- 2、执行
Install-Module VMware.PowerCLI
安装 VMWare 的命令行工具, 过程中出现的提示全部选 “(Y) 是” - 3、执行
Set-ExecutionPolicy Unrestricted
设置执行策略不受限制 - 4、执行
Set-PowerCLIConfiguration -Scope User -InvalidCertificateAction warn
设置忽略 TLS 证书不信任问题(一般 ESXi 默认自签名证书) - 5、退出终端重新打开, 同样要以管理员身份运行
- 6、执行
Connect-VIServer -Server 服务器IP地址 -SaveCredentials -Protocol https -User root -Password 密码
完成登陆 - 7、执行
$vm = Get-VM -Name "你的虚拟机名称"
设置$vm
这个变量 - 6、执行
New-HardDisk -VM $vm -diskPath 磁盘位置 -Confirm:$false
来添加 RDM 磁盘
其中第 6 步的 “磁盘存储位置” 可以从 “数据存储浏览器” 中复制, 注意要连前面的存储名称一起复制, 比如我的第一块盘就是 “[ssd] XPEnology/RDM-S4Y0TMG0.vmdk”; 实操请看截图:
最后一步, 去 UI 界面编辑虚拟机, 把后添加的这几个 RDM 磁盘的控制器全部切换到 Sata1
上, 然后把命令行添加 RDM 时自动创建的 SCSI
控制器删了.
本部分参考:
- ESXi 8 RDM not working
- How to manage ESXi hosts remotely with PowerCLI
- Heads Up - ESXi 8.0 Host Client unable to attach existing virtual disk to VM
- VMware Developer Documentation
三、安装黑群晖
总结一下上面 ARPL 虚拟机初始化的核心步骤:
- 1、创建一个 BIOS 引导的虚拟机
- 2、设置两个 SATA 控制器
- 3、ARPL 挂载到第一个 SATA
- 4、其他磁盘挂载到第二个 SATA
- 5、配置 ARPL 参数
在完整这些步骤后只需要简单的重启虚拟机, 等待启动完成就可以着手安装群晖系统了; 安装群晖系统不需要借助群晖的 Find 查找工具, 虚拟机启动后会在控制台打印 IP, 直接访问 http://IP:5000
端口即可.
安装时可以直接从提示处在线下载系统, 不过需要注意的是如果 ARPL 的编译版本号与最新的不匹配可能会有问题, 所以还是推荐点一下 “All Downloads” 然后自行查找.
剩下的安装步骤这里就不截图了, 基本上有手就行.
四、关机修复
ESXi 默认情况下想要安全关闭一个虚拟机, 需要虚拟机内安装 VMWare 的 open-vm-tools
工具; 该工具作为一个 Agent 运行, 并上报系统的 IP、网速、磁盘、内存使用情况等信息给 ESXi; 当 ESXi 发出关机等指令时该工具根据系统类型自动调用系统命令来完成该操作. 当我们在 ESXi 上安装黑群晖后, ESXi 无法识别系统类型, 所以在管理界面只会显示一个 “关闭电源” 的按钮, 这个关机等同于物理机直接拔电源, 非常容易造成数据损坏.
解决办法只有一个就是安装 open-vm-tools
, 问题在于黑群晖系统不在 VMWare 官方的支持列表中, 所以并未提供安装包; 不过目前也有两种解决方案, 一种是采用 docker 运行 open-vm-tool
, 另一种是自己编译 open-vm-tools
; 两种方案各有优缺点:
- docker 安装: 缺点是 ESXi 界面显示操作系统选择错误, 因为
open-vm-tools
上报的操作系统是 docker 容器的系统; 好处就是 “永久兼容” 没有群晖版本依赖问题. - 自编译
open-vm-tools
: 缺点是绑定群晖系统版本, 需要等待社区大神改代码才能跟上群晖的发版; 好处就是原生运行不需要群晖内有额外的系统资源占用.
4.1、Docker 安装 open-vm-tools
这个是最简单的, 需要先在系统内安装 Docker 套件, 然后 SSH 到群晖系统, 执行以下命令运行容器(需要使用 root 用户):
1 |
|
关于 mritd/open-vm-tools
这个镜像是我自己编译的, 担心安全问题的可以自行查看源码 AutoBuild; 原理其实就是点关机时帮你自动从 Docker 容器 ssh 到群晖系统然后执行关机命令.
4.2、自编译安装 open-vm-tools
期望自行编译 open-vm-tools
可以参考 synology-dsm-open-vm-tools 仓库文档, 编译时请保证网络环境畅通, 有条件的最好用国外 VPS 8C 16G 配置进行编译. 编译完成后会生成 SPK 安装包, 直接在套件中心选择手动安装即可:
安装成功后, 回到 ESXi 中就可以看到虚拟机电源控制中出现了 “关机” 选项:
目前我已经编译好了适用于 7.1.1
系统的 open-vm-tools
, 截止文章编写时间还没想上传到公网, 有需要的可以留言.
五、开机自启动
目前我使用的是 HPE Gen8 作为主机, 宿主机的来电自启动 ESXi 都已经配置完成; 如果想要让特殊情况断电以后 ESXi 能够自动启动黑群晖, 只需要在 ESXi 中配置一下即可:
到此 ESXi 上基本的黑群晖已经安装完成, 剩下的系统内折腾就各凭本事了.