【问题标题】:Any way to run a Linux inside a virtual machine, inside my application?有什么方法可以在我的应用程序中的虚拟机中运行 Linux?
【发布时间】:2014-03-27 11:36:21
【问题描述】:

我希望能够分发在我的应用程序中运行的 Linux。原因是我需要添加最容易添加到 Linux 容器中并与应用程序一起分发的软件功能。

有没有办法在 Windows、OSX、Linux 上的 C/C++ 应用程序中运行 VM?

【问题讨论】:

  • 很奇怪的事情...... cygwin 还不够吗?
  • 关于cygwin,cygwin只是解决了在Windows上安装Unix程序的问题。有了一个完整的虚拟机,我可以安装任何东西,比如 PostgreSQL 数据库或应用程序中嵌入的任何东西。一些通常难以嵌入到应用程序中的软件可以随应用程序一起移植。然后我也可以在任何 PC、MAC 或 PC 上分发它。
  • 您打算如何在您的应用程序和主机系统之间进行通信?加上大量的内存使用。加上很长的启动时间。如果这一切都是一个选项 - 只需带上任何虚拟机,我认为“嵌入”没有意义。
  • 没关系,您认为没有意义,我认为我的一个特定现有客户有一个观点,是否有有用的应用程序与该问题并不真正相关。

标签: linux virtual-machine virtualization


【解决方案1】:

VirtualBox 有一个用于创建/运行 VM 的 API。程序Vagrant 使用它为开发人员提供了一种简单的跨平台开发方式。您可以在 Windows、Linux 或 Windows 上运行 vagrant up,它的作用相同。

您还可以编写脚本将端口添加到您的虚拟机,这样您的 C++ 程序就可以说“VirtualBox,启动这个映像”,然后只需连接到 TCP 端口即可与“Linux 程序”通信。但是调试问题会很困难。

但是,如果您的目标是向非 Linux 桌面用户销售 Linux 程序,那么最好硬着头皮将其移植到 Windows/Mac 上。 (或者去 Cloud 并将其作为服务出售。)

【讨论】:

    【解决方案2】:

    我想到了两个框架:

    • User mode Linux 将 Linux 内核作为应用程序运行。这使您可以最终控制从 Linux 应用程序中启动和管理虚拟机。
    • libvirt 提供了一个工具包,用于以编程方式管理各种虚拟机。

    这些可能都需要 Linux 主机。对于其他主机操作系统,可能需要手动管理虚拟机——或使用临时脚本。

    【讨论】:

      【解决方案3】:

      QEMU 可以运行 VM,并且可以在 Windows、Linux 和 OSX 上编译。 http://wiki.qemu.org/Main_Page QEMU 可以像用 C++ 编写一样编译。

      所以理论上,QEMU 可以嵌入到 C++ 程序中并用于运行 Linux VM。

      一个运行 Puppy Linux http://www.erikveen.dds.nl/qemupuppy/ 的 QEMU 示例

      【讨论】:

        猜你喜欢
        • 2015-07-23
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 2012-06-18
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多