这是篇写给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所在分区的超级块出问题的可能性。
解决方法并不复杂。以下晓晓列出解决思路:
- 前往http://chameleon.osx86.hu/下载所使用的Chameleon版本的存档文件。
- 由于手头没有Linux系统,所以需要一个dd for windows来完成对mbr和超级块的读写工作。
- 将下过来的文件解压后放置在同一目录下,进入windows的命令行,并且转到该目录下。
- 先使用dd --list命令查看当前的分区信息。
- 先使用dd if=boot0 of=\\?\Device\Harddisk0\Partition0 bs=440 count=1 将bbot0写入MBR。这里晓晓假定是第一块硬盘。具体of=后面跟什么,就取决于使用dd --list看到的内容了。
- 之后再使用dd if=boot1h of=\\?\Device\Harddisk0\Partition0 bs=512 count=1 同理,of=后面是你的mac所在分区的代号,具体是什么要用dd --list查看。
- 以上步骤做完了以后就可以重启试试了。
注意:晓晓要严重的提醒各位,首先,第一条语句的bs=后跟着的是440而不是其他任何数字。(因为晓晓临时输错了。。。导致出现了更为严重的问题)其次,在做这些之前一定要备份MBR。最好有一个Diskgenius以防万一,用于备份MBR,然后在上面的操作完成后最好在用它查看下分区表是否还正常,如果出问题了就立刻恢复之前的备份。各位切记。
soul
惊心动魄的经历~哈哈哈 :023 解决了?
晓晓
@soul: 注意到偶那句话(因为晓晓临时输错了。。。导致出现了更为严重的问题)……所以实际情况是,mac的分区已经从偶的本里消失了。。。 :038
lovee
没关系的晓晓,来抱抱就好了 :007
晓晓
@lovee: :038 以后么Leopard用了呜呜。。。又要自己重装。。。
soul
:019 实际情况好严重。。重装吧~偶想看 其实偶更想看乃小本坏掉的瞬间。。"boot1 error"该是多么的壮观啦啦啦-_,-。。。
晓晓
@soul: 就是黑黑的屏幕,然后顶上那么几个白字而已啦。。。乃也腹黑属性外露了。。话说,你每次评论的时候,网站那一栏都不把自己的博客地址填上的么? :009
王彬
你的第五步和第六步冲突了,第六步的操作覆盖了第五步里面写的内容
从你的描述来看是分区的引导记录(PBR)被损坏了,不是硬盘的引导记录(MBR).
另外dd更新mbr的方法应该是
dd if=boot0 of=\\?\Device\Harddisk0 bs=440 count=1
类似这样的操作
晓晓
@王彬: 啊啦,我在第六步有注明of后面跟着的应该是具体分区的代号啊——只是我省得写了而已,所以就把第五步的复制过来了哈。
另外,你所说的更新mbr的方法和我在第五步里说的没区别啊。。。 :009
王彬
@晓晓:
好长时间没来,呵呵
我是根据你写的操作步骤猜测的,我并没有遇到这种情况.
你开始写的操作步骤5-6步都是操作了第一个硬盘的第一个分区.
按照你后一篇的文章应该是mbr出现的问题,Win7覆盖了硬盘MBR,PBR应该是没问题的,但是win7装完之后激活了它的引导主分区导致的
所以我猜测,你把mac的mbr覆盖硬盘上面的mbr,然后激活你的mac的boot分区就可以了
晓晓
@王彬: 嗯,确实,当然你所说的mac的mbr这个东西是不存在的——只有chameleon而已……毕竟mac机上不是BIOS构架的……我的修复方法就是把chameleon覆盖回mbr去咯,这样mac系统就回来咯……
但是windows7的位于mbr中的引导程序是无疑受到破坏的,再不修复之前,就算激活win7分区也会报引导错误的……用win安装盘修复引导还是免不了的…… :024
王彬
你回复的还真快啊.
我说下我对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等等起到的作用是一样的,只是运作机制不一样.
当然上面这些东西都是建立在黑苹果的基础上,我没有苹果机,没研究过原版的苹果系统.
不知不觉写了这么一大堆,感觉还有好多东西没说出来,表达能力不行,献丑了,呵呵
欢迎继续讨论,呵呵
晓晓
@王彬: 嘛……从某种角度来看你这么说也没错……
但是因此把GUID分区简单的解释为从MBR引导EFI分区恐怕还是太草率了吧……
在GPT中MBR只是一个为了向下兼容而保留的一个东西,主要目的是让不支持GPT格式的磁盘工具不会破坏GPT分区,所以只是被称为protective MBR,具体在mac启动时有没有参与引导并不一定。因为在正常情况下,是由preEFI来直接引导EFI启动的。在EFI构架的mac下,可是有固件这么一说的哈……所以它是不能简单的和hackintosh作类比的。
但,这里也有个比较奇怪的情况,就是mac系统在纯MBR分区下也能正常使用——但不完全。是两种运行模式呢还是完全与底层分离了呢偶不清楚哦。 :009
此外关于MBR和PBR的话……晓晓知道的也还算清楚啦,不用花那么多墨水呃……挺辛苦的写着…… :007
王彬
国内研究原版MAC的太少了,大多都是买了MAC装xp,或者买了兼容机拼命装黑苹果,呵呵,所以我对原版的结构不了解,买了原版的也不会去这么辛苦的研究它的启动机制,反倒是装黑苹果的拼命研究.按照你的说法原版苹果在类似兼容机的bios的里面做了手脚,但是我查过好多资料,记得有这么一条,intel的主板在945还是965之后都加入了EFI,包括很多做bios的厂商,都加入了EFI,我的就是965的板子,但是没发现什么区别.因此我对MAC的什么EFI架构产生了怀疑,认为它只是忽悠广大群众的广告词.
以上都是我的浅见,先不多说了.
平时不怎么来这里,前两天搜索的时候,看到你提到我的名字,才又回来的,呵呵,这样吧留下我的gtalk:haipengno1@gmail.com
欢迎进一步交流
晓晓
@王彬: 啊啦……偶不太用gtalk的……邮件倒是常用……为啥你会填写tom的邮箱呢……
mac的efi是基于Intel的 EFI 1.0草案的实现,与后来Intel所称的EFI是有区别的。
你所说的645、965中添加了EFI……这点实际上并没有实现吧……基本上没有厂商这么做貌似……
EFI实际上还是很神奇的东西呢……就像一个mini操作系统一样……如果你有mac的话,你会发现你可以在它的EFI界面中运行第三方程序呢……(当然前提是需要一些修改操作以进入命令行状态) :019
王彬
习惯了用这个邮箱,呵呵.
我猜测MAC的EFI只是装在那个200M左右的分区的一个微系统,like windows pe or linux livecd,不过对普通PC做了限制,所以普通PC需要黑一下,呵呵.
可以做下测试,将那个200M的分区删除,然后再试试能不能进入EFI,当然要做好备份.
windows7号称多了EFI,因此它会多出那个200M的分区.而且基于mac可以直接安装windowsxp,就是完全不要mac系统,基于以上原因,我猜测那个mac的EFI只是存放在那个分区上面的
如果我有个原版mac的话,可能会更确定这一点吧,呵呵
王彬
话说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在时空胶囊的广告词里说的硬盘是服务器硬盘,结果拆机出来的硬盘其实就一个普通台式机硬盘而已
ijpli
请指导:我把win7.iso拷在移动硬盘的另一分区上,用虚拟光驱进行安装升级我的电脑,win7安装好了。但是我在该移动硬盘的mac os x 10.5.7进不去了!Chameleon出问题了!被win7给干掉了!!!我该怎样回复该移动硬盘上mac os x 的Chameleon启动问题...?,我有另一块移动硬盘装有Linux系统,怎样利用它来恢复,Linux系统能够读写mac os 扩展(日志式)的分区和ntfs分区。谢谢!请赐教。