我对 Linux 还很陌生。
最近我尝试双启动 Ubuntu 14.04.2 LTS 和 Windows 7。我将 Ubuntu ISO 刻录到 DVD 上并从那里启动我的 PC。在此之前,我将 Windows C: 分区缩小了 28 GB,为 Ubuntu 留下了足够的未分配空间。但在安装过程中,我没有看到我预期的“与 Windows 7 一起安装 Ubuntu”选项,而只是两个选项:“擦除磁盘并安装 Ubuntu”和“其他”。
根据网上的说明,我选择了“其他”选项。我从看似“可用空间”的地方创建了 4 个分区(尽管我的 Windows 分区位于那里):一个用于操作系统本身,另一个用于我的数据,一个用作交换区,最后一个 20 MB 的分区用于 BIOS 引导加载程序(我对此不确定)。
Ubuntu 安装正常,但重启电脑后,它直接启动到 Ubuntu,而没有显示我期望的 GRUB 引导加载程序菜单。
当我的机器启动时,我输入了“启动选项”,却发现这与操作系统无关。
使用我的 Windows 7 笔记本电脑,我创建了一个系统修复光盘并从中启动了我的计算机。奇怪的是,它显示了一条错误消息,即光盘“与我的 Windows 版本不兼容”。这毫无道理,因为我的台式机和笔记本电脑都是 64 位版本的 Windows 7。
从系统修复光盘启动时,我也只能访问 F8 Windows 启动修复菜单。
我的所有文件都在 Windows 7 上,恢复此操作系统对我来说至关重要。如能提供任何帮助,我将不胜感激。提前谢谢您!
答案1
我的假设
我有 95% 的把握,你不小心破坏了你的 Windows 安装。证据:
根据一些在线说明,我选择了“其他”选项。我从看似“可用空间”中创建了 4 个分区(尽管我的 Windows 分区位于那里)
“Something Else”选项显示磁盘和所有当前分区。如果它错误地将磁盘识别为空,而实际上有当前分区,那么您可以通过这种方式轻松地破坏您的安装。事实上,libparted(Ubuntu 安装程序的分区程序基于此)中有一个已知错误,当分区表偏离绝对完美时,它会将磁盘显示为空。最可能的解释是,您从 GPT 磁盘开始,但在 BIOS 模式下安装了 Windows,这会导致 GPT 到 MBR 的转换使一些 GPT 数据保持完整。这会使 libparted 感到困惑,从而导致“空白磁盘”问题。请参阅我的这个页面了解详细信息和修复(它将不再适合您 - 通过设置新的分区,您早已超出了可以修复的程度)。
顺便说一句,我尝试寻找有关此问题的错误报告在启动板上(Ubuntu 的 bug-tracker),但没有找到,这很令人惊讶。也许我会进一步调查并提交错误报告,因为这个问题非常严重。
Ubuntu 安装正常,但重启电脑后,它直接启动到 Ubuntu,而没有显示我期望的 GRUB 引导加载程序菜单。
此行为与完全损坏的 Windows 一致,尽管也有其他可能的解释。
使用我的 Windows 7 笔记本电脑,我创建了一个系统修复光盘并从中启动了我的计算机。奇怪的是,它显示了一条错误消息,即光盘“与我的 Windows 版本不兼容”。这毫无道理,因为我的台式机和笔记本电脑都是 64 位版本的 Windows 7。
这也与我的假设一致,尽管同样还有其他解释。请注意,此引文中的“兼容性”是指(或可以指)分区表类型——Windows 将主引导记录 (MBR)分区表到 BIOS 模式启动和GUID 分区表 (GPT)到 EFI 模式启动。如果 Windows 安装程序在 BIOS 模式下启动并看到 GPT 磁盘,或者在 EFI 模式下启动并看到 MBR 磁盘,它将拒绝对该磁盘执行任何操作,除非(在某些情况下)重新对磁盘进行分区并重新安装。
进一步诊断
为了验证我的假设,您需要检查分区表。您可以使用 GParted、、或其他工具来执行此操作parted
。gdisk
目前最简单、最好的方法是parted
:
$ sudo parted /dev/sda print
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 524kB 1573kB 1049kB BIOS boot partition bios_grub
2 1573kB 580MB 579MB fat32 EFI System boot
3 580MB 1106MB 525MB ext4 Xubuntu /boot
4 1631MB 250GB 248GB Linux LVM lvm
的输出parted /dev/sda print
将显示您的分区表。该Partition Table:
行显示分区表类型——本例中为 GPT。(MBR 显示为msdos
。)更重要的是分区的详细信息。如果您看到一个或多个 NTFS 分区,那么我可能错了,Windows 可能完好无损。如果您只看到 Linux 分区(ext4fs、Linux LVM 等),如本例所示,那么我的假设是正确的。(请注意,我的示例中的 FAT32 分区是EFI 系统分区 (ESP),它保存了所有操作系统的引导加载程序。
如果您需要帮助解释分区表,请将输出剪切并粘贴parted
到pastebin 网站并在此处发布您的文档的 URL。
修复它
如果我说得对,你无法解决这个问题——至少不能完全解决。你能做的最好的事情是:
- 立即停止使用已安装的操作系统!您从磁盘上的 Ubuntu 使用计算机的每一刻,都可能是 Ubuntu 将数据写入硬盘上您个人文件残余的时刻。
- 如果你还没有,可以买一个磁盘用于数据恢复。一个足够大的外部磁盘可以容纳你所有的个人文件。
- 启动到紧急磁盘(例如 Ubuntu 安装程序的“安装前尝试”模式)。Windows 紧急工具也是一个很好的例子。
- 跑步相簿或类似软件。这些工具可让您恢复个别文件,即使是从覆盖的文件系统中恢复文件——这就是你所得到的。我曾看到有人声称某些 Windows 工具在从覆盖的 NTFS 分区中恢复文件方面比 PhotoRec 做得更好,但我没有具体的程序名称或 URL。请注意,你需要恢复文件到另一个物理磁盘——因此请执行步骤 #2。此外,您不太可能恢复所有文件,并且您可能需要花费数小时筛选恢复的文件以正确组织它们。您最终可能会得到一堆 Windows 程序文件,您可以将其丢弃——重新安装 Windows 和您的程序比尝试使用这些单个程序文件更容易。
- 如果需要,请重新安装 Windows。这将需要了解 EFI 与 BIOS 启动模式。您可能需要阅读我关于这个主题的这个页面,这可能会帮助你避开这个雷区。(请注意,BIOS/CSM/旧式启动问题可能是导致你遇到此问题的部分原因,但如果我的假设正确的话,最重要的问题是 libparted 中的错误。)
此过程假设您和大多数人一样,没有良好的备份。如果您有良好的备份,则可以毫不费力地从中恢复您的个人文件。
更新
我刚刚做了一些测试,我认为困扰你的那个 bug 似乎已经在 Ubuntu 15.04 中修复了。我非常确定它在 14.04 中存在。