今天,os x虚拟化是一件很容易搞定的事情,因为os x主机完全支持vmware和virtualbox。 但是在裸机和qemu上虚拟化会是什么情况呢?在linux下呢?最终我在qemu上完全搞定了mavericks (没有额外内核拓展哦(!)),不过真不容易。
工作人员
许多关于这件事的工作都归于 gabriel l. somlo ,他完成了这件事的初步工作,然而我不能从他的指南里得到任何干净的安装引导的os x mavericks 版本。因此我只能自己调试了。
为什么?
云中os x. 这是一个仅供娱乐的项目来看看是否我能在一个专用服务器上得到一个虚拟化的os x, 并且我成功了。注意,这仅用于教学目的,并且不被推荐 -- 没有稳定性的保障,另外可能违背苹果的用户最终许可协议。
要准备的东西
为了完成安装,你需要做如下准备:
可以运行kvm的机器
bash shell基本知识
mavericks .iso (由这个shell脚本生成)
mountain lion .iso (由这个shell脚本生成)
git
build-essential (gcc, make, iasl, linux内核headers)
上面的两个shell脚本是相同的,它适用于这两个版本的os x。
安装带os x支持的kvm
首先你需要从git仓库下载最新的kvm代码(这是必须的,因为atp或yum仓库中的kvm没有os x的补丁)。你也需要git仓库中的kvm-kmod代码,你可以通过以下命令获得并构建它们。
安装最新的带os x支持的qemu
我们要从git仓库中下载最新的且打过支持os x补丁的qemu和seabios。
chameleon bootloader引导进入安装程序和os x
你可以在安装os x之后将chameleon安装到磁盘,但方便起见,我们可以向qemu传送一个二进制文件来启动chameleon。
下载这个二进制文件并将它放到与刚才下载的文件夹相同的目录中。
安装 mountain lion
在我们安装mavericks之前,我们必须先安装 mountain lion,然后再进行升级(这是由于直接安装mavericks会导致qemu卡住)。
现在,确保你的 mountain lion 和 mavericks 的 .iso 文件在同一个目录中,从现在开始,我用 mountainlion.iso 和 mavericks.iso 来称呼它们。
现在,我们需要创建一个空白的文件来安装os x(待会儿可以用dd将这拷贝到一个lvm或分区中,但是,不幸的是,在分区被使用的时候,我没有得到用来启动的安装器)。
我们必须使用下面的命令来启动这个客户机:
你可能需要输入一个key,该key可以在一个apple的电脑中使用这里的第一块代码获得。
你需要将./share/qemu/bios-mac.bin 路径替换成你自己的路径(相对你当前的路径,这可能在一个./share 或 ./usr/share中)。
这将会在localhost:5901上开启一个vnc会话,可以连接到该会话,并启动到安装器!
这里的 -smp 定义了客户机中可以使用的核心数。我将它设为4,并且工作很好。但是,只是用一个核也可以使os x运行的很好。
正常安装os x,之后按照下一节的内容继续进行。
升级到 mavericks
这一步和上面的非常像,使用下面的命令打开同一个客户机:
在chameleon中,确保从"os x base system"(你的.iso文件) 中启动,而不是你的hdd。然后在同一个分区中以正常的方式安装mavericks,一定不要格式化该分区。
这步完成之后,你就有了一个可以正常工作的mavericks了!
没有kexts?
这是一个完全原生的系统,不需要对kext做任何改动,甚至都不需要fakesmc。我没有使用fakesmc做过测试,但是它应该可以正常工作。
网络
现在,qemu默认的网卡驱动并不好使,建议你使用 virtio。你可以通过以下方式下载它:
接下来,将下面的命令添加到上面提到的命令中,运行一个客户机,然后安装从挂载的fat驱动器中安装.pkg文件,之后重启,网卡就可以正常工作了!