【问题标题】:How is "clean" testing done on the Macintosh without virtualization?在没有虚拟化的情况下如何在 Macintosh 上进行“干净”测试?
【发布时间】:2010-06-10 20:12:00
【问题描述】:

我在 Windows 上遇到的一件事是,当您正在开发的网络浏览器插件或程序假设已安装某些东西时,默认情况下并不总是存在于 Windows 上。 .NET 就是一个完美的例子——很多运行 Windows XP 的人从未安装过任何版本的 .NET,因此安装程序需要检测并在必要时进行补救。

我一直在 Windows 中对此进行测试的方式是让虚拟机具有干净、已修补但未改动的 XP、Vista 或 7 或其他安装的快照。当我完成测试后,我会丢弃自快照以来的所有更改。效果很好。

我现在正在为 Macintosh 开发一些东西,这是一个对我来说非常新的平台,我发现虚拟化似乎不是一个选项。它在 Mac OS X 的 EULA 中被明确禁止,它只允许在 Mac OS X Server 中使用,这看我如何定位最终产品对我来说毫无用处,而我看到的一个可以虚拟化它的程序 - VirtualBox - 仅支持服务器并积极反对任何关于运行 Mac OS X 的消费者/客户端版本的讨论。我在该主题的任何地方找到的唯一说明似乎涉及使用与完整版本非常不兼容的“黑客”程序-time gig 我正在尝试这样做。

所以看起来虚拟化已经过时了,但在不同的点上,我想要或需要模拟在“干净”的 Macintosh 上安装和运行这个软件的感觉。人们通常如何做到这一点?只需购买多台 Macintosh 并使用 Time Machine?我是否认为这一切都错了,一切都正常工作?

说清楚

  • 我不想在 Windows 机器上运行 Mac OS X。我有一台 Macintosh,可以在 Apple 硬件上虚拟化 Mac OS X,我只是没有看到让非服务器版本执行此操作的途径。
  • 我知道 Mac OS X Server 可以虚拟化,但这不是我想要的。
  • 我知道有一些未经批准/不受支持的方法可以让 Mac OS X 在 VirtualBox 等虚拟化程序中运行,但出于法律原因,我对这些方法不感兴趣。
  • 我的问题不是“我该怎么做?”而是“所以我在 Windows 上做的这件事,一般来说,在 Macintosh 上似乎是不可能的,那么人们要怎么做才能实现我的目标?”

【问题讨论】:

  • 您可以搬到美国以外的地方,然后随心所欲地进行虚拟化。
  • @samoz:在世界的大部分地区,诸如“你不能虚拟化”之类的完全愚蠢的限制往往是无效的。事实上,在某些地方,您通常使用的 EULA 甚至一开始就没有法律效力。
  • @Matti 问题通常不在于 EULA,但对虚拟化的物理支持并不多。正如 Schnapple 所说,VirtualBox 甚至不会谈论它,除了 OS X Server。此外,搬出您的祖国并不是一个有效的解决方案。

标签: macos testing virtualization


【解决方案1】:

当我在工作机器上使用无数版本的各种 Windows 虚拟机时,我在 Mac 上从来不需要它。最大的原因是应用程序在 Mac 上捆绑部署的方式。理想情况下,安装是复制,卸载是将应用程序拖到垃圾箱。在 Windows 上,您必须考虑大多数应用程序在 Mac 上没有的应用程序之间的更多共享状态。现在,如果您正在编写设备驱动程序或 VPN 客户端或需要进入系统的这些部分的东西,那么您就没有那么奢侈了。

我真正觉得需要虚拟化的地方是当我想针对不同版本的 OS X,或者进行某种回归检查以查看在 X.Y.X 版本下是否真的有不同的工作方式。

那么我们如何实现您的目标,默认是不关心,因为您不会因应用程序包而面临相同的风险。或者,如果您在意,请购买一堆外部硬盘驱动器以启动并根据需要将它们换掉。 (我只为两个版本的 OS X 做过一次,所以我不能说这真的是行业惯例。)

【讨论】:

  • 您是否经常遇到这样一种情况:您正在开发的东西依赖于您出于某种原因(Xcode、iWork 等)安装的某些文件或技术,但新鲜的- 开箱即用的 Macintosh 没有?
  • 不经常,Apple 似乎非常擅长提供强大的基线,而我需要的其他东西太奇怪了以至于无法假设它存在,所以我只是在应用程序包中包含我自己的框架。我做的东西很专业,所以 YMMV。
【解决方案2】:

您不需要第二台 Mac,您可以在另一个分区或硬盘上安装第二个 OS X 安装。

【讨论】:

    【解决方案3】:

    这通常是您拥有“测试台”的目的。获取第二台 Mac,对全新安装进行映像,然后根据需要安装/重新映像。

    【讨论】:

      【解决方案4】:

      我认为这一切都错了吗? 一切正常?

      就我而言,这不是一个很好的答案,但是有点,是的!实际上没有任何框架不是由应用程序本身安装的,用户应该拥有.

      为了更好地回答这个问题,当然可以在 VMWare Fusion 下虚拟化 OS X“客户端”。从我对older question 的回答中:

      VMWare Fusion 可以运行 10.5/10.6 客户端虚拟机,但您必须通过编辑操作系统安装光盘来欺骗它进行安装。

      这种方法存在一些问题,正如尝试过的人所列举的那样(主要是由于缺乏 3D 加速):

      • DVD 播放器不工作有错误 (-70017)
      • 大多数屏幕保护程序不起作用。
      • 前排加载到黑屏
      • Quicktime 中的屏幕录制产生错误(OSStatus 错误 -108)
      • 虚拟化后所有 Mac 操作系统中的声音都无法正常工作的错误
      • System Profiler 无法找到有关系统组件的大量信息。
      • 20秒虚拟环境下启动时间慢

      根据您的测试要求,这些可能会或可能不会影响您的交易。

      要让 VMWare 认为客户端 10.5 或 10.6 磁盘实际上是服务器,您必须为新 VM 编辑 Fusion 的基础映像:

      sudo bash
      cd "/Library/Application Support/VMware Fusion/isoimages"
      mkdir original
      mv darwin.iso tools-key.pub *.sig original
      sed "s/ServerVersion.plist/SystemVersion.plist/g" < original/darwin.iso > darwin.iso
      openssl genrsa -out tools-priv.pem 2048
      openssl rsa -in tools-priv.pem -pubout -out tools-key.pub
      openssl dgst -sha1 -sign tools-priv.pem < darwin.iso > darwin.iso.sig
      for A in *.iso ; do openssl dgst -sha1 -sign tools-priv.pem < $A > $A.sig ; done
      exit
      

      然后安装操作系统:

      如果您尝试安装,则会出现 Eboot 错误,因此您需要按 F8 进入高级安装。然后在那里使用 -v -install 它应该安装。

      【讨论】:

      • 该问题的参数指定黑客/欺骗VM程序使用Mac OS X不是一种选择。
      猜你喜欢
      • 2022-11-17
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多