qileilu 发表于 2010-1-23 18:13

grub2通过tboot引导mac osx成功(grub2自动生成的mac引导项无效)

我一直喜欢用grub做引导,最近刚试着玩mac x86系统,折腾了快一个星期才作好了机子上三个系统的引导,发出来与大家共同探讨,还请高手不吝指点。(高手请直接跳到下面第三点。)

机子概况:dell m1210,单硬盘(sda),第一主分区(sda1)装win7,第二主分区(sda2)装Mac,第三主分区(sda3)做ubuntu的/boot区,逻辑分区若干。

一、系统安装情况
1。先在第一主分区(sda1)安装win7,dell oem 旗舰版。完成后开机能进入win7。
2。装ubuntu 9.10 ,其中 / 与 /home 在逻辑分区,/boot 挂在第三主分区(sda3)上,grub2引导写入硬盘的主引导区(sda)。完成后开机能grub引导选择进入win7和unbuntu 9.10。
3。光盘安装Mac OS X 10.4.8 到第二主分区(sda2),具体安装方法不再累述(我是按这个帖子做的:http://blog.istef.info/2007/04/13/step-by-step-install-mac-osx-on-pc/)。完成后开机只能进Mac OS X。

二、各引导修复情况
1。首先修复win7引导。插入win7安装盘,选择语言后进入修复控制台,不出意外的话系统会自动发现引导问题,进行自动修复,按几下确定按钮,重启就OK了。
    如果win7安装盘引导修复程序不能自动发现并修复引导问题,这是因为grub占用mbr引起的,这时需要先修复硬盘的主引导区(mbr),具体做法是用win CE盘启动,再用PM等硬盘分区程序,重建硬盘主引导区(mbr)即可。
    这里需要说明的是,如果不先修复win7引导的话,直接修复grub引导,那么之后grub引导win7会出错。
2。修复grub2引导。从ubuntu 9.10 安装盘启动,完毕后挂载硬盘的系统分区和设备,chroot到/mnt,重新安装grub2(grub-install)。具体做法详见《grub2中文指南》(这里可下载pdf:http://www.eit.name/blog/read.php?442)。

三、grub2通过tboot引导mac os x 10.4.8
   通过上面重建硬盘的grub2引导你会很兴奋的发现,grub2已经发现了mac系统,并自动为之建立了引导项,但是!!!试了才知道,这个引导项不能用!选择该引导项启动后,进入mac的一连串命令行显示,然后死机,只能拔电池才关得了机,心一下子就凉了!!!google了一、两天,改了很多grub.cfg参数都是一样的结果,最终只好另辟蹊径。
   可是我又不想用变色龙、boothink或者grldr等等来代替一直用的很爽的grub2,于是我想到既然windows的bootmgr可以通过tboot来引导mac 那么强大的grub肯定也能够行。经过两天的摸索我终于成功了,具体做法如下:(以下操作均在linux系统中完成。)

1。首先是下载tboot文件,并把它放在了linux的/boot下,对于我/boot单独分的区就是第三主分区(sda3,其文件格式时ext3)。
2。修改grub2配置文件,建立自定义菜单。
       sudo gedit /etc/grub.d/40_custom
在文件中添加:
menuentry "Mac OS X 10.4.8 (on /dev/sda2)" {                                                #菜单项
insmod ext2                                                                                                         #ext3文件系统支持
set root=(hd0,3)                                                                                                 #设置tboot所在分区
search --no-floppy --fs-uuid --set 53802c49-b7d9-4add-bcdc-05f1b4a10523   #设置tboot分区的uuid,可以不要。
chainloader /tboot                                                                                              #把引导权交给tboot,进一步引导mac
}
完成后保存。
3。更新grub.cfg。
       sudo grub-update

4。重启,选择"Mac OS X 10.4.8 (on /dev/sda2)",哈哈,是不是久违的苹果又出现了!大功告成!!
   补充:记得删除grub2自动生成的那个无用的mac启动项,不然选错了不仅进不了系统,死机了还得拔电池,心疼我的爱机了。

呵呵,刚开始玩mac,请大家多指点啊!

老木寒云满故城 发表于 2010-1-23 18:20

在windows7下用winhex备份mbr,然后安装完9.10后在用dd备份一下,无论是在ubuntu下还是在windows7下,你都可以随便摆弄mbr了

maomihuacha 发表于 2010-1-23 18:22

学习了!祝楼主一帆风水啊 !

qileilu 发表于 2010-1-23 18:22

上面的在40_custom文件中添加部分有点乱,重新发一下,好看些:
menuentry "Mac OS X 10.4.8 (on /dev/sda2)" {
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 53802c49-b7d9-4add-bcdc-05f1b4a10523
chainloader /tboot
}

qileilu 发表于 2010-1-23 18:25

补充一点,如果你的tboot放在windows的c盘的话,也可以这样写:
menuentry "Mac OS X 10.4.8 (on /dev/sda2)" {
insmod ntfs
set root=(hd0,1)
chainloader /tboot
}

apple15 发表于 2010-1-28 22:04

恭喜楼主一下

qileilu 发表于 2010-1-29 00:45

又有新的发现,最近刚重装了mac ,装了iATKOS_v7 ,居然发现grub2 自动生成项完全可用,不过是命令行启动模式,看不到苹果启动界面而已,很爽哦!
详见我在 Leopard区的帖子:利用dell笔记本的MediaDirect键实现grub2和Chameleon的双引导
页: [1]
查看完整版本: grub2通过tboot引导mac osx成功(grub2自动生成的mac引导项无效)