我是 Ubuntu 的新用户,在意外格式化启动分区后,我无法恢复它。以下是更多信息:
我试图从终端格式化 SD 卡,但我可能不小心格式化了启动 ubuntu 的分区。现在我的电脑直接进入 BIOS 设置,没有加载操作系统。在 Bios 的 Boot 选项卡下有:
- 启动 PXE OpROM [已禁用]
- 启动选项优先级
- 启动选项 #1 [ubuntu(驱动器不....)
- 启动选项 #2 [ubuntu(驱动器不....)
- 启动选项 #3 [Windows 启动管理....]
(我很久以前就移除了窗户。)
到目前为止,这是我尝试解决问题的方法:
我创建了一个 ubuntu 启动 usb 驱动器,并能够从 USB 启动机器(幸运的是所有数据都还在那里)。然后我尝试在旧 ubuntu 旁边再次安装 ubuntu。安装成功完成,但如果没有 USB 驱动器,机器仍然无法启动。
然后我按照 CreateBootPartitionAfterInstall 线程中的说明进行操作
我尝试运行 Boot-Repair,但一直出现缺少标志“bios_grub”的错误。因此,我在 gparted 中将 /dev/sda1 的标志更改为 bios_grub(在此之前是“boot” - 不确定这样做是否正确,但没有它就无法运行 boot-repair)。我的分区如下所示:
http://eagle1.american.edu/~gp9804a/ubuntu_gparted.png
我成功运行了启动修复但仍然无济于事——没有 USB 驱动器,机器仍然无法启动。
然后我尝试了启动修复中的高级选项,并在 GRUB 位置选项卡下选中了“单独的 /boot 分区 sda1”
显然,这也进展顺利,最后我收到了一条成功的启动修复消息。唯一的问题是它无法在 dev/sda6 上运行一些更新,它指示我启用分区上的更新(我不知道该怎么做,而且我认为这与主要问题无关)。然而,重启后我又遇到了同样的问题——直接进入 BIOS 仍然无法启动。
来自(最后一次)启动修复的 URL 是这样的:
http://paste.ubuntu.com/6939109/
我现在不知道该做什么以及如何恢复我的机器。任何建议都非常感谢
答案1
你一直在给自己挖越来越深的坑。幸运的是,我认为你还能恢复过来。为了警告其他人并帮助你学习,我想指出你的几个错误:
- 由于启动问题而重新安装 Ubuntu 几乎总是过度的,在最好的情况下,还存在破坏用户数据的风险。你说你的数据仍然存在,所以你可能只是浪费了一些时间,但我想指出这一点,因为情况可能会非常糟糕,用户数据的丢失会加剧你的启动问题。
- 尝试在最初设置为 EFI 模式的计算机上从 BIOS 模式启动运行 Boot Repair 是一个错误。您可能甚至没有意识到自己犯了这个错误,但您确实犯了——Boot Repair 抱怨需要带有“标志”的分区这一事实
bios_grub
就是这个错误的线索。(遗憾的是,Boot Repair 的这个抱怨显然对专家以外的任何人都没有多大帮助。) - 将标志
/dev/sda1
从更改boot
为bios_grub
是一个错误。在parted
GParted 术语中,“boot
标志”标识EFI 系统分区 (ESP),这是一个保存 EFI 引导加载程序的分区。bios_grub
另一方面,“标志”标识BIOS 启动分区,它包含用于 BIOS/CSM/传统模式引导的第二阶段 GRUB 引导加载程序代码。当您在 BIOS 模式下重新安装 GRUB 时,它会覆盖的前几个扇区/dev/sda1
,从而损坏分区上的数据。听起来您的问题始于意外破坏此分区,因此您可能没有造成任何进一步的损害(可能除了对您的/etc/fstab
文件造成损害),但这绝对是错误的方法。如果您的问题有其他原因,这个错误会使恢复更加困难。 - 告诉 Boot Repair 将其视为
/dev/sda1
单独的/boot
分区也是一个错误。您最终告诉它将该分区视为两个互斥的东西:作为单独的/boot
分区和作为 BIOS 启动分区。这可能会让事情变得更加混乱,但看起来并没有太大的影响。
有关 EFI 启动的更多背景知识,你可能需要阅读我的网页上关于这个主题的内容,Ubuntu 社区 wiki 上有关 EFI 启动的信息和/或亚当·威廉森 (Adam Williamson) 的博客解释了 EFI 问题。所有这三个页面都提供了背景信息,可能有助于您将来处理此类问题。
至于解决方案:有几种方法,但我建议您首先解决任何解决方案必须处理的一些问题:
- 启动 Linux 紧急磁盘。
- 使用 GParted 或
parted
将“标志”更改/dev/sda1
为boot
。或者,使用gdisk
将此分区上的类型代码更改为 EF00。 - 在 上创建一个新的 FAT32 文件系统
/dev/sda1
。您可以使用 GParted 或使用命令行mkdosfs
或mkfs
实用程序来执行此操作。 - 挂载
/dev/sda6
并编辑该/etc/fstab
文件。您必须向此文件添加一个条目以将其挂载/dev/sda1
在/boot/efi
。它应该如下所示:
。
/dev/sda1 /boot/efi vfat fmask=133 0 0
或者(在某些方面也是更好的选择),您可以/dev/sda1
将该行的开头更改为UUID="XXXX-XXXX"
,其中XXXX-XXXX
是分区的“UUID”(实际上是序列号)值,如 所报告的blkid
。此值仅在后您已经在分区上创建了一个新的 FAT 文件系统,因此在我写这个答案时是无法得知的。
一旦完成了这些更改,您必须安装全新的 EFI 模式引导加载程序。有多种选择。最容易安装的两个可能是:
- 重新索引-- 您可以安装重新索引通过使用任何可行的方法启动 Linux,验证是否
/boot/efi
已安装,并安装 Debian 软件包(可从rEFInd 下载页面。 - 通过引导修复使用 GRUB 2-- 启动修复工具应该会重新安装 GRUB;但是,你在 EFI 模式下启动时必须运行该程序。检查是否存在名为 的目录
/sys/firmware/efi
。如果存在,则说明您已在 EFI 模式下启动,并且可以运行 Boot Repair。如果不存在,则说明您可能已在 BIOS 模式下启动,Boot Repair 充其量也没什么用。如果您已在 BIOS 模式下启动,请进入固件设置实用程序并禁用 BIOS/CSM/旧版支持;或者使用固件的内置启动管理器选择包含字符串“EFI”或“UEFI”的启动选项。遗憾的是,我无法更具体,因为固件设置实用程序和固件启动管理器的详细信息在不同的计算机之间差别很大。
它可能有必要从硬盘的第一个扇区擦除 BIOS 模式 GRUB 代码。如果完成修复后仍无法从硬盘启动,请尝试启动 Linux 并在终端中输入以下命令:
sudo dd if=/dev/zero of=/dev/sda bs=440 count=1
是非常小心键入该命令时;一个失误,尤其是如果您省略或指定错误的bs=
或的值count=
,可能会严重损坏您的磁盘。这就是为什么我没有将其包含在主要恢复过程中。
祝你好运!
答案2
从屏幕截图来看,您的启动分区似乎不可读。尝试打开实时会话并重新格式化 /dev/sda1,然后运行sudo grub-install /dev/sda
,然后sudo update-grub
。这将重新安装您的引导加载程序,并应能帮助您解决启动时挂起的问题。