Chinaunix首页 | 论坛 | 博客
  • 博客访问: 769135
  • 博文数量: 112
  • 博客积分: 2581
  • 博客等级: 少校
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-18 13:05
个人简介

你撒下一粒善良的种_子, 会在暗中蔓延出一片灿烂的花海

文章分类

全部博文(112)

文章存档

2019年(4)

2018年(2)

2017年(1)

2016年(1)

2015年(3)

2014年(6)

2013年(6)

2012年(2)

2011年(20)

2010年(16)

2009年(28)

2008年(23)

分类: 系统运维

2011-12-20 09:33:17

❑ 从 10.7.2 beta 11C6X 开始,启用 iCloud Find My Mac 功能,必须需要 Recovery HD 的存在。由于这个分区比较特殊,常规方法不能够创建它。导致很多同学为此,需要重装 OS X Lion。当然,重装是一个非常常规,且安全的恢复 Recovery HD 的做法。但是,如果你非常讨厌重装系统,则通过手工创建,也是可以恢复它的。由于此项工作牵扯修改磁盘分区和较多的危险终端命令,所以,请各位首先要备份 所有重要文件,三思而后行。一切不良后果与本人无关!

• ❑ 首先说说这个 Recovery HD 的特殊性,通过终端执行命令 diskutil list 我们可以得知,Recovery HD 的分区格式。 示例如下:

 

Buicks-MacBook-Pro:~ buick$ diskutil list

 

/dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *512.1 GB disk0 1: EFI 209.7 MB disk0s1 2: Apple_HFS OS X Lion 509.4 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3

 

可以看出, Recovery HD 的分区格式,为 Apple_Boot,此类型分区,无法通过 Disk Utility 磁盘工具,进行创建,这也就是难点所在。

 

▼ ❑ 好在,OS X Lion 的强大终端,让一切有了可能。要重新创建这个 Recovery HD,你需要准备一个拥有 Recovery HD 的系统盘,这个系统盘可存在与内置,外置硬盘,或 U 盘中。如果你还没有这个带有 Revoery HD 的系统,则首先,你要安装 OS X Lion 到上述设备中。以 U 盘为例,你将 Lion 安装到 U 盘中后,则你会发现一个 Revoery HD,这个 U 盘系统留作备用。(关于如何将 OS X Lion  安装到外置硬盘或U盘中,本文不讨论,自行查阅即可)。下面开始恢复分区的步骤。

• ❑ 首先,使用我们刚刚装到 U 盘中的系统,启动 Mac。使用 Disk Utility 对你需要恢复 Recovery HD 的磁盘,首先进行分区修复操作,然后,创建一个新的分区。大小不要小于 700MB,如果不能设置到很精确,也不要紧,我们可以手工修改它的大小,这个分区一定要紧跟在主分区之后。 然后使用 diskutil 终端命令,查看你准备好的那个 Recovery HD 的大小。如前面的例子可以看出,Revoery HD 为 650MB,则我们使用 diskutil 命令,调节我们刚刚创建的新分区。首先还是用 diskutil list 命令,找到新分区的设备名称,比如 disk0s3(这个名称根据你实际情况来写,此处为示例) 则调整分区大小的命令示例如下:

 

sudo diskutil resizeVolume disk0s3 650002432B

 

命令很好解释,disk0s3(这个名称根据你实际情况来写,此处为示例)  是我们通过 diskutil 命令查看到的新分区设备名,650002432B 则是新分区调整后的大小。也就是 650MB, 注意  650002432B 这个写法, 650002432 是大小,B(yetes) 是单位,中间没有空格!

 

命令完成之后,记得在 Disk Utility 中卸载该分区。

• ❑ 分区大小调节完毕后,则需要更改这个分区的分区格式,因为,Recovery HD 必须为 Apple_Boot 才能够有效。这时我们使用 gpt 命令。首先根据前一步的操作,我们知道新建分区的设备名是 disk0s3 那么,disk0 为硬盘设备名,s3 为分区编号(这个名称根据你实际情况来写,此处为示例)。我们使用 gpt 命令,首先得到我们新创建的分区,在整个磁盘的起始点。

 

bash-3.2# gpt 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 246725744 2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC 247135384 262144 247397528 1269528 3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC 248667056 1402591 250069647 32 Sec GPT table 250069679 1 Sec GPT header

 

 

从这个结果得知,新的分区,起点在 247397528 大小为 1269528 那么我们首先要做的,是删除此分区,(删除分区前,一定记得纪录分区起始点,大小)。命令如下:

 

sudo gpt remove -b 247397528 -s 1269528 -t 48465300-0000-11AA-AA11-00306543ECAC disk0

 

这样,就删除了刚才我们新创建的 650MB 分区,然后,再次进行创建。命令如下:

 

sudo gpt add -b 247397528 -s 1269528 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0

 

注意红色字体部分,分区 GUID (可以理解为类型编码) 是不同的,这个编码,才能够创建一个 Apple_Boot 格式的分区。

• ❑ 通过1,2步骤,我们已经完成了 Apple_Boot 格式分区的创建工作,最后,是将我们新装系统中的 Recovery HD 内容,完整复制到新创建的 Revoery HD 分区中。可以简单的使用 dd 命令完成。示例如下:

 

sudo dd if=/dev/disk2s3 of=/dev/disk0s3

 

if 是源分区,of 是目标分区,这条命令的意思,就是将新装系统中的 Revoery HD 内容(/dev/disk2s3 这个名称根据你实际情况来写,此处为示例) 复制到我们手工创建的 Recovery HD 分区(/dev/disk0s3 这个名称根据你实际情况来写,此处为示例)中。整个复制过程依据极性性能不同而不同,请耐心等待。

• ❑ dd 命令成功后,请再次运行 diskutil list 这个命令,验证是否成功。

• ❑ 注意,如果在使用 disktutil resizeVolume 命令,或 got show 命令,时候,出现错误,或者 Resource busy 字样子,请对目标分区,进行 Repair (修复),和卸载分区操作。

• ❑ 本文参考 的文章,原帖地址为 在此,向其作者 Dmitry Dulepov 先生致谢。

阅读(2905) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~