3 月 1 号回到玉泉,处理了许多杂事,找导师沟通了下毕业设计的问题。沟通的最终结果就是我又被发配到了手机客户端组,继续做 GUI 控件。事实上我最开始选的题目是《海量空间数据的高性能引擎研究》,我还是挺喜欢这个方向的,而且与我在 Baidu 的实习以及日后的工作都有很大的关联性。但是导师一句“题目较难,时间不够”就把我噎了回来,紧接着来一句“我还是希望你能够做一些连续性的工作”——就是去年四月份实验室做的 Windows Mobile 控件开发了。其实我是非常不喜欢这个项目的。对于一个崇尚自由、分享的 Open Source Programmer 来说,用着盗版的 Windows + VS,盗用 Open Source 的成果来开发闭源软件,实实在在是一件不怎么惬意的事情——老实说我也算不上合格的 Open Source Programmer,因为我至今也没有自己的 Open Source 软件。其次是我越来越讨厌关于 Windows 的一切,无论是作为一个 User 还是 Programmer。我最近正计划着写一系列的 Windows 吐嘈文,构思良久,即将面世。
只不过这次不同,我所面对的不再是 Windows Mobile,而是——iOS。
How?这是我脑子里最先冒出的想法——How to write an Win32-Styled GUI program under Windows (or maybe Linux) platform for iOS?我战战兢兢地问了下学长“实验室有苹果机吗?”,答曰“没有,用虚拟机”。
Oh my god。在 Windows 平台上运行着虚拟机,在虚拟机里面运行着 Mac OS X,在 Mac OS X 里面运行 Xcode,在 Xcode 写 Win32-Styled Program,然后将这个 Win32-Styled 的 Program Load 到虚拟机里面的 Mac OS X 里面的 Xcode IDE 里面的 iOS 模拟器上,调试!!!
What a Joke!
不过,吐槽归吐槽,活儿还是要干。鉴于前两次 Hacintosh 的惨痛经历,所以这才在也不敢在自己精心调制好的 ThinkPad x201i 上为所欲为,还是乖乖的虚拟机的好。幸好前两天买了根三星金条,武装到了 4G 内存,否则还真不敢想象在虚拟机里面玩 Leopard。
高级的虚拟机咱不懂,所以诸如 KVM、Xen 就不在考虑之列了。剩下的,最开始接触电脑时玩的 Microsoft Virtual PC,不知道现在活的怎么样。VMware,大概是三年前用过,印象就是臃肿,慢。VirtualBox,我的最爱,开源、免费、跨平台、轻量快捷。所以 VirtualBox 是试验的首选环境。
不过 Mac 平台的封闭性带来一个众人皆知的事实,那就是 Hacintosh 的成功性与人品——也无关,我的意思是说,Hacintosh 的成功与否完全是莫名其妙的事情,无论是虚拟机还是实体机,能否 Hacintosh,要看上帝的心情。
Hacintosh 的版本有很多,比如东皇、iATKOS、iDeneb、OSXPCBETA 等等,boot loader 也有若干种方案,比如变色龙、EFI Emulation 等等,个中详细可以参考 OSx86。而由这些基本“元件”排列组合出来的网上作为“PC 变 Mac”的方案更是五花八门,让人目不暇接。照理说,对各种硬件的良好支持是一个 OS 安身立命的最基本条件,至于 Mac 如何在违背这个基本原则下打拼出自己的逍遥天地,容我另外一篇文章再做分析。
好了,回到正题,继续我的 Mac OS X 遭遇记。我按照老赵点滴上的指示在我的 Arch Linux + VirtualBox 4.0 上做实验,前面都是很顺利的,也出现了下面的 Kernel panic 情况:
按照教程,重启之后就可以进入期盼的 Leopard,可是我却陷入了无限的灰色风火轮等待中。重整多番,调整了多组参数,均以失败告终。
于是转投 VMware,我按照 VMware 的要求,下载了 300+ M 的 VMware 7.1的 bundle,按照 ArchWiki 上的步骤,成功装上了 VMware,但是确始终启动不起来。无奈,转投 Windows吧。之所以坚持 Linux,是因为我需要 LaTeX,我需要 Emacs + AUCTeX + CDLaTeX + Outline-mode 来完成我的毕业论文啊。
好在 Windows 下的 VMware 还算正常,安装过程也算顺利,我就不在细说了。具体过程可以参考《VMWare下安装 MAC OS X Snow Leopard 10.6》,需要注意的主要是:
- 安装之前用 SecurAble 检测下 CPU 是否支持虚拟化;
- 内存至少 1 G,最好主机配上 4 G 内存,而 VMware 配上 2 G 内存,否则慢起来很要命,如果搞开发,硬盘最好 20 G 以上;
- 注意修改 VMware 目录下的
.vmx
下的 guestOS 由guestOS="freebsd-64"
改为guestOS="darwin10"
; - 启动时始终需要 darwin.iso 来引导;
- 成功安装系统后安装 darwin.iso 里面的 vmtools,获得更好地使用体验;
放张图吧:
顺便感叹下,VMware 的虚拟化技术还真是强大,2 G 虚拟内存跑 Mac OS X,速度还真是不赖,界面效果也都能跑的出来。如果再弄个分屏软件,再插上一个 LCD 的液晶屏,就真是两个系统了。
至于 Xcode 和 iOS SDK 的安装就简单很多了,可能需要做一次系统升级。至于 iOS 上如何写 Win32-Style 的 GUI 程序,我现在也是丈二的和尚。至于额外的 Macintosh 吐槽文,还是等以后心情不错的时候再写吧。