【问题标题】:How to create a virtual machine in ubuntu using command line如何使用命令行在 ubuntu 中创建虚拟机
【发布时间】:2020-07-21 20:26:32
【问题描述】:

我正在尝试在 virtualbox 中模拟一个英特尔 NUC 网关。我在亚马逊 EC2 实例中运行这个虚拟机。由于连接不佳,我无法查看桌面的 GUI。因此开始使用命令行来创建虚拟机。以下是我的步骤:

  1. 在resin.io中创建了一个应用程序并选择了intel nuc board作为应用程序并下载了图像

  2. 将 .img 转换为 .vmdk 映像并将此映像保存在我的 ec2 实例中

  3. 现在我使用命令行参数在 EC2 中创建了我的虚拟机,当我尝试导入此图像时..我很震惊..我没有收到相关命令

【问题讨论】:

    标签: ubuntu virtualbox


    【解决方案1】:

    (请参阅下面的编辑!)

    目前看来这在 AWS EC2 中是不可能的。他们有很好的basic info 和详细的step-by-step guide 来导入虚拟机映像,但是resin.io 映像不适合他们的operating systems prerequisits:基本上运行在EC2 之上的操作系统映像需要是列出的操作系统之一类型(Ubuntu、Red Hat、SUSE 等),但resin.io 映像是自定义Linux 系统,EC2 平台不接受。我尝试运行他们的导入程序,但所有不同类型的尝试都被拒绝了。

    建议尝试不同的方式运行虚拟机。如果您只是在尝试虚拟设备(我猜是基于this blogpost),并且您不需要 NUC 映像,任何虚拟设备都可以,那么resin.io 上也有基于QEMU 的映像现在,它也应该可以在您的本地机器上运行(因为同样的原因,它们也不能在 EC2 上运行)。

    编辑:

    重新阅读您的问题,关于 EC2 本身的内容要少得多,而更多的是关于 VirtualBox,我很抱歉。 VBoxManage 有大量文档。在这种情况下,这是一个脚本,可以在命令行上的 VirtualBox 上设置和启动resin.io NUC 映像。

    需要什么:从resin.io仪表板下载NUC镜像,并转换成VMDK镜像。在主机上安装 VirtualBox,将 VMDK 复制到那里,然后修改下面文件中的设置(根据需要调整可用内存、磁盘存储和文件名)。

    脚本将:

    1. 创建虚拟机并将其注册到 VirtualBox
    2. 为resin.io NUC 映像设置正确的硬件设置
    3. 创建 SATA 存储驱动程序
    4. 创建主硬盘并将其附加到虚拟机
    5. 将resin.io 安装媒体附加到机器上
    6. 以无头模式运行虚拟机,对resin进行首次配置。此过程将在完成后关闭虚拟机
    7. 分离安装介质,因为之后不再需要它

    然后你的机器就可以运行了。

    #!/bin/bash
    
    ## Fill in these Variables
    # the virtualmachine's name
    MACHINE=MyMachine2
    # memory in MB
    MEMORY=2048
    # storage in MB
    STORAGE=8096
    # resin installation media path & filename
    RESIN_DISK="resin-MyApplication-1.8.0-1.13.0-eb7236d1bd7e.vmdk"
    # Storage disk, by defalt created in the current working directory!
    DISKFILE="./${MACHINE}.vdi"
    ###
    
    
    ## Convert the original image to a Virtualbox image as:
    # VBoxManage convertdd resin.img resin.vmdk --format vmdk
    # and then use RESIN_DISK="resin.vmdk" above
    
    echo "Createing Machine" && \
    VBoxManage createvm --name "$MACHINE" \
      --ostype Linux_64 \
      --register && \
    \
    echo "Setting up Machine" && \
    VBoxManage modifyvm "$MACHINE" \
      --memory $MEMORY \
      --ioapic off \
      --firmware efi64 \
      --rtcuseutc on && \
    \
    echo "Createing Storage Controller" && \
    VBoxManage storagectl "$MACHINE" \
      --name SATA \
      --add sata && \
    \
    echo "Creating Main Disk" && \
    VBoxManage createmedium disk \
      --filename "$DISKFILE" \
      --size $STORAGE && \
    \
    echo "Attaching Main Disk" && \
    VBoxManage storageattach "$MACHINE" \
      --storagectl SATA \
      --port 0 --device 0 --type hdd --medium "$DISKFILE" && \
    \
    echo "Attaching Resin Install Media" && \
    VBoxManage storageattach "$MACHINE" \
      --storagectl SATA \
      --port 1 --device 0 --type hdd --medium "$RESIN_DISK" && \
    \
    echo "Starting machine for first time setup" && \
    VBoxHeadless --startvm "$MACHINE" && \
    \
    echo "Removing install media" && \
    VBoxManage storageattach "$MACHINE" \
      --storagectl SATA \
      --port 1 --device 0 --type hdd --medium none && \
    \
    echo -e "You now can start machine for future use as: \nVBoxHeadless --startvm \"$MACHINE\""
    

    额外:

    附带说明,如果您在命令行上工作,您也可以通过命令行获取所需的resin.io 映像!

    resin-cli 安装到您的主机上,并使用resin login 登录(使用例如您在resin.io 的仪表板/首选项部分中的API 密钥),

    为 NUC 下载一个裸 OS 映像,例如:

    resin os download intel-nuc -o intel-nuc.img
    

    为您的应用程序创建一个配置,假设您的应用程序的名称是 MyApp:

    resin config generate --app MyApp -o config-MyApp.json
    

    然后将此配置添加到您的图像中:

    sudo resin config inject config-MyApp.json --type intel-nuc --drive intel-nuc.img
    

    (为此,您可能必须运行 sudo resin login 以便您能够正确使用 sudo 和树脂命令。)

    在此之后,您可以将intel-nuc.img 转换为 VMDK 格式,并如上所述设置您的虚拟机。

    【讨论】:

    • 您好 Gergely,感谢您的帮助!但是我在启动具有树脂 VMDK 映像的 VM 时遇到了问题。这次我没有使用 EC2 实例。我在组织网络工作,我无法在 VM 启动时查看启动过程。请您为我建议任何解决方法
    • 你是如何运行 Virtualbox 的?远程?如果您通过VBoxHeadless 运行映像,您将看不到任何启动过程。几分钟后,您的设备会出现在resin.io 仪表板中吗?通过查看启动过程,您试图解决什么问题?
    • 我的设备没有出现在resin.io中。我需要将我的 vmware intel nuc 映像显示在resin.io 仪表板中。
    • 对于这种调试,了解更多信息会有很大帮助。例如,virtualbox 脚本是否有任何错误消息?您如何准确地准备 vm 映像?你启动了什么样的亚马逊机器/它有什么资源?
    • 我在 Ubuntu 64 位虚拟机中安装 resion.io vmdk 映像。我尝试按照此链接 (resin.io/blog/no-hardware-use-virtualbox) 设置虚拟硬件。我没有收到任何错误消息,而当我启动我的机器屏幕时完全是黑色的。引导过程没有发生。注意:我尝试在我的办公室网络中运行代理服务器,为避免这种情况,我提供了开放的网络连接并尝试仍然存在相同的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多