你撒下一粒善良的种_子, 会在暗中蔓延出一片灿烂的花海
分类: 系统运维
2011-12-20 09:33:17
• ❑ 首先说说这个 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 先生致谢。