某次用 TimeMachine 回滚系统时误删了 Recovery HD,导致 FileVault 无法正常开启,以及按 Command + R 需要联网启动恢复系统等问题。
于是将恢复方法记录下来,方便以后 手贱 。
首先需要下载恢复分区的镜像
Lion 恢复更新
其实只需要这个,并不需要任何系统镜像。
然后确认下是不是真的删除了 Recovery HD
$ diskutil list
是真的不见了。
挂载刚刚下载的dmg
$ hdiutil attach ~/Downloads/RecoveryHDUpdate.dmg
释放文件
$ pkgutil --expand /Volumes/Mac\ OS\ X\ Lion\ Recovery\ HD\ Update/RecoveryHDUpdate.pkg ~/Desktop/RecoveryHD
挂载 RecoveryHDMeta.dmg
$ hdiutil attach ~/Desktop/RecoveryHD/RecoveryHDUpdate.pkg/RecoveryHDMeta.dmg
运行并且创建分区
$ ~/Desktop/RecoveryHD/RecoveryHDUpdate.pkg/Scripts/Tools/dmtest ensureRecoveryPartition / /Volumes/Recovery\ HD\ Update/BaseSystem.dmg 0 0 /Volumes/Recovery\ HD\ Update/BaseSystem.chunklist
Creating recovery partition: finished
检查是否创建成功
$ diskutil list
但是这样恢复的是 Lion 的版本啊
于是依旧没有逃脱下载安装盘的命运。
从安装盘中提取出 InstallESD.dmg 文件,放在下载文件夹。
RecoveryHDUpdate.dmg 也同样放在下载文件夹。
创建一个脚本,保存为 recoveryhd.sh
echo "确定RecoveryHDUpdate.dmg和InstallESD.dmg都已经放在了“下载”文件夹里!"
read -p "Ensure "RecoveryHDUpdate.dmg" and "InstallESD.dmg" are in your Downloads folder and press [Enter]"
echo "如果这货最后提示你文件找不到,请手动编辑脚本来修改下安装盘的名字!!!"
read -p "Please edit the name of ESD by your self if this sh do not work while!!![Enter]"
#access dmtest from RecoveryHDUpdate.pkg
rm -rf /private/tmp/RecoveryHDUpdate
echo "Expanding RecoveryHDUpdate.pkg"
hdiutil attach -nobrowse ~/Downloads/RecoveryHDUpdate.dmg
pkgutil --expand /Volumes/Mac\ OS\ X\ Lion\ Recovery\ HD\ Update/RecoveryHDUpdate.pkg /tmp/RecoveryHDUpdate
echo "ejecting RecoveryHDUpdate.dmg"
hdiutil eject /Volumes/Mac\ OS\ X\ Lion\ Recovery\ HD\ Update
echo "Expanding BaseSystem"
hdiutil attach -nobrowse ~/Downloads/InstallESD.dmg
#Move BaseSystem to tmp,please edit the name of ESD by your self if this sh do not work while!!!
#就是修改下面的”Mac\ OS\ X\ Install\ ESD“,根据实际情况去掉Mac这个单词~
cp /Volumes/Mac\ OS\ X\ Install\ ESD/BaseSystem.dmg /tmp/BaseSystem.dmg
cp /Volumes/Mac\ OS\ X\ Install\ ESD/BaseSystem.chunklist /tmp/BaseSystem.chunklist
echo "ejecting InstallESD.dmg"
hdiutil eject /Volumes/Mac\ OS\ X\ Install\ ESD/
read -p "一切都已经准备就绪,按回车就可以开始了![Enter]"
#build Recovery partition
echo "Building Recovery Partition. Please Wait"
/tmp/RecoveryHDUpdate/RecoveryHDUpdate.pkg/Scripts/Tools/dmtest ensureRecoveryPartition / /tmp/BaseSystem.dmg 0 0 /tmp/BaseSystem.chunklist
clear
diskutil list
read -p " Apple_Boot Recovery HD 是不是已经存在了?重启按住option试试,看看recovery HD是不是已经回来了![Enter]"
exit 0
添加执行权限 chmod +x recoveryhd.sh
然后运行 ./recoveryhd.sh