首页 > 其它语言 > OSX: 使用命令行对FileVault2分区恢复

OSX: 使用命令行对FileVault2分区恢复

FileVault 2必须有Recovery HD分区,因为它依赖于它作为系统初启动。如果今后什么时候或者误操作删除了Recovery HD分区,那么你的机器就无法启动鸟。 是否使用苹果的办法重新获得一个Recovery HD就可以了呢?原理上说不行,因为还记得当初加密的时候的密钥吗?它也丢了,丢了就无法解密了。所以呢,我们需要另辟途径来恢复它。

 

一般步骤:

基于一个FileVault 2是基于CoreStorage逻辑卷管理技术的事实,我们可以从CoreStorage入手。

先看看一个被加密过的磁盘回变成什么样子,注意其中的Unlocked行,后面会提到:

 

[python][/python] view plaincopy

  1. $ diskutil coreStorage list
  2. CoreStorage logical volume groups (1 found)
  3. |
  4. +-- Logical Volume Group 26B67367-CF79-4D1E-884C-BB96FDD79D19
  5.     =========================================================
  6.     Name:         FileVault
  7.     Sequence:     1
  8.     Free Space:   0 B (0 B)
  9.     |
  10.     +-< Physical Volume A446F211-3BCB-47F4-8EB2-7174AF4CD408
  11.      |   ----------------------------------------------------
  12.      |   Index:    0
  13.      |   Disk:     disk4s2
  14.      |   Status:   Online
  15.      |   Size:     9896046592 B (9.9 GB)
  16.      |
  17.      +-> Logical Volume Family 8D077574-ADC1-4979-9F1E-FF901FC20D86
  18.         ----------------------------------------------------------
  19.         Sequence:               8
  20.         Encryption Status:      Unlocked
  21.         Encryption Type:        AES-XTS
  22.         Encryption Context:     Present
  23.         Conversion Status:      Complete
  24.         Has Encrypted Extents:  Yes
  25.         Conversion Direction:   -none-
  26.         |
  27.         +-> Logical Volume BD95F022-812D-366A-909C-286E5443D88E
  28.             ---------------------------------------------------
  29.             Disk:               disk5
  30.             Status:             Online
  31.             Sequence:           4
  32.             Size (Total):       125505781760 B (125.5 GB)
  33.             Size (Converted):   125505781760 B (125.5 GB)
  34.             Revertible:         Yes (unlock and decryption required)
  35.             LV Name:            FileVault
  36.             Volume Name:        FileVault
  37.             Content Hint:       Apple_HFS

它原来看上去是这个样子的:

 

 

[python][/python] view plaincopy

  1. diskutil info disk0s2
  2.    Device Identifier:        disk0s2
  3.    Device Node:              /dev/disk0s2
  4.    Part of Whole:            disk0
  5.    Device / Media Name:      Macintosh HD
  6.    Volume Name:              Macintosh HD
  7.    Escaped with Unicode:     Macintosh%FF%FE%20%00HD
  8.    Mounted:                  Yes
  9.    Mount Point:              /
  10.    Escaped with Unicode:     /
  11.    File System Personality:  Journaled HFS+
  12.    Type (Bundle):            hfs
  13.    Name (User Visible):      Mac OS Extended (Journaled)
  14.    Journal:                  Journal size 16384 KB at offset 0x1ab63000
  15.    Owners:                   Enabled
  16.    Partition Type:           Apple_HFS
  17.    OS Can Be Installed:      Yes
  18.    Media Type:               Generic
  19.    Protocol:                 SATA
  20.    SMART Status:             Verified
  21.    Volume UUID:              BD95F022-812D-366A-909C-286E5443D88E
  22.    Total Size:               125.5 GB (125505781760 Bytes) (exactly 245128480 512-Byte-Blocks)
  23.    Volume Free Space:        62.2 GB (62152081408 Bytes) (exactly 121390784 512-Byte-Blocks)
  24.    Device Block Size:        512 Bytes
  25.    Read-Only Media:          No
  26.    Read-Only Volume:         No
  27.    Ejectable:                No
  28.    Whole:                    No
  29.    Internal:                 Yes
  30.    Solid State:              No

 

 

其它的都不重要,重要的是他的Volume UUID,也就是 "BD95F022-812D-366A-909C-286E5443D88E",

另外加密时的密钥也不要忘了,密钥这个样子:

现在使用下面的命令来解密吧:

 

[python][/python] view plaincopy

  1. $ diskutil coreStorage revert <span style="font-size:18px; ">BD95F022-812D-366A-909C-286E5443D88E</span> -passphrase 2NTO-LQGA-RMXG-LFQO-B8NR-XTCT

解密之后的时这样子的:

 

 

[python][/python] view plaincopy

  1. $ diskutil coreStorage list
  2. No CoreStorage logical volume groups found

 

 

锁住的卷
注意:在10.8.4之后,每个加密的FV2磁盘都会是锁住的(Locked), 在list命令中可以看到:

 

[python][/python] view plaincopy

  1. Encryption Status:      Locked

这样在解密前需要先解锁:

 

 

[python][/python] view plaincopy

  1. $ diskutil coreStorage unlockVolume BD95F022-812D-366A-909C-286E5443D88E -passphrase 2NTO-LQGA-RMXG-LFQO-B8NR-XTCT

FileVaultMaster.keychain文件?

 

如果加密时使用的是FileVaultMaster.keychain,那么只能使用它来解密,

首先,找到并在内存中打开它:

 

[python][/python] view plaincopy

  1. security unlock-keychain /path/to/FileVaultMaster.keychain

之后使用"-recoveryKeychain /path/to/FileVaultMaster.keychain" 替换上面的 "-passphrase 2NTO-LQGA-RMXG-LFQO-B8NR-XTCT"

 

 


本文固定链接: http://www.devba.com/index.php/archives/1300.html | 开发吧

报歉!评论已关闭.