如何从外部硬盘中删除 grub 引导加载程序

如何从外部硬盘中删除 grub 引导加载程序

有一段时间,我尝试使用 Linux Ubuntu 作为我的操作系统。与任何操作系统一样,Linux 也有其缺点,其中一些对我来说是个大问题。所以我又回到了 Windows 7。

为了防止试用期间系统被修改,我将 Ubuntu 安装在了外置硬盘上。我将这个硬盘用作便携式工作空间,因此我还安装了 GIMP、Aseprite、Audacity、PixiTracker、SunVox、GoDot 游戏引擎和一些视频游戏,所有这些都通过 PortableApps.com 平台整合在一起。

当我从驱动器中移除 Ubuntu 时,我执行了许多步骤,包括完全重新格式化。但现在,当我尝试将驱动器插入 USB 端口启动计算机时,我得到了这个

error unknown filesystem entering rescue mode

查看驱动器,我只发现一个分区,既不是系统分区也不是启动分区。因此,它上面没有留下任何痕迹,但 Grub 不知何故记得之前的安装。

有人知道如何摆脱它吗?我读过一些建议,使用工具将 Grub 替换为 Windows 引导加载程序,但我不想这样做任何我的外部硬盘上的引导加载程序。

答案1

1. 首先登录 BIOS,确保启动顺序中的第一个驱动器是主系统磁盘(而不是 USB 可启动设备或 CDROM)。根据计算机品牌,还可以根据需要选择启动设备(通常通过按下F12按钮),在这种情况下,您可以选择启动设备,选择主硬盘而不是 USB 驱动器。
如果它解决了您的问题,请按照下面的步骤 2、3 删除外部硬盘上的 GRUB,否则 Ubuntu 会将 GRUB 安装到您的系统磁盘上,您需要按照 @harrymc 的步骤操作回答本教程中介绍了如何从系统磁盘中删除 GRUB 的引导加载程序。

2. 如果你的外部驱动器格式化为 MBR,则此步骤将删除 GRUB 的引导加载程序:
运行任何 Linux 基础 LiveCD (系统救援光盘是一个很好的候选人)然后
使用dd终端命令擦除引导加载程序

  dd if=/dev/zero of=/dev/sdX bs=446 count=1

确保替换sdX正确的(!!!)您想要处理的驱动器。

系统救援光盘您可以输入startx,等到桌面加载完毕,然后菜单->系统运行“显示文件系统”来找到需要删除 grub 的驱动器名称

3. 如果您的外部硬盘格式化为 GPT,那么您需要清除扇区 1(以零为基础计数),GPT 在其中保存引导加载程序和分区表。

dd或者,你可以使用步骤 2 中描述的命令清除外部硬盘上的所有 booloader 部分,无论它是 MBR 还是 GPT

# Clear everything. Make sure sdX is your external hard drive (!!!)
dd if=/dev/zero of=/dev/sdX count=1 bs=16MB

它会破坏分区表以及分区及其数据,因此在执行此操作之前请确保保存来自外部驱动器的文件。

删除 GRUB 的引导加载程序后,转到控制面板->管理工具->计算机管理,从左侧面板中选择存储->磁盘管理,然后选择外部硬盘驱动器,右键单击它,最后将其格式化。

答案2

由于您已重新格式化外部磁盘,因此问题不在于此。因此,Grub 安装在您的系统磁盘上,并且显然设置为首先从外部磁盘启动,然后从 Windows 启动。

现在,当您尝试在插入驱动器的情况下进行启动时,Grub 会访问驱动器上的第一个分区,该分区据称包含 Ubuntu 启动代码,但却找到了一个可能格式化为 NTFS 的 Windows 分区,它无法识别。因此,它会显示“错误未知文件系统”的消息。如果驱动器未插入,Grub 会悄悄地从 Windows 启动。

现在,您的问题就是经典的取消 Windows 和 Linux 双启动的问题。您有两个选择:要么只删除外部磁盘作为启动选项,要么用 Windows 引导加载程序替换启动代码。当然,您还有第三个选择,即永远不要在插入驱动器的情况下启动。

最简单的解决方案是使用免费工具 双启动修复 Windows 10其中“自动修复”将修复 Windows 的启动问题。

对于仅删除 Ubuntu 作为启动配置,请参阅 Ask Ubuntu 文章
卸载 Grub 并使用 Windows 引导加载程序

要从 Windows 启动时手动修复问题,请参阅以下帖子:
如何从 Windows 修复 Windows 10 引导加载程序

答案3

最快、最有效的方法是第三我已经给出了示例,如果您使用的是旧版 GRUB。

第一个例子:
您不能使用 Windows'修复文件选项,因为您的外部硬盘上没有运行 Windows。您可以尝试使用Ubuntu 启动修复在您的外部硬盘驱动器内具有实时启动功能的实用程序,用于修复启动扇区:

  1. 备份外部硬盘上的所有数据,可能的话将其移出。
  2. 下载并刻录Ubuntu外部硬盘上的实时 ISO(不是网络安装程序)。
  3. 从外部硬盘启动(在外部硬盘上启动到 Ubuntu)。
  4. 从终端安装boot-repair实用程序:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
  1. 发射引导修复并使用建议修复选项。这应该修复主引导记录在您的外部驱动器上并从中删除 GRUB。

  2. 然后,继续启动 Windows,然后打开磁盘管理,当您的外部硬盘驱动器已插入时。

  3. 删除外部硬盘上的所有分区并重新格式化。确保正确擦除所有分区并正确格式化。不要使用快速格式化。

  4. 将所有文件/数据放回外部硬盘驱动器。

请参阅相关问答:
如何删除 Ubuntu 并安装 Windows?


第二个例子:
我希望这能有所帮助,但是,为什么你需要在插入外部硬盘时启动?你可以直接插入启动。
另一个无需删除 GRUB 即可修复此问题的选项是:

  1. 将外部硬盘插入计算机。
  2. 开机并进入 BIOS 设置。
  3. 既然你解释说你总是进入 grub 救援模式,这意味着当你的外部硬盘插入时,GRUB 在启动过程中具有优先权。Windows 启动管理器第一个启动选项或完全删除 GRUB 作为启动选项。由于它是 USB 外部硬盘驱动器,因此如果从CD/USB也是您的首选。
  4. 保存设置并重新启动。

这样,即使插入了外部硬盘,您也可以顺利启动 Windows。该硬盘中存在的 GRUB 应该不会有问题。

如何在 BIOS 设置中禁用从 USB 或 CD 启动


第三个例子:
笔记:以下仅适用于旧版 (MBR) GRUB. 请勿使用EFI GRUB

如果这两种方法没有帮助或者不能满足您的需求,还有另一种方法。

GRUB 映像文档关于 GRUB 的启动映像有如下说明:

在 PC BIOS 系统上,此映像是 GRUB 启动的第一个部分。它被写入主引导记录 (MBR) 或分区的引导扇区。由于 PC 引导扇区为 512 字节,因此此映像的大小正好是 512 字节。

因此,通过用零覆盖外部硬盘的前 512 个字节,您将获得一个没有引导记录或 GRUB 的驱动器。

去做这个:

  1. 下载直播UbuntuISO 并将其刻录到外部硬盘上,或者如果可能的话,在另一个 USB 驱动器上。但请记住,在接下来的步骤中,外部硬盘必须插入。
  2. 启动进入实时 Ubuntu 环境并打开您的终端。
  3. 使用 找到与外部硬盘相对应的设备lsblk。如果您从外部硬盘启动,则其第一个分区应安装在 上/。请记住,您需要整个磁盘的路径,而不是分区的路径,例如/dev/sdb不是 /dev/sdb1
  4. 覆盖前 512 个字节:
sudo dd if=/dev/zero of=[path_to_external_hard_drive] count=1

这将从文件count=1中复制 1 个块 ( ) /dev/zero,并将其写入 后指定的路径of=,该路径必须是您的外部硬盘驱动器。它将从起始扇区开始。在大多数版本的dd,默认块大小为512 字节,因此我们不需要指定它。但是,如果你想要安全,你可以使用以下方式指定块大小bs

sudo dd if=/dev/zero of=[path_to_external_hard_drive] bs=512 count=1

bs以字节为单位指定块大小。/dev/zero是包含无限量0字符(来自维基百科):

/dev/zero 是类 Unix 操作系统中的特殊文件,它提供从中读取的尽可能多的空字符(ASCII NUL,0x00)。

因此,命令将复制1 块512 字节/dev/zero(即 1 个全为零的块)开始,并将其写入指定路径。如果我们假设/dev/sdb是您的外部硬盘驱动器,那么下面是该命令的完整示例(不使用/dev/sdb除非你确定它是外部硬盘,否则):

sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1

在这种情况下,您不需要重新格式化外部硬盘,也不需要移出文件,然而,有可能文件损坏可能发生,因此建议您仍然备份数据。如果如果发生文件损坏,则可能需要重新格式化外部硬盘。但是,执行此操作后,您的磁盘将没有任何 MBR/GRUB。

答案4

为了让你远离复杂的命令,我建议使用RMPrepUSB只需选择您的驱动器,然后单击底部的“清理”按钮。这将清除 MBR。

相关内容