Ubuntu Xenial 标准安装带加密:删除所有分区 - 如何恢复 LUKS

Ubuntu Xenial 标准安装带加密:删除所有分区 - 如何恢复 LUKS

我知道,我只能怪我自己,但昨天我错误地删除了主驱动器的所有分区 - 使用 LUKS 和 LVM 的标准 ubuntu xenial 安装,但所有内容都使用默认选项,使用整个 1 TB 驱动器。没有 EFI 等。

在这里您可以看到 fdisk -l其他安装相同的笔记本电脑(但驱动器较小!):

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048    999423    997376   487M 83 Linux
/dev/sda2       1001470 624949247 623947778 297.5G  5 Extended
/dev/sda5       1001472 624949247 623947776 297.5G 83 Linux

Gpart 正在运行(现在已经 10 多个小时了),我还让 testdisk 进行了扫描,但不知道最后该做什么(它还发现了一些很久以前被删除的旧 HP_Tools 分区)。抱歉,我还只是 Linux 的学习者。

我发现我可以恢复两个主分区 sda1 和 sda2,但是我该如何继续才能取回 sda2 内的 LUKS 容器和 LUKS 内的 LVM,同时实际上不更改任何数据?

我是否正确,仅删除分区,我并没有丢失任何数据?

谢谢您提供详细步骤的帮助。

答案1

很少...我设法解决了这个问题并恢复了所有分区。简而言之,我做了以下事情:

首先,我取出一个 Ubuntu Live USB 驱动器并启动到 Live 系统。然后:

  1. 安装救援并使用救援将整个驱动器一点一点地备份到外部驱动器上的文件中。这让您在玩的时候安心:如果需要,始终可以恢复原始状态
  2. 使用测试磁盘进行快速搜索。它没有找到正确的 crypt 分区,但找到了 boot 分区,因此我用 testdisk 恢复了该分区。
  3. 使用“grep -a -b -P --only-matching 'LUKS\xba\xbe' /dev/sda”来搜索 LUKS 加密的开头。
  4. 使用“losetup -o result_from_grep -r -f /dev/sda”和“hexdump -C -n 128 /dev/loop0”来验证这是否真的是 LUKS crypt 的开头(包括标头)。它应该看起来像:|LUKS....aes.....|
  5. grep 返回以字节为单位的起始位置,按扇区计算
  6. 使用分开创建一个扩展分区,从 LUKS 加密之前的两个扇区开始,直到 -1s(磁盘末尾,在我的情况下,整个磁盘的其余部分都被使用了)
  7. 使用 parted 在 LUKS 加密开始直到 -3s 的扇区上创建一个逻辑分区(结束前的三个扇区 - 参见问题中的示例 fdisk -l)
  8. 打开墓穴并按照链接 2 中概述的步骤恢复 SWAP、根目录等。
  9. 此时您可以尝试保存数据,但就我而言,我只需重新启动计算机并再次正常运行即可。

这三个链接帮助我了解了不同的步骤以及命令的手册页:

1)parted:如何在正确的位置创建分区

2)挂载 crypt 并再次找到所有逻辑卷

我希望这对遇到类似问题的人有所帮助。

相关内容