某次用 TimeMachine 回滾系統時誤刪了 Recovery HD,導致 FileVault 無法正常開啟,以及按 Command + R 需要聯網啟動恢復系統等問題。
image.png
于是將恢復方法記錄下來,方便以后 手賤 。
首先需要下載恢復分區的鏡像
Lion 恢復更新
其實只需要這個,并不需要任何系統鏡像。
然后確認下是不是真的刪除了 Recovery HD
$ diskutil list
image.png
是真的不見了。
掛載剛剛下載的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