【发布时间】:2020-08-02 01:55:57
【问题描述】:
给定一个 Balena 应用程序,它可以作为图像下载并使用 U 盘闪存到设备中,如何使用它来创建虚拟机?这个想法是,它可以分发给其他人,作为运送物理设备的替代方案。
【问题讨论】:
标签: virtualbox vmware balena
给定一个 Balena 应用程序,它可以作为图像下载并使用 U 盘闪存到设备中,如何使用它来创建虚拟机?这个想法是,它可以分发给其他人,作为运送物理设备的替代方案。
【问题讨论】:
标签: virtualbox vmware balena
实现这一点有两个主要部分:
打开 Docker 桌面设置面板并勾选复选框 Expose daemon on tcp://localhost:2375 without TLS。还要转到共享驱动器设置并确保共享 C 驱动器,否则在运行 balena preload 时会出现 drive not shared 错误。
Docker 必须正常运行才能进行下一步。
balena preload <img name>.img --app <app #> --splash-image logo.png
镜像需要挂载到虚拟机中,类似于插入U盘,但是不能直接挂载.img文件。 不幸的是,VMware 没有这方面的实用程序(如果有,请发表评论),但 VirtualBox 有。
必须使用VBoxManage convertdd 命令将其转换为 .vmdk(虚拟磁盘)。
VBoxManage convertdd <img name>.img <img name>.vmdk --format VMDK
注意:这似乎需要 VMware Workstation 15 才能与 VMDK 兼容,但如果您有野心,可以通过一些方法使其与早期版本一起使用。也许更改 VMDK 文件类型?
您必须将 VMDK 文件类型从 5 (streamOptimized) 修改为 2 (monolithicFlat)。在这里没关系,但类型 0、1 和 3 也可以。 VirtualBox 不需要。
vmware-vdiskmanager -r <source>.vmdk -t 2 <target>.vmdk
这会创建一个大小为原始文件大小 4 倍的 -flat.vmdk 文件。 注意:我们将附加引用该 -flat 文件的 1kb .vmdk 文件,而不是 -flat 文件本身。
打开 VMware Workstation(您需要许可证或试用版)并创建一个新的虚拟机。使用自定义(高级),否则您将无法指定磁盘控制器类型或选择现有磁盘。
Select a Disk Type - 选择 SATA,因为 SCSI 不支持 AHCI,并且无法正常启动。Select a Disk - 选择“使用现有虚拟磁盘”单击完成,然后编辑虚拟机设置。您需要在硬件选项卡上添加单击Add 并选择Hard Disk。
注意:原始 Balena VMDK 设置为 SATA 0:0 至关重要,否则将无法正常启动。它应该已经这样配置了,但是您可以单击“高级”按钮进行仔细检查。
如果虚拟机无法启动(即卡在网络启动提示符处),请转到虚拟机的设置 > 选项选项卡 > 高级 > 固件类型,并确保将其设置为 UEFI(而非 BIOS)。这应该可以解决问题。
单击Options 选项卡并转到Advanced - 将固件类型从BIOS 更改为UEFI。 如果不这样做,它将无法启动到 Balena VMDK。
跳过下一部分。
您现在应该已经创建了一个虚拟机。编辑设置:
Enable I/O APIC(否则将无法启动)Enable EFI
Controller: SATA 下看到之前创建的虚拟磁盘
Controller: SATA添加新硬盘Controller: SATA 的两个磁盘
NAT 这是你想要的现在您应该连接了原始 VMDK 以供启动和一个新的虚拟磁盘以使用 Balena 映像进行配置。启动虚拟机并打开 Balena 仪表板以查看它是否上线 (https://dashboard.balena-cloud.com) 一旦它出现,您应该将其命名为有意义的名称。
注意:如果您看到 Network PXE 作为引导加载程序并且它只是挂起,这意味着您可能没有将 BIOS 设置更改为 UEFI。
设备将进入 Post-Provisioning 状态。 不要中断此过程 - 这将需要几分钟,虚拟机将关闭。请务必让它自行关闭电源。 如果它没有关闭,或者您不小心将其关闭,请从 Balena 删除该设备并再次启动虚拟机 - 它应该配置一个新设备。
重要提示:一旦关机,进入虚拟机设置并移除Balena VMDK磁盘,否则每次开机都会重新刷一个新镜像。这相当于从设备中移除 U 盘。您应该只将一个虚拟磁盘附加到Controller: SATA。
此时,您拥有一个相当于物理设备的虚拟机映像。现在可以将映像打包为虚拟设备,以便轻松分发(用户只需双击并加载到 VirtualBox 或 VMware)。
打开VirtualBox或VMware(过程相同):
File > Export
点击Export就可以了!
需要注意的一点:如果您将此设备发送给 10 个人,Balena 中仍然只有 1 个设备,因此您可能希望创建 10 个单独的设备,然后在 Balena 中配置 10 个单独的设备。
【讨论】: