【问题标题】:How do I create VMware or VirtualBox virtual machine from Balena app image?如何从 Balena 应用映像创建 VMware 或 VirtualBox 虚拟机?
【发布时间】:2020-08-02 01:55:57
【问题描述】:

给定一个 Balena 应用程序,它可以作为图像下载并使用 U 盘闪存到设备中,如何使用它来创建虚拟机?这个想法是,它可以分发给其他人,作为运送物理设备的替代方案。

【问题讨论】:

    标签: virtualbox vmware balena


    【解决方案1】:

    实现这一点有两个主要部分:

    1. 下载 Balena 设备映像(英特尔 NUC),并可选择使用现有应用预加载它
    2. 基于该映像构建虚拟机映像

    下载基于 Intel-NUC 的 Balena 设备映像

    安装仍然支持 AUFS 的非常特定版本的 Docker

    使用您的应用预加载 Balena 图像(可选)

    Docker 必须正常运行才能进行下一步。

    • 运行balena preload <img name>.img --app <app #> --splash-image logo.png

    将 .IMG 文件转换为 .VMDK

    镜像需要挂载到虚拟机中,类似于插入U盘,但是不能直接挂载.img文件。 不幸的是,VMware 没有这方面的实用程序(如果有,请发表评论),但 VirtualBox 有。

    必须使用VBoxManage convertdd 命令将其转换为 .vmdk(虚拟磁盘)。

    • 运行VBoxManage convertdd <img name>.img <img name>.vmdk --format VMDK

    创建 VMware 虚拟机映像

    注意:这似乎需要 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(您需要许可证或试用版)并创建一个新的虚拟机。使用自定义(高级),否则您将无法指定磁盘控制器类型或选择现有磁盘。

    • 稍后安装操作系统
    • Linux / Debian 6(64 位)
    • 4GB 磁盘,将虚拟磁盘存储为单个文件
    • 使用默认设置,直到到达 Select a Disk Type - 选择 SATA,因为 SCSI 不支持 AHCI,并且无法正常启动。
    • Select a Disk - 选择“使用现有虚拟磁盘”
    • 选择之前创建的 1kb VMDK 文件(-flat)。它可能会提示将其转换为最新版本 - 继续吧,除非您打算在以前版本的 VMWare 中使用它,否则没关系。

    单击完成,然后编辑虚拟机设置。您需要在硬件选项卡上添加单击Add 并选择Hard Disk

    • 选择 SATA > 创建一个新的虚拟磁盘
    • 4 GB,将虚拟磁盘存储为单个文件

    注意:原始 Balena VMDK 设置为 SATA 0:0 至关重要,否则将无法正常启动。它应该已经这样配置了,但是您可以单击“高级”按钮进行仔细检查。

    如果虚拟机无法启动(即卡在网络启动提示符处),请转到虚拟机的设置 > 选项选项卡 > 高级 > 固件类型,并确保将其设置为 UEFI(而非 BIOS)。这应该可以解决问题。

    单击Options 选项卡并转到Advanced - 将固件类型从BIOS 更改为UEFI如果不这样做,它将无法启动到 Balena VMDK。

    跳过下一部分。

    创建 VirtualBox 虚拟机镜像

    • 打开 VirtualBox 并创建一个新的虚拟机
    • 类型:Linux
    • 版本:Debian(64 位)
    • 内存:至少 2GB
    • 硬盘:创建虚拟硬盘:
      • VDI
      • 动态分配
      • 4GB 大小

    您现在应该已经创建了一个虚拟机。编辑设置:

    • 系统:
      • 取消选中Enable I/O APIC否则将无法启动
      • 检查Enable EFI
    • 存储:
      • 您将在Controller: SATA 下看到之前创建的虚拟磁盘
      • 点击Controller: SATA添加新硬盘
      • 选择现有磁盘
      • 单击添加(您最终将连接 2 个不同的磁盘)
      • 选择之前创建的预加载 .vmdk 文件 - 这是虚拟机将从其引导并使用 Balena 映像刷新另一个磁盘的磁盘
      • 单击“选择”,您现在应该会看到连接到Controller: SATA 的两个磁盘
    • 网络:
      • 这应该默认为 NAT 这是你想要的

    为虚拟机提供 Balena 映像

    现在您应该连接了原始 VMDK 以供启动一个新的虚拟磁盘以使用 Balena 映像进行配置。启动虚拟机并打开 Balena 仪表板以查看它是否上线 (https://dashboard.balena-cloud.com) 一旦它出现,您应该将其命名为有意义的名称。

    注意:如果您看到 Network PXE 作为引导加载程序并且它只是挂起,这意味着您可能没有将 BIOS 设置更改为 UEFI。

    设备将进入 Post-Provisioning 状态。 不要中断此过程 - 这将需要几分钟,虚拟机将关闭。请务必让它自行关闭电源。 如果它没有关闭,或者您不小心将其关闭,请从 Balena 删除该设备并再次启动虚拟机 - 它应该配置一个新设备。

    重要提示:一旦关机,进入虚拟机设置并移除Balena VMDK磁盘,否则每次开机都会重新刷一个新镜像。这相当于从设备中移除 U 盘。您应该只将一个虚拟磁盘附加到Controller: SATA

    此时,您拥有一个相当于物理设备的虚拟机映像。现在可以将映像打包为虚拟设备,以便轻松分发(用户只需双击并加载到 VirtualBox 或 VMware)。

    从 Balena 映像创建虚拟设备

    打开VirtualBox或VMware(过程相同):

    • 点击File > Export
    • 请务必创建一个 .ova 文件,因为这会将所有内容合并到一个文件中(对于 VMware,您可以在文件名保存字段中手动输入扩展名)。 .ovf 文件将分离出 .vmdk,因此需要 .zip 文件才能轻松重新分发。

    点击Export就可以了!

    需要注意的一点:如果您将此设备发送给 10 个人,Balena 中仍然只有 1 个设备,因此您可能希望创建 10 个单独的设备,然后在 Balena 中配置 10 个单独的设备。

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2016-09-11
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多