使用qemu-img将openwrt img转vmdk,并在esxi上二次转换为精简置备磁盘
一、准备工作
- 运行正常的ESXi
- OpenWRT固件
* 本文使用的是Sirpdboy编译的固件:20210601-Ipv4P-Mini-x86-64-generic-squashfs-combined.img.gz
* 【20220115版本】链接:https://www.123pan.com/s/dS5A-By4qd 提取码:SeY7
* 本固件的Github主页,用于固件说明以及下载地址更新
* 本固件在恩山论坛的更新日志
20230606更新:现在主要用ImmortalWrt了,官方页面直接编译,很稳~
-
qemu-img工具
- linux软件仓库中一般带有,直接安装即可,以CentOS7为例(请先安装epel源):
yum -y install qemu-img - windows可在此链接下载,需经常使用的话,可以配置到系统变量中
- linux软件仓库中一般带有,直接安装即可,以CentOS7为例(请先安装epel源):
二、镜像格式转换
概念理解:本文中下载到的固件原始文件系统是squashfs(其他还有jffs2、ext4等等),可以理解为和Ghost镜像一样的东西,编译时输出的是.img.gz格式的压缩包,所以我们需要进一步解压得到img格式的镜像; 而vmdk是VMware的虚拟磁盘格式,我们要做的就是将img转换为可以被ESXi识别的vmdk虚拟磁盘格式。
需要注意的是,使用qemu-img工具将img转换出的vmdk虚拟磁盘,在VMware Workstation中可以直接使用,但是在ESXi中无法使用,因此需要使用vmkfstools再次转换成ESXi可以识别的格式。(应该是厚置备与精简置备的关系?)
1.将img转换为vmdk(第一次转换)

- 转换命令(文件名以openwrt.img为例):
qemu-img convert -f raw openwrt.img -O vmdk openwrt.vmdk↑大写欧 - raw与img的不同之处,参考此链接

- 将转换出的vmdk虚拟磁盘上传至ESXi

2.使用vmkfstools再次转换(第二次转换)
- 需要先开启ESXi主机的安全shell,否则无法使用ssh连接

- 进入此前创建存放openwrt.vmdk的目录 储存→更多储存→点击对应的储存卷,即可找到详细路径:

|
|
- 在ESXi主机上,使用vmkfstools将上传的openwrt.vmdk再次转换
- 转换命令vmkfstools参数
- -i 参数为源文件
- -d参数为vmdk磁盘存储方式(精简置备thin,厚置备延迟清零zeroedthick,厚置备立即清零eagerzeroedthick,参考官方详解)
- 此处以源文件 openwrt.vmdk,输出文件 openwrt_lan.vmdk(精简置备)为例
- *个人更建议直接厚置备立即置零,openwrt镜像也不大,理论上来说厚置备立即置零性能会好一丢丢
vmkfstools -i openwrt.vmdk -d thin openwrt_lan.vmdk
- 转换命令vmkfstools参数
|
|
可见转换后有两个文件,一个是openwrt_lan.vmdk,此时它实际上只是一个配置文件,如果感兴趣查看一下里面的参数;另一个是openwrt_lan-flat.vmdk,这个才是虚拟磁盘文件。但是在esxi中是看不到-flat文件的,所以不要误将其删除。
可以将转换前的vmdk删除,以免后期维护时搞不清楚用的是哪个vmdk磁盘。
三、创建虚拟机
- 创建虚拟机就比较简单了,新建虚拟机,填写信息,一直下一步。
- 唯一需要注意的一步是,不用新建磁盘,将此前转换的vmdk挂载即可
- 2022-01-21更新:此处创建虚拟机时,先创建虚拟机,接着再把之前转换好的vmdk磁盘移动至此虚拟机的目录,最后编辑虚拟机设置添加此vmdk磁盘。

新建好的虚拟机以能够成功启动为正确结果。
- 若不使用vmkfstools进行二次转换,会发生什么? 会报如下错误:

|
|
四、OpenWRT启动后的设置
- 将创建的OpenWRT开机,待开机信息滚动完毕后,敲一下回车,进入交互界面:

1.设置IP
配文件路径参考OpenWRT配置文件路径以及功能说明
- 修改网络配置文件:/etc/config/network (见下图)
- 修改ipaddr字段,即OpenWRT的IP地址
- 添加 gateway字段,即OpenWRT的网关地址 本次安装作为旁路网关,因此网关填写上一级路由的IP
- 添加dns字段,即OpenWRT本身的dns,若不设置,其本身将无法解析域名
保存并退出(vim可使用快捷键Shift+zz)
以上操作,若对命令行不熟悉,可以只修改IP,使用IP进入web界面后再修改

2.重启网络
- 重启网络命令:
./etc/init.d/network restart

- 网络重启后,ping一下外网,若能ping通,说明刚才设置的网关和DNS都已经生效

3.修改密码
- 命令:
passwd然后输入两遍新密码,即可完成修改 大坑!!ESXi的web console里面,右Shift键无效!所以不可以使用右Shift键输入特殊字符!我就说死活密码都不对!!

4.Web登录
- 使用上面修改的ipaddr字段的IP:192.168.4.201 若能够访问web页面,此次安装就成功了,可以在web页面中进行其他应用的配置。
