最近入了一台迷你主机,想尝试一下 esxi。这里记录一下 esxi 安装 OpenWrt 的过程。
VMware ESXi 是由 VMware 公司推出的虚拟机平台。与 PVE 不同的是,ESXi 是闭源的,而且需要购买订阅,安装门槛比较高,需要特定支持的硬件,某些甚至需要打驱动。正是因为其闭源,复杂,在某些方面上,ESXi 要比 PVE 更稳定些。
需要注意的是,本篇文章假设大家已经掌握如何编译 openwrt 固件(LEDE),而且不做直通处理。
由于 ESXi 的特殊性质,在 pve 中导入.img 文件的传统貌似不起作用,所以我们需要将 .img 转换为 .vmdk。
在这里 Never 给出两种方法,一是更改默认固件输出,增加 .vmdk,二是使用第三方转换工具将 .img 转换为 .vmdk。
方法1:更改固件输出,增加 .vmdk
编译工具给出了直接将固件编译成 .vmdk 格式的“工具”了。若使用此方法,需要继续进行后续步骤。
在 openwrt 的编译菜单中,选择“Target Images”:
往下滑,按 Y 勾选“Build VMware image files (VMDK)”:
再下面的这两个选项可以更改内核和主/根分区大小,需要安装多插件的小伙伴们可以改一下固件大小:
按 Esc 返回,保存一下配置 .config,退出编译菜单,再编译一下固件:
#如果要更新 OpenWrt 的话,运行下面所有命令
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
#如果只增加 .vmdk输出,运行以下命令
make download -j8
make V=s -j$(nproc)
编译完成后,将 openwrt-x86-64-generic-squashfs-combined-efi.vmdk (位于默认输出目录)上传至 ESXi,与上传镜像一致:
方法2:使用第三方工具将.img 转换为 .vmdk
借助 StarWind V2V Converter,我们可以直接将现有的 .img 转换为 .vmdk。同样的,Never 强烈建议大家从官网下载软件,仅需要填写个邮箱,下载地址就会随邮件送达。
打开软件,选择“Local file”:
单击右边的三个点选取 .img 文件位置,然后点击“Next”:
选择“Remote VMware ESXi Server or vCenter”:
输入 esxi 的 ip 地址和 管理员用户名(User name,一般为 root)和密码(Password,自行设置的):
如果还没有创建新的虚拟机,可以用这个工具来创建,选择下方的“Create a new virtual machine”,然后自定义配置即可:
其中,Name 为 虚拟机名称;Path 为存储路径,若无特殊需求选择 datastore 1 即可;CPU count 为 CPU 内核数量;Memory 为内存,单位为 MB;Firmware type 为 固件类型,这里选择 UEFI;OS type 为系统类型,保持默认即可;Network connection 为网络连接,若无特殊需求保持默认即可。
选择对应的虚拟机,然后点击“Next”,这里的硬盘类型按照个人选择吧,第一个是还可以扩容的,第二个就是固定大小的了:
没有问题的话一路点击“Next”即可,进度条走完点击“Finish”然后关闭程序即可。
打开 esxi 后台,找到新创建的虚拟机的页面,先不要开机,点击上方的“编辑”,转到“虚拟机选项”,展开“引导选项”,“固件”选择“EFI”,取消勾选“UEFI 安全引导”:
此时应该可以正常启动了。若使用此方法,下面的步骤可以省略不做了。如果需要 esxi 开机自动启动的话,可以往后翻翻。
创建虚拟机(从此步骤开始至开机自启之前,仅限使用方法1的小伙伴进行)
回到 ESXi 中,新建一个虚拟机:
名称按照自己喜好填写,不要填中文;兼容性保持默认;操作系统系列选择 “Linux”;操作系统版本选择“其他 6.x 或更高版本 Linux (64位)”(最新的L大的 openwrt 编译完后内核已经是6以上版本了,如果选用老版本,还请注意选择)。
存储默认即可,若需要更改可自行选择。
自定义设置中,CPU,内存按照自己实际情况来,一般2核2G或4G足矣,如果想多扩展openwrt功能可酌情增加。硬盘点击右边的“×”删除,我们一会儿要将 .vmdk 导入做硬盘;网络适配器按照自己实际情况扩展,Never 目前只连了一根 LAN 到 ESXi 上,要是有连到猫上的还要再把那个网口添加进去(点上方的“添加网络适配器”):
然后点击“完成”创建虚拟机:
修改并导入硬盘
通过编译获得的 .vmdk 磁盘文件不能直接用于启动虚拟机,我们需要连接到 esxi 的 ssh 上修改一下。
打开 ssh
回到 esxi web 端的主页(点击左上角的“主机”)—操作—服务—启用 Secure Shell (SSH):
连接到 esxi
这里 Never 以 Xshell 为例,新建一个主机连接,名称自定义,主机填写 esxi 的 ip 地址,然后点击左侧的“用户身份验证”,用户名填写“root”,密码留空,在下方的“方法”中勾选“Keyboard Interactive”并取消勾选“Password”:
保存之后,连接。在提示的窗口中输入 esxi 的管理密码即可连接:
运行下面命令来查找上传的 .vmdk 位置:
find / -name openwrt-x86-64-generic-squashfs-combined-efi.vmdk
注意:如果之前自行更改过文件名称,须在命令中更改为一致的,否则找不到文件:
进入到回显的文件目录中(本例中为 /vmfs/volumes/64864aa9-203057f2-f76a-00e259004bca/iso/ )
cd /vmfs/volumes/64864aa9-203057f2-f76a-00e259004bca/iso
注意:不能直接照搬命令,文件目录可能因人而异。
运行下面命令来修改硬盘:
vmkfstools -i openwrt-x86-64-generic-squashfs-combined-efi.vmdk openwrt-new.vmdk
注意:上方命令中,第一个文件名是要被修改的(input),第二个文件名(openwrt-new)是修改完成后的新的文件(output)。
此时,在数据存储浏览器中应该能看到多了个文件:
回到我们之前创建的 openwrt 虚拟机页面,点击上方的“编辑”—“添加硬盘”—“现有硬盘”:
选择刚刚修改过的新的硬盘文件(openwrt-new.vmdk):
点击“保存”,然后将“SCSI 控制器 0”修改为“LSI Logical SAS”:
转到“虚拟机选项”,展开“引导选项”,“固件”选择“EFI”,取消勾选“UEFI 安全引导”:
现在应该可以启动虚拟机了:
需要修改 openwrt 的 ip 地址的话,在上图的控制台内按一下回车(可能需要先左键单击一下),运行下面命令:
vi /etc/config/network
然后按一下 i 键,修改下图的 option ipaddr 即可:
ESXi 开机自启动
点击左上角的“管理”—系统—自动启动—编辑设置,将“已启用”勾选为“是”,启动延迟按照个人来更改,停止延迟设置为“0 秒”,然后点击保存。
然后在左侧“虚拟机”一栏中,邮件单击要自启的虚拟机,选择“自动启动”—启用:
也可以在自动启动的管理界面配置虚拟机先后启动顺序:
参考文献
catoop (2021). ESXi 安装 OpenWRT. Available at: https://blog.csdn.net/catoop/article/details/121610385 (Accessed: 6th Jul. 2023).
jiuyou91 (2022). #VMware#ESXI 配置虚拟机服务器开机自启动. Available at: https://blog.csdn.net/jiuyou91/article/details/127922473 (Accessed: 6th Jul. 2023).
运维贼船 (2022). 在ESXi上搭建自己的OpenWRT软路由系统. Available at: https://baijiahao.baidu.com/s?id=1730096660613939728 (Accessed: 6th Jul. 2023).
封面插画选自 mocha@新刊委託中 的 雷鳴 (2022)。https://www.pixiv.net/artworks/100863622
Copyright secured by Digiprove © 2023 Never.
ESXi属于那种你不折腾就不会出问题
没错