我的本本是2013年末款rmbp
前段时间安装的系统是win7+OS X10.9.5+OS X10.10.5+OS X10.11 beta+3个版本的安装盘一共是7个引导分区如果算上Recovery HD就是10个可引导分区。
前几天心血来潮,想再安装一个GPT引导的win10,于是直接就腾出空间用OS X自带的磁盘工具分出一个分区。制作好win10启动U盘重启电脑开始安装,到win10安装界面就出问题了,提示需要安装到GPT磁盘。由于我用的自带磁盘工具分区,所以GPT+MBR混合分区表被win10识别为MBR分区表。没办法只好回到OS X拷贝出数据,把win7分区抹掉为HFS+分区,再重新启动用U盘引导,这次又提示需要安装到NTFS分区,win10不能识别HFS+分区所以格式化是灰色的,不管那么多了,直接删除掉分区然后在可用空间新建分区,提示需要建立额外的分区,直接按了确定,分好后win10安装好了。重新电脑,按住option居然只剩下windows了,其它分区去哪了?进win10打开磁盘管理分区都在,安装好Boot Camp后其它分区也无法识别。打开Boot Camp一看,傻眼了,所有分区下面都是windows。以前在win7下面看过OS X分区下面显示的应该是OS X才对啊。我现在才明白为什么不可以在windows下面动分区,windows自作聪明修改了分区表,把所有分区类型都改成了windows分区。
我开始各种搜索翻论坛,始终找不到如何恢复分区表。都没有出过我这种情况吗?于是我开始自己想办法,先到朋友的Air本本上去制作了一个OS X10.9.5的安装U盘。插在我的本本上引导开机,使用自带的磁盘工具验证磁盘,提示需要修复磁盘,点击修复磁盘就提示无法修复,请备份数据抹掉磁盘。悲剧了,自带磁盘工具也不能修复。到这里我就开始思考,是不是可以修改分区表,把OS X分区的类型改回HFS+分区呢。于是借来朋友的Air看GPT命令行工具的man手册,边看边改,最后终于恢复了分区表。具体步骤如下:
查看分区表
-bash-3.2# gpt -r show disk0
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 6
40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
409640 244277768 2 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
244687408 1269536 3 GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
245956944 1712
245958656 32768 4 GPT part - E3C9E316-0B5C-4DB8-817D-F92DF00215AE
245991424 117413888 5 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
363405312 1272
363406584 88574216 6 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
451980800 1269536 7 GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
453250336 13409728 8 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
466660064 262144
466922208 11456608 9 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
478378816 262144
478640960 11331608 10 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
489972568 262151
490234719 32 Sec GPT table
490234751 1 Sec GPT header里面包含了分区起始位置,分区大小,分区编号,分区类型。
我想只要记住分区起始位置,分区大小,分区编号,然后删掉分区,再用同样的参数建立分区,只是把分区类型改为HFS+即可恢复。
根据查看Air上的分区表我知道了windows分区类型为EBD0A0A2-B9E5-4433-87C0-68B6B72699C7,HFS分区类型为48465300-0000-11AA-AA11-00306543ECAC。
卸载磁盘
-bash-3.2# diskutil unmountdisk disk0
Unmount of all volumes on disk0 was successful
删除分区(先用最后一个分区作实验,如果成功,其它分区依此类推即可)
-bash-3.2# gpt remove -i 10 disk0(参数 -i 后面跟需要删除的分区编号,这里我要删除最后一个分区,所以编号是10)
disk0s10 removed(分区删除成功)
建立HFS分区(由于动了分区表,磁盘已经自动重新挂载,所以需要再次卸载磁盘)
-bash-3.2# diskutil unmountdisk disk0
Unmount of all volumes on disk0 was successful
-bash-3.2# gpt add -b 478640960 -s 11331608 -i 10 -t 48465300-0000-11AA-AA11-00306543ECAC disk0(-b是起始扇区-s是扇区数量,即分区大小-i是分区编号-t是分区类型,前面3个参数要和删除之前一模一样,-t要用HFS分区类型,即48465300-0000-11AA-AA11-00306543ECAC)
disk0s10 added(分区添加成功)
到这里,我急于看看是否和我预想的一样,我就重启了,按住option键,出现了1个windows和1个OS X分区,看来我成功了,选择OS X分区,启动成功。于是我又用U盘引导,把其它OS X分区都用这个方法修复了一遍,所有OS X分区都回来了。
到这里就修复完成了。写给和我遇到同样问题的锋友,少走弯路,不丢数据。
OSX修复GPT分区表过程
最新推荐文章于 2024-08-01 16:45:27 发布