昨天我意外地gdisk
在主驱动器而不是外部驱动器上创建了一个新的(启动)分区。然而,这创建了一个新的分区表,但由于我在这个驱动器上运行 Kubuntu,所以内核尚未更新。
获取包含所有数据和设置在内的可启动 Windows 和 Kubuntu 分区的最快方法是什么?
- 我做了
dd
备份,但我认为这只包含新的分区? - 我仍然可以访问所有文件,因此我也将它们压缩在一起。
- 我是否必须重新安装 kubuntu 和 Windows 或者有没有办法撤消该
gdisk
操作? - 我是否应该关闭计算机并在实时系统上使用 testdisk ?
gdisk -l
输出:
manu@manus-Laptop:~$ sudo gdisk -l /dev/sda
[sudo] password for manu:
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 468862128 sectors, 223.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 62FADE32-E715-4AC6-BA77-307107A2454F
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 468862094
Partitions will be aligned on 2048-sector boundaries
Total free space is 468861108 sectors (223.6 GiB)
Number ___ Start (sector) _ _ End (sector) _ _ _ Size _ _ _ Code _ _ _ Name
______1____________2048___________ 3000 _ _ _ 476.5 KiB _ EF02 _ _ BIOS boot partition
manu@manus-Laptop:~$
答案1
根据您目前的情况,我知道有三种方法可以做您想做的事情:
方法一:简单但有风险且缓慢
第一种方法是使用测试磁盘,它可以扫描磁盘上的文件系统数据并生成新的分区表条目以匹配它找到的内容。这种方法相对自动化,因此很容易;但工具必须扫描大部分磁盘,这可能需要一段时间。更糟糕的是,TestDisk 可能会被您删除的旧分区中的杂散数据所困扰,从而产生糟糕的结果。因此,TestDisk 可能会生成完全错误的分区表;或者它可能会为您提供多个恢复选项,而您可能无法决定哪个是正确的。
尽管 TestDisk 可以恢复分区的起始点和结束点,并且很可能正确设置分区类型代码,但它无法恢复分区的原始 GUID。这对于启动来说很重要,如下一节所述。
请注意,一旦您关闭或重新启动计算机,TestDisk(或一些类似的工具;它不是此类别中唯一的工具)将成为您唯一的选择。
方法 2:更难,但更安全、更快捷
由于内核仍在使用旧分区表,因此仍可以从内存中检索分区上的数据。问题是如何做到这一点,答案是查看目录树/sys/block/sda
。该目录应具有每个分区的子目录(sda1
、sda2
等等),并且每个目录都有一个start
和一个size
文件,其中包含分区的起始位置和大小(以扇区为单位)。例如:
$ cat /sys/block/sda/sda2/start
1126440
$ cat /sys/block/sda/sda2/size
1536000
这表明,在我的系统中,/dev/sda2
从扇区 1126440 开始,大小为 1536000 个扇区。您可以提取此信息并使用gdisk
重新创建分区表 - 或者至少创建具有正确大小的分区。您需要使用对每个分区内容的了解来设置它们的类型代码。据我所知,没有办法恢复 GUID 值(以前的方法也是如此)。ESP 的 GUID 值可能很重要,因为它很可能被 EFI 用作其启动过程的一部分。您应该能够从输出中提取它sudo efibootmgr -v
- 它将嵌入到行的字符串中ubuntu
。gdisk
重新创建 ESP 后,您可以使用 更改此值 - 使用c
专家菜单上的选项。
方法 3:最好、最简单,但你可能做不到
实现所需操作的最佳且最简单的方法是从备份中恢复分区表。该gdisk
工具在主菜单上提供了一个选项来创建此类备份。如果您已这样做,则可以使用恢复和转换菜单上的(小写“L”)选项b
恢复备份。l
以这种方式恢复备份会将所有分区表数据恢复到备份时的状态。这包括 GUID 值、分区名称,当然还有分区大小。您可能已经进行了这样的备份,但忘记了。如果是这样,请使用它。但是,如果没有,这对您没有任何好处,除非您现在知道这个选项,并且可能会有动力进行备份以备将来使用。