【问题标题】:Porting UNIX application to MAC OS X将 UNIX 应用程序移植到 MAC OS X
【发布时间】:2013-01-22 00:02:29
【问题描述】:

我是一名学生,正在从事一个学术项目 - '将 KVM 移植到 MAC OS X'。我收集了很多关于 KVM、MAC OS X 等的文献,但是,我仍然不清楚如何进行。我查看了 Apple 的开发者网站,其中列出了移植过程中要做的一百件事。我不明白为什么 Mac 以 UNIX 为核心,需要对源代码进行大量更改才能使其运行。 另外,我听说 Fink(还有 ma​​cports)是一种工具,我可以使用它将任何 Unix 应用程序移植到 Mac OS X。是这样吗?我查看了 Fink 的网站,在那里我没有找到任何表明我可以使用 Fink 作为移植工具的详细信息。我所看到的只是 Fink(还有 ma​​cports)是一个包管理系统,它有多个 linux 应用程序,并且只能在 Mac 上运行这些应用程序。 KVM 不在列表中。所以,我再次感到困惑。请建议我,如何去做?只需一步。苹果社区建议的方式是唯一的方式吗?请帮忙。

【问题讨论】:

  • 芬克超老,别用了。
  • 什么是KVM? Mac OS X 的核心也是 unix(类似 BSD),而 Linux 不是,虽然它是 unixy 和 posix,但它更像 AT&T V 而不是 BSD。
  • KVM 是内核虚拟机,它协助硬件辅助虚拟化,就像管理程序一样。它的核心是一个 unix 应用程序,我们需要知道是否有任何舒适的方法可以将其移植到 mac os x。

标签: macos unix porting kvm fink


【解决方案1】:

我相信你看错了方向。

KVM 不是应用程序。 QEMU,KVM 的标准用户界面,主要是前端。 KVM 的主要部分位于 Linux 内核中。您必须为 OS X 提供与该内核代码等效的代码。

这与应用程序移植完全不同。在操作系统的内核中没有像 POSIX 这样的标准——甚至不能保证同一内核的不同版本之间的内部接口兼容性。 Linux 和 OS X 内核即使在基本设计上也完全不同,因为 OS X 使用Mach-based 内核。

您必须了解这两个内核的工作原理,并找出您需要进行哪些更改。根据两个内核的不同,您的任务甚至可能相当于完全重新实现 KVM。您还需要具体了解虚拟化是如何在现代 CPU 上实现的,并且很可能不仅仅是关于组装和各种低级计算机细节的知识。

【讨论】:

    【解决方案2】:

    如果您找到具有您正在寻找的功能的东西,它不会是 KVM 的端口。

    你要抽象的层次在mac上甚至都不存在,底层都是不同的……

    (近似值)

    门楣->
    BIOS:引导加载程序:LINUX_KERNEL:初始化

    Macintel->
    UEFI:MACH_MICROKERNEL:BSD_STUFF:启动

    两者都是 POSIX,您可能期望更多的基础是相同的,但实际上它们都是不同的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多