“Windows 周年更新”后的 Grub 救援

“Windows 周年更新”后的 Grub 救援

让我们了解一些背景信息,我在一台 HP 62 笔记本电脑上双启动 Win10 和 Ubuntu 16.04(我相信)。第一次重启后,它给了我 grub 救援屏幕。我执行了 ls 命令并得到了 (hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)。我尝试对它们全部使用 ls 命令,但出现了错误。它说未知文件系统。我知道我的文件是完整的(至少就 Windows 而言)并且是可读的。我没有实时 USB 或 CD。

编辑:我目前有一个实时启动的 USB。查看分区表后,我知道 sda2 是我的 Windows 操作系统,sda4 是我的 Linux 操作系统,但我该如何修复它们呢?

编辑lsblk -f; sudo parted -l输入此信息后,我得到了:

名称 FSTYPE 标签 UUID 挂载点
星展银行                                                                  
─sda1 ntfs系统保留78746B10746AD104                     
─sda2 ntfs 52CE70B8CE7095C7                     
─sda3 ntfs 32DA13F9DA13B855                     
└─sda5 交换 acf66f09-4c28-4c76-a318-d2f77efaa56a [交换]
安全数据库                                                                  
└─sdb1 vfat UBUNTU 16_0 7C9B-EA5B /cdrom
sr0                                                                  
loop0 squashfs /rofs
型号:ATA TOSHIBA MK5056GS (scsi)
磁盘/dev/sda:500GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos
磁盘标志:

编号 起始 结束 大小 类型 文件系统 标志
 1 1049kB 525MB 524MB 主 ntfs 启动
 2 525MB 388GB 388GB 主 ntfs
 3 388GB 389GB 844MB 主 ntfs 诊断
 4 389GB 500GB 111GB 扩展
 5 494GB 500GB 6229MB 逻辑 Linux 交换 (v1)


型号:SanDisk Cruzer U (scsi)
磁盘/dev/sdb:15.6GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos
磁盘标志:

编号 起始 结束 大小 类型 文件系统 标志
 1 1049kB 15.6GB 15.6GB 主 fat32 启动,lba

编辑:这是 GParted 图片。(我把它取下来以便放其他的。)

编辑:这是我的 BIOS 屏幕和启动选项菜单。只有主驱动器。

在此处输入图片描述

启动选项菜单

编辑:非常感谢大家帮助我修复电脑。我的所有文件都完好无损。我真的希望这能帮助其他可能遇到此问题的人。

我是如何做到的以及事情是如何发生的:起初,我打算用我的电脑做一个学校项目。Windows 决定当时安装它的更新,所以我就让它安装。第一次重启后,它给了我这个grub rescue>屏幕。我运行命令ls来查看我的分区,我得到的输出是(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)注意没有(hd0,msdos4)。这意味着 Windows 删除了 Ubuntu 分区。我尝试设置 grub 文件的路径,但它们不在那里。过了一会儿,我使用另一台计算机创建了一个 Live USB 并从那里启动。我打开了一个终端并尝试安装testdisk。(确保进入您的设置并在软件和更新中启用“universe”选项)安装 testdisk 后,我运行了它并在我的硬盘上进行了深入搜索。完成后,我将 Windows 启动器标记为 *。(主可启动)然后我将其余的命名为 P。(主)保存分区表后,我再次打开 grub rescue,然后运行ls。输出类似于(hd0) (hd0,msdos5) (hd0,msdos4) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos1)我运行的ld (hd0,msdos3),它给出的结果是它是一个 ext2 驱动器。终于!然后我运行它 set root=(hd0,msdos3) set prefix=(hd0,msdos3)/boot/grub insmod normal normal ,它启动得很好!希望这对你有帮助,因为它确实对我有帮助。

答案1

您可以使用两种选项。您可以使用控制台grub rescue来安装和更新/修复 grub,或者您可以使用 Live Ubuntu 磁盘/usb 来实现此目的。由于您的问题表明这是全新安装,因此您很可能仍然有 Live DVD/USB。

启动到安装介质。如果您的UEFI计算机性能良好,请确保启动到该模式。

当您看到提示时,您可以Try without installing Ubuntu选择该选项。

打开一个终端(在 Ubuntu Dash 搜索中输入终端)。

在控制台中运行以下命令:

  • 第 1行XY中的 是一个变量。这是安装 Ubuntu 的分区(即/dev/sda6)。这可以是连接到计算机的任何驱动器上的任何分区。

  • 第 3行XY中的 是变量。将其替换为已安装的分区EFI。这几乎总是/dev/sda1。如果您的启动驱动器不是 EFI 驱动器,请跳过步骤 3 和步骤 10。

  • 第 6行X是您的启动驱动器(单个字母)。这几乎总是/dev/sda

1:$ sudo mount /dev/sdXY/mnt
 2:$ for i in /sys /proc /run /dev; 执行 sudo mount --bind "$i" "/mnt/$i"; 完成
 3:$ sudo mount /dev/sdXY/mnt/boot/efi
 5:$ sudo chroot /mnt
 6:# grub 安装 /dev/sdX
 7:# 更新 grub
 8:#退出
 9:$ for i in /sys /proc /run /dev;执行 sudo umount "/mnt/$i";完成
10:$ sudo umount /mnt/boot/efi
11:$ 退出

重新启动计算机。

救援幼虫

除了拥有 USB 或 DVD 安装盘之外,以下是 Grub Rescue 提示符的步骤:

1. 设置前缀=(hdX,Y)/boot/grub

使用之前确定的值。

例如:如果Ubuntu系统在sda5上,则输入:set prefix=(hd0,5)/boot/grub

2.* 设置根=(hdX,Y)

确认正确的 X、Y 值并按 ENTER。

例如:如果Ubuntu系统在sda5上,则输入:set root=(hd0,5)

3. insmod normal

加载正常模块。

如果模块加载则不会出现任何消​​息。

如果模块加载失败,请尝试完整路径:insmod (hdX,Y)/boot/grub/normal.mod

4. 正常

过渡到具有增强功能的正常 GRUB 2 模式。

如果模块加载则不会出现任何消​​息。

如果模块加载,则应该可以使用 UP/DN 键进行帮助、TAB 完成和命令调用。

5. 设置

(可选)检查当前设置。

6. 安装 Linux

加载linux模块。错误信息通常意味着路径不正确。

7.* Linux /vmlinuz 根目录=/dev/sdXY ro

选择最新的内核。

例如:linux /vmlinuz root=/dev/sda5 ro

如果 / 中不存在 vmlinuz 符号链接,则使用 /boot 中内核的完整路径

例如:linux /boot/vmlinuz-3.2.0-14-generic root=/dev/sda1 ro

8. initrd /initrd.img

选择最新的 initrd 映像。

如果 / 中不存在 initrd 符号链接,则使用 /boot 中 initrd 映像的完整路径

如果成功,按 ENTER 键后将会有短暂的延迟并且不会出现任何消​​息。

9. 启动

有关可用的 Grub Rescue 命令的更多详细信息和定义,请参阅Ubuntu 社区帮助文档。这就是上面的 Grub Rescue 命令的来源。

我用过它,习惯之后会发现它相当简单。但向新手解释起来并不像实际使用那么容易。当你执行这些步骤时,它会开始变得更有意义。

使用 Testdisk 恢复丢失的分区和文件

$ sudo 测试磁盘

1:选择创造       - 进入
2:选择创造       - 进入
3:选择磁盘-继续
4:选择英特尔        - 进入
5:选择分析      - 进入
6:选择快速搜索- 进入

如果它找到您的 Ubuntu 分区,您将看到它被列出。您可以通过它的namesizetype( ext4) 来识别它。

选择 Ubuntu Partition 并按ENTER。然后选择Write恢复分区的选项。

如果恢复分区时遇到问题,请使用该Deeper Search选项。

如果之后Deeper Search您仍然无法恢复整个分区,请选择恢复文件的选项。然后您就可以选择需要恢复的重要文件。

如果您要恢复文件,则必须有一个驱动器来恢复文件。有时恢复需要花费大量时间和金钱。您可能需要投资购买类似 USB 转 Sata 适配器的东西,并将其连接到您的系统以恢复文件。根据文件数量,120G USB Pendrive 可能足以用作备份介质。

您可以查看使用的详细信息TestdiskTestDisk 详细步骤

答案2

正确的答案是 Windows 10 进行了“周年更新”,它清除了您的 Ubuntu 分区。感谢微软!如果您仍可以启动 Windows,请让它完成安装所有更新,然后再尝试恢复 Ubuntu。

当启动到 Ubuntu Live DVD/USB 时,您可以testdisk在终端中安装,并尝试恢复丢失的分区,但这并不容易。

要安装并运行 testdisk,请在终端中输入以下命令:

sudo apt-get 更新
sudo apt-get 安装 testdisk
sudo 测试磁盘

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step了解入门的分步过程。您需要输出sudo fdisk -l (小写 L)使用 testdisk。

如果您无法使用 testdisk 恢复,则需要重新安装 Ubuntu。

有问题?有问题?请告诉我们您的情况。谢谢,Al

答案3

尝试一下这种方法,它对我很有用。访问 启动选项Windows 并转到启动设置

进入配置页面后,您将看到 BOOT 选项。您可以在此处更改 OS 启动顺序选项。将 Linux 保留为启动顺序中的第一个选项。

您也可以grub-customizer在成功登录 Ubuntu 后进行安装。这可以为您提供修改启动选项的各种选项。

答案4

在 Linux 之后安装 Windows 将从系统中删除 grub。此时,您有两个选择:使用 BIOS 选择 Ubuntu 作为启动操作系统。这将要求您在计算机启动时按 F12 或其他功能键来调出更改启动设备列表。

另一个选项是制作一个包含引导修复的实时可启动 USB,并在计算机启动时启动它。在后续选项中,只需选择推荐的修复。这将在您的系统上重新安装 grub,一切应该会正常工作。

相关内容