浏览文章列表
小心Win7毁了你的Mac OS X « Life Journal

这是篇写给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,然后在上面的操作完成后最好在用它查看下分区表是否还正常,如果出问题了就立刻恢复之前的备份。各位切记。

Sid 晓 星期二, 四月 7th, 2009 10:33 下午 GMT +8
  1. soul

    惊心动魄的经历~哈哈哈 :023 解决了?

    星期二, 四月 7th, 2009 10:40 下午 GMT +8
  2. 晓晓

    @soul: 注意到偶那句话(因为晓晓临时输错了。。。导致出现了更为严重的问题)……所以实际情况是,mac的分区已经从偶的本里消失了。。。 :038

    星期二, 四月 7th, 2009 10:54 下午 GMT +8
  3. lovee

    没关系的晓晓,来抱抱就好了 :007

    星期二, 四月 7th, 2009 10:55 下午 GMT +8
  4. 晓晓

    @lovee: :038 以后么Leopard用了呜呜。。。又要自己重装。。。

    星期二, 四月 7th, 2009 11:02 下午 GMT +8
  5. soul

    :019 实际情况好严重。。重装吧~偶想看 其实偶更想看乃小本坏掉的瞬间。。"boot1 error"该是多么的壮观啦啦啦-_,-。。。

    星期二, 四月 7th, 2009 11:22 下午 GMT +8
  6. 晓晓

    @soul: 就是黑黑的屏幕,然后顶上那么几个白字而已啦。。。乃也腹黑属性外露了。。话说,你每次评论的时候,网站那一栏都不把自己的博客地址填上的么? :009

    星期二, 四月 7th, 2009 11:25 下午 GMT +8
  7. 王彬

    你的第五步和第六步冲突了,第六步的操作覆盖了第五步里面写的内容
    从你的描述来看是分区的引导记录(PBR)被损坏了,不是硬盘的引导记录(MBR).
    另外dd更新mbr的方法应该是
    dd if=boot0 of=\\?\Device\Harddisk0 bs=440 count=1
    类似这样的操作

    星期五, 四月 24th, 2009 10:17 上午 GMT +8
  8. 晓晓

    @王彬: 啊啦,我在第六步有注明of后面跟着的应该是具体分区的代号啊——只是我省得写了而已,所以就把第五步的复制过来了哈。
    另外,你所说的更新mbr的方法和我在第五步里说的没区别啊。。。 :009

    星期五, 四月 24th, 2009 12:41 下午 GMT +8
  9. 王彬

    @晓晓:
    好长时间没来,呵呵
    我是根据你写的操作步骤猜测的,我并没有遇到这种情况.
    你开始写的操作步骤5-6步都是操作了第一个硬盘的第一个分区.
    按照你后一篇的文章应该是mbr出现的问题,Win7覆盖了硬盘MBR,PBR应该是没问题的,但是win7装完之后激活了它的引导主分区导致的
    所以我猜测,你把mac的mbr覆盖硬盘上面的mbr,然后激活你的mac的boot分区就可以了

    星期三, 五月 20th, 2009 03:31 下午 GMT +8
  10. 晓晓

    @王彬: 嗯,确实,当然你所说的mac的mbr这个东西是不存在的——只有chameleon而已……毕竟mac机上不是BIOS构架的……我的修复方法就是把chameleon覆盖回mbr去咯,这样mac系统就回来咯……
    但是windows7的位于mbr中的引导程序是无疑受到破坏的,再不修复之前,就算激活win7分区也会报引导错误的……用win安装盘修复引导还是免不了的…… :024

    星期三, 五月 20th, 2009 03:43 下午 GMT +8
  11. 王彬

    你回复的还真快啊.
    我说下我对mac启动机制的理解吧,其实原理跟windows是类似的,只不过它需要先通过mbr引导EFI分区,然后EFI分区再引导真正的mac,跟单独为boot创建了主分区的linux引导情况有些类似,而windows7以前的系统和默认的linux安装方式的分区类型与mac的不同,mac的是GPT格式,windows7里面也是跟mac相同,安装了windows7会把mac的mbr的内容覆盖掉,你可以看下,装了window7之后会多出一个200M的分区,这就是传说中的EFI分区,同样mac也会有这个分区,因此出现你的这种情况
    其实mac有很多地方跟windows或者linux还是比较相似的,但是国内讨论mac的论坛比较少,而且发帖质量也不是很高,有很多个人的错误观点误导大家,(感觉好多用mac的人都有点不求甚解,呵呵).比如:MAC没有mbr,mbr就是硬盘的前N个扇区,dos到windowsxp的都是第一个扇区512个字节,其中包含了分区表信息.好多一键恢复就是在这里面做文章,占用了后面几个扇区,它们的引导机制是读取分区表信息,然后找到激活的主分区之后把引导权交给这个分区的PBR,这个分区的PBR就是这个分区的前几个扇区
    其实chameleon就是一个引导程序,它跟grub或者SystemCommander等等起到的作用是一样的,只是运作机制不一样.
    当然上面这些东西都是建立在黑苹果的基础上,我没有苹果机,没研究过原版的苹果系统.
    不知不觉写了这么一大堆,感觉还有好多东西没说出来,表达能力不行,献丑了,呵呵
    欢迎继续讨论,呵呵

    星期四, 五月 21st, 2009 11:19 下午 GMT +8
  12. 晓晓

    @王彬: 嘛……从某种角度来看你这么说也没错……
    但是因此把GUID分区简单的解释为从MBR引导EFI分区恐怕还是太草率了吧……
    在GPT中MBR只是一个为了向下兼容而保留的一个东西,主要目的是让不支持GPT格式的磁盘工具不会破坏GPT分区,所以只是被称为protective MBR,具体在mac启动时有没有参与引导并不一定。因为在正常情况下,是由preEFI来直接引导EFI启动的。在EFI构架的mac下,可是有固件这么一说的哈……所以它是不能简单的和hackintosh作类比的。
    但,这里也有个比较奇怪的情况,就是mac系统在纯MBR分区下也能正常使用——但不完全。是两种运行模式呢还是完全与底层分离了呢偶不清楚哦。 :009
    此外关于MBR和PBR的话……晓晓知道的也还算清楚啦,不用花那么多墨水呃……挺辛苦的写着…… :007

    星期四, 五月 21st, 2009 11:41 下午 GMT +8
  13. 王彬

    国内研究原版MAC的太少了,大多都是买了MAC装xp,或者买了兼容机拼命装黑苹果,呵呵,所以我对原版的结构不了解,买了原版的也不会去这么辛苦的研究它的启动机制,反倒是装黑苹果的拼命研究.按照你的说法原版苹果在类似兼容机的bios的里面做了手脚,但是我查过好多资料,记得有这么一条,intel的主板在945还是965之后都加入了EFI,包括很多做bios的厂商,都加入了EFI,我的就是965的板子,但是没发现什么区别.因此我对MAC的什么EFI架构产生了怀疑,认为它只是忽悠广大群众的广告词.
    以上都是我的浅见,先不多说了.
    平时不怎么来这里,前两天搜索的时候,看到你提到我的名字,才又回来的,呵呵,这样吧留下我的gtalk:haipengno1@gmail.com
    欢迎进一步交流

    星期五, 五月 22nd, 2009 11:21 上午 GMT +8
  14. 晓晓

    @王彬: 啊啦……偶不太用gtalk的……邮件倒是常用……为啥你会填写tom的邮箱呢……
    mac的efi是基于Intel的 EFI 1.0草案的实现,与后来Intel所称的EFI是有区别的。
    你所说的645、965中添加了EFI……这点实际上并没有实现吧……基本上没有厂商这么做貌似……
    EFI实际上还是很神奇的东西呢……就像一个mini操作系统一样……如果你有mac的话,你会发现你可以在它的EFI界面中运行第三方程序呢……(当然前提是需要一些修改操作以进入命令行状态) :019

    星期五, 五月 22nd, 2009 12:16 下午 GMT +8
  15. 王彬

    习惯了用这个邮箱,呵呵.
    我猜测MAC的EFI只是装在那个200M左右的分区的一个微系统,like windows pe or linux livecd,不过对普通PC做了限制,所以普通PC需要黑一下,呵呵.
    可以做下测试,将那个200M的分区删除,然后再试试能不能进入EFI,当然要做好备份.
    windows7号称多了EFI,因此它会多出那个200M的分区.而且基于mac可以直接安装windowsxp,就是完全不要mac系统,基于以上原因,我猜测那个mac的EFI只是存放在那个分区上面的
    如果我有个原版mac的话,可能会更确定这一点吧,呵呵

    星期六, 五月 23rd, 2009 10:33 下午 GMT +8
  16. 王彬

    话说Inter时代的MAC已经与现在的兼容PC没有太大的差别了吧,好多普通PC可以直接安装原版MAC
    下面这个链接更能验证这个问题
    http://mac.maiyadi.com/viewthread.php?tid=60124&extra=&page=1
    与我的猜测相符.mac其实就是针对特定硬件的操作系统+特殊的分区格式而已
    安装mac的成功几率有两大要素,
    1:硬件与原装mac机器的相似程度
    2:guid分区格式
    仅此而已
    EFI只是mac放出的烟幕弹,用来混淆试听的,如果相同的硬件,完全可以自己构造一个EFI分区出来,实现相同的功能.
    说道这里我想起了MAC在时空胶囊的广告词里说的硬盘是服务器硬盘,结果拆机出来的硬盘其实就一个普通台式机硬盘而已

    星期六, 五月 23rd, 2009 10:44 下午 GMT +8
  17. ijpli

    请指导:我把win7.iso拷在移动硬盘的另一分区上,用虚拟光驱进行安装升级我的电脑,win7安装好了。但是我在该移动硬盘的mac os x 10.5.7进不去了!Chameleon出问题了!被win7给干掉了!!!我该怎样回复该移动硬盘上mac os x 的Chameleon启动问题...?,我有另一块移动硬盘装有Linux系统,怎样利用它来恢复,Linux系统能够读写mac os 扩展(日志式)的分区和ntfs分区。谢谢!请赐教。

    星期三, 十月 7th, 2009 12:16 下午 GMT +8
And a comment!
Your name
Your mail (will not be published)
Your website