双启动显示所有分区都已删除。它们应该是什么?

双启动显示所有分区都已删除。它们应该是什么?

允许 Windows 10 升级使用 SSD 的双启动 PC 后,它无法启动。我运行了启动修复,现在发现 bootmgr 丢失了。因此,我从实时 CD 运行了 testdisk,所有分区都显示为已删除。

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org

Disk /dev/sdf - 120 GB / 111 GiB - CHS 14593 255 63
 Partition               Start        End    Size in sectors
>D HPFS - NTFS              0  32 33    63 221 30    1024000
 D HPFS - NTFS             63 221 31  8111 174 63  129288192
 D HPFS - NTFS           8111 175  1  8218 229 11    1722368
 D Linux                 8219  39 13 13616 190 14   86712320
 D Linux Swap           13616 190 15 14593  66  1   15687680

一个类似(但不相同)的问题和响应要求提供磁盘的分区列表(我已经将分区数据备份到 txt 文件中)。虽然我已将 /dev/sda 包含在内,但它用作数据,但我确实看到它确实有一个引导记录,可能是前世遗留下来的。

ubuntu@ubuntu:~$ sudo parted /dev/sda unit s print
Model: ATA WDC WD15EARS-00Z (scsi)
Disk /dev/sda: 2930275055s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start       End          Size         Type     File system  Flags
 1      206848s     976814079s   976607232s   primary  ntfs
 2      976814080s  2766430207s  1789616128s  primary  ntfs         boot

ubuntu@ubuntu:~$ sudo parted /dev/sdf unit s print
Model: ATA SanDisk SDSSDA12 (scsi)
Disk /dev/sdf: 234441648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start       End         Size        Type      File system     Flags
 1      2048s       1026047s    1024000s    primary   ntfs            boot
 2      1026048s    130313813s  129287766s  primary   ntfs
 3      130314240s  132036607s  1722368s    primary   ntfs            diag
 4      132040702s  234440703s  102400002s  extended
 5      218753024s  234440703s  15687680s   logical   linux-swap(v1)

parted 中的分区似乎是正确的,那么为什么 testdisk 显示它们已删除?软件不正确?我需要做什么才能让我的机器从 SSD (/dev/sdf) 启动?我怀疑 Windows 10 尚未完成升级,因此在让 grub 重新控制之前,我可能需要让它运行。我不想通过在 testdisk 中选择错误的设置使情况变得更糟。

尽管我已经使用 Linux 很多年了,但我对其内部结构并不熟悉。

我也对太多有时似乎相互矛盾的信息感到困惑。我希望有一个明确的、简单易行的程序来恢复这个反复出现的双重启动/升级错误,只要微软拒绝“支持”双重启动并通过清除启动记录来阻止升级过程,这个错误似乎就不会消失。

答案1

我确实设法使用 parted 解决了这个问题,但正如我所表达的,我对选项感到不知所措,而且由于粘贴内容消失了,一些引用的帖子现在不完整了。我将尝试发布带有完整输出的解决方案,希望它能帮助某人清楚地看到和诊断问题。

正如我在问题中所述,Windows 更改了分区表,我无法再进行双启动,它进入了 grub-rescue。我在 grub-rescue 中所做的一切(我不记得了)都没有用,但现在我确信恢复分区表是成功的第一步(也许是唯一一步)。以下是我遵循的步骤。

0) 获取 livecd/usb 来运行 Ubuntu,因为显然它无法从硬盘启动。我发现 boot-repair-cd 包含修复此问题所需的一切。请参阅https://sourceforge.net/projects/boot-repair-cd/

1) 按照 oldFred 上面所说备份分区表:

在任何更改之前备份分区表,这样如果更改不正确,您可以回到当前状态 sudo sfdisk -d /dev/sda > PT_sda.txt 因此您知道扇区: sudo parted /dev/sda unit s print

2) 分析输出以确定丢失了什么。观察到的是表中有重叠的分区。请参阅下面的示例。 3) 由此确定包含 Ubuntu 分区的起始和结束扇区 4) 运行 parted rescue 5) 重新启动

从 boot-repair-disk 启动机器并运行 parted 后的示例输出(带注释)<==:

(parted) select /dev/sdf                  <== my OS's are on sdf an SSD                         
Using /dev/sdf
(parted) print                                                            
Model: ATA SanDisk SDSSDA12 (scsi)
Disk /dev/sdf: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  525MB   524MB   primary   ntfs            boot
 2      525MB   66.7GB  66.2GB  primary   ntfs
 3      66.7GB  67.6GB  882MB   primary   ntfs            diag
 4      67.6GB  120GB   52.4GB  extended
 5      112GB   120GB   8032MB  logical   linux-swap(v1)

(parted) unit s                          <== set parted to use sectors to simplify entering parameters                     
(parted) print                                                            
Model: ATA SanDisk SDSSDA12 (scsi)
Disk /dev/sdf: 234441648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start       End         Size        Type      File system     Flags
 1      2048s       1026047s    1024000s    primary   ntfs            boot
 2      1026048s    130313813s  129287766s  primary   ntfs
 3      130314240s  132036607s  1722368s    primary   ntfs            diag
 4      132040702s  234440703s  102400002s  extended                                <== note partitions 4 & 5 have same end so 4 must be ubuntu
 5      218753024s  234440703s  15687680s   logical   linux-swap(v1)

(parted) rescue                            <== run the rescue option specifying the start and end sectors from 4 & 5 above
Start? 132040702                                                          
End? 218753020                                                            
Information: A ext4 logical partition was found at 132040704s -> 218753023s.       
Do you want to add it to the partition table?
Yes/No/Cancel? y                                  <== Whoo Hooo Found it
(parted) print                                    <== print the results after rescue
Model: ATA SanDisk SDSSDA12 (scsi)
Disk /dev/sdf: 234441648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start       End         Size        Type      File system     Flags
 1      2048s       1026047s    1024000s    primary   ntfs            boot
 2      1026048s    130313813s  129287766s  primary   ntfs
 3      130314240s  132036607s  1722368s    primary   ntfs            diag
 4      132040702s  234440703s  102400002s  extended
 6      132040704s  218753023s  86712320s   logical   ext4                <== This looks much better
 5      218753024s  234440703s  15687680s   logical   linux-swap(v1)

现在我只需重新启动,无需启动修复磁盘,grub 就会出现在 Microsoft 面前,因此很有帮助地帮我升级了 Windows。

我在使用 UEFI 的笔记本电脑上也遇到了这个问题。随着越来越多的计算机采用 UEFI,这个问题会有所改变,但我怀疑它是否会消失——我仍然无法在不使用功能键进入启动顺序的情况下让 grub 在 UEFI 笔记本电脑上运行,但这是另一种解决方法。另外,我认为 Ubuntu 用户非常节俭,将继续使用较旧的硬件,因为 Ubuntu 不需要像 Windows 那样多的硬件资源。而且,似乎几乎不可能阻止 Windows 定期用“升级”替换自己。因此,对于我们这些需要仅在 Windows 上运行的软件的人来说,双启动选项很有吸引力,升级/“grub-rescue”的惨败将继续发生。

感谢那些评论和帮助过的人。我对这个修复很担心,直到它真的起作用了!

相关内容