在 ESXi 中完美虚拟 Xpenology DSM 6.2.x

最近一直在折腾完全虚拟化的家庭服务器,其中虚拟 Xpenology 一直是一个头疼的问题。按照 Xpenology 论坛给出的虚拟化安装方式,将 loader 做成一块 SATA 硬盘挂载,结果就是在系统更新的时候总会出现代号 13 错误(安装包已损坏)。

另外一个解决方案,先制作实体 USB 启动盘,然后在 ESXi 中将 USB 直通给 Xpenology 虚拟机。但是还要在机器上插一个 U 盘太麻烦,遇到 U 盘故障的话,恢复系统也是一个麻烦事。如果能虚拟 USB 启动盘就好了。但是,ESXi 虚拟机设置里面并没有虚拟 USB 存储设备的选项。

设置页面里面没有,不代表不能做!

经过几天的研究,终于在 VMware 官方论坛中发现了一个未公开的功能,可以将 vmdk 虚拟盘挂载成 USB 存储设备。

1. 准备 USB 引导盘

>> 懒人包

下载 VMware 专用的 Jun's DSM 6.2 loader 虚拟 USB 引导盘

使用懒人包的话可以跳过下面的分解步骤,直接进行下一步。

>> 分解步骤

首先,下载 Jun's DSM 6.2 loader

注意,因为 ESXi 虚拟机仅在 UEFI 模式下支持从 USB 存储设备引导系统,所以,在写下这篇文章时,只能选择 1.04b 版本的引导盘。

然后,用 OSFMount 挂载引导盘镜像的第一分区,修改 grub/grub.cfg 文件,写入正确的 USB 设备 VID/PID。

# VMware virtual USB mass storage
set vid=0x0e0f
set pid=0x0005

如果有正版 Synology DS918+ 的机器序列号和网卡 MAC 地址(旧机器上抄一下),也可以在这一步设好。没有的话可以忽略,在 DSM 系统设置完成之后也可以重新设置序列号和 MAC。

之后,用 StarWind V2V Converter 将引导镜像转成 vmdk 格式。(网上有很多教程)

2. 建立虚拟机

在 ESXi 中建立一个虚拟机,添加 USB 控制器并设置成 USB 3.0 模式。

esxi-create-vm-usb-controller.png

将虚拟机操作系统选成 Other 4.x or later Linux (64-bit)。

esxi-create-vm-os-version.png

启动模式选择 EFI,去掉 Secure boot,并且勾选 Force BIOS setup 选项。

esxi-create-vm-boot.png

根据需要设置 SAS 卡直通,或者建立虚拟硬盘。如果使用虚拟硬盘的话,需要将硬盘模式设置成 Independent - persistent,并且挂载到 SATA controller 上面。

esxi-create-vm-sata-hdd.png

虚拟机建立好之后先不要开机。

3. 挂载虚拟 USB 存储设备

在 ESXi 存储管理下面打开 Datastore browser,将 synoboot 上传至虚拟机文件夹。

  • 如果在第 1 步使用 StarWind V2V Converter 转换 vmdk,则需要上传 synoboot.vmdk 和 synoboot-flat.vmdk 两个文件
  • 如果使用懒人包,则需要上传 synoboot.vmdk 和 synoboot.img 两个文件

然后将 .vmx(虚拟机设置文件)下载回本地编辑。

esxi-datastore-download-vmx.png

首先确认 .vmx 文件中存在下面一行。没有的话给加到文件最下方。

usb_xhci.present = "TRUE"

在 .vmx 文件最下方加入下面四行。

usb_xhci:3.present = "TRUE"
usb_xhci:3.deviceType = "disk"
usb_xhci:3.fileName = "synoboot.vmdk"
usb_xhci:3.readonly = "FALSE"

保存 .vmx 文件,并上传回 ESXi。

4. 设置从 USB 设备启动

第一次开启虚拟机之后,首先进入 UEFI BIOS 设置界面。选择 Enter setup -> Configure boot option -> Enable or disable boot option。将除了 EFI USB Device 以外的选项都设置成 Disabled。

esxi-bios-setup.png

选择 Commit changes and exit -> Exit the Boot Maintenance Manager -> Reset the system。

虚拟机重启之后会自动从虚拟 U 盘引导系统。然后就可以通过 Synology Web Assistant 查找并设置 NAS 了。

5. 修改序列号和 MAC 地址

在 DSM 上线,完成所有初始化设置(设置用户名/密码)之后,依然可以通过 SSH 后台挂载 synoboot 的方式修改机器序列号和 MAC 地址。

首先,在 DSM 的 控制面板 -> 信息中心 -> 服务 里面开启 SSH。

dsm-enable-ssh.png

然后通过 SSH 登录 DSM(可以使用 Windows 命令行、PowerShell 或者 PuTTY)。用户名密码就是之前设置 DSM 时建立的账号。

登录之后先转成 root 账户。密码依旧是刚才的登录密码(不是 root 账户的密码)。

sudo -i

然后挂载 synoboot。

mkdir -p /tmp/synoboot
cd /dev
mount -t vfat synoboot1 /tmp/synoboot
cd /tmp/synoboot

dsm-modify-grub-cfg.PNG

编辑 grub/grub.cfg。

vi grub/grub.cfg

修改下面几行。

set sn=xxxxxxxxxxxx
set mac1=001122334455
set mac2=001122334466

重启 DSM 之后会有个 NAS 数据迁移的过程(系统认为已将硬盘移到另外一台 NAS),按照提示操作即可。

已有 3 条评论
  1. 博主您好,按照您的方法安装了 DSM,发现了一个问题,每次重启的时候 usb 设备会被识别成一个外部设备,并且挂载为 usbshare,并没有变成 synoboot1 和 synoboot2,这也导致在升级系统的时候会出现 (错误 21),检查日志发现是 挂载 /dev/synoboot1 失败

    1. 然后我将usb 设备 link 到了 synoboot1
      ln /dev/sdq1 /dev/synoboot1
      ln /dev/sdq2 /dev/synoboot2
      再更新,还是更新失败,日志显示还是挂载失败,只不过不是 mount 命令报错了

    2. 看上去应该是vid/pid不对,如果使用的不是ESXi的话,需要把vid/pid改成对应平台的虚拟USB存储设备

添加新评论