Life Journal

随笔,及其他

我是 Xiao Xiao,在日本的产品经理,偶尔也写代码,iOS/Mac/Web,偶尔也做设计,爱用 Sketch,偶尔写文字,存在这里。


小心Win7毁了你的Mac OS X

这是篇写给Hackintosh童鞋的文章,所以使用Machintosh同学请绕路。

此篇文章源于本人今晚的一次惊心动魄的经历。

前些日子晓晓看见网上游官方中文版的Windows 7 build7068下载,一向铁了心等正式版的晓晓也没有能够抵抗住诱惑,下过来安装以尝尝鲜。虽然感觉很一般的说——不过这不是正题。

今晚晓晓在教二上选修的时候决定切到Mac OS X下去更新一篇Mac的新手教程。就在这时,不幸的事情发生了。到本该是bootloader的时候屏幕显示一行大字:boot1 error

直觉告诉晓晓,Chameleon出问题了。因为chameleon最重要的两部分就是boot0和boot1h,前者是用来写入mbr的引导代码,后者则是用来写在mac所在分区的超级块中。晓晓快速地回忆了一下最近对MBR所做过的所有操作,除了正常的分区激活操作以外,唯一剩下的就是Windows 7的安装了。最大的可能就是,Windows 7重写了MBR,使得Chameleon的boot0部分被覆盖,造成Chameleon bootloader无法正常启动。当然,不能排除是因为某些原因导致mac所在分区的超级块出问题的可能性。

解决方法并不复杂。以下晓晓列出解决思路:

  1. 前往http://chameleon.osx86.hu/下载所使用的Chameleon版本的存档文件。
  2. 由于手头没有Linux系统,所以需要一个dd for windows来完成对mbr和超级块的读写工作。
  3. 将下过来的文件解压后放置在同一目录下,进入windows的命令行,并且转到该目录下。
  4. 先使用dd –list命令查看当前的分区信息。
  5. 先使用dd if=boot0 of=\?\Device\Harddisk0\Partition0 bs=440 count=1 将bbot0写入MBR。这里晓晓假定是第一块硬盘。具体of=后面跟什么,就取决于使用dd –list看到的内容了。
  6. 之后再使用dd if=boot1h of=\?\Device\Harddisk0\Partition0 bs=512 count=1 同理,of=后面是你的mac所在分区的代号,具体是什么要用dd –list查看。
  7. 以上步骤做完了以后就可以重启试试了。

注意:晓晓要严重的提醒各位,首先,第一条语句的bs=后跟着的是440而不是其他任何数字。(因为晓晓临时输错了。。。导致出现了更为严重的问题)其次,在做这些之前一定要备份MBR。最好有一个Diskgenius以防万一,用于备份MBR,然后在上面的操作完成后最好在用它查看下分区表是否还正常,如果出问题了就立刻恢复之前的备份。各位切记。