OSX修复GPT分区表过程

我的本本是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分区都回来了。
到这里就修复完成了。写给和我遇到同样问题的锋友,少走弯路,不丢数据。

posted @ 2017-04-03 11:21  haiwei.sun  阅读(808)  评论(0编辑  收藏  举报
返回顶部