我有一台有 5 个硬盘的计算机,但是当我停止 BIOS 来查看我的选择时,它有 14 个启动选项(包括 DVD,但我们忽略它)。这些是 BIOS 中的选项,而不是 GRUB 中的选项,因此每一项都会带我进入 GRUB 菜单,而且它们并不完全相同。由于我正在清理不久前造成的灾难,并且根据一般原则,我想删除除前两个驱动器之外的所有驱动器中的引导信息和 grub 加载程序。
其中一些驱动器采用 GPT 格式,一些采用 MBR 格式。有Windows 10和Xubuntu系统。显然,这 14 个中有 UEFI 和标准启动视图。所有这些都反映了它的历史,始于 2002 年。此后主板和其他东西发生了变化,但很多数据仍然存在。
我很想破坏大多数驱动器上的前 512 字节,但我 (a) 不确定这是否足够,(b) 不确定它是否完全安全。
那么清理这个问题的最佳实践是什么?
答案1
覆盖驱动器上的前 512 个字节肯定会使 BIOS 可引导磁盘不可引导。它还会破坏 MBR 分区表,因此任何 MBR 分区的磁盘在此之后都将显示为空且未分区。所以不要对任何您希望保留其分区的磁盘执行此操作。
如果磁盘是 MBR 分区但可 UEFI 引导(即,其上有 FAT 类型文件系统,分区类型代码设置为 0xef,并且该分区包含\EFI\BOOT\BOOTx64.efi
64 位 x86 系统路径中的文件),则覆盖分区表是矫枉过正:要使磁盘不可 UEFI 启动,您所需要做的就是删除该文件或将其重命名为其他名称。
对于 GPT 分区的 UEFI 可启动磁盘,覆盖前 512 字节根本不起作用:某些磁盘分区工具可能会注意到保护性 MBR 似乎已损坏,并且很可能会提供自动修复或作为修复的副作用对 GPT 分区表执行任何其他操作都没有任何问题。
BIOS 菜单中的额外启动选项很可能是过时的 UEFI 启动变量:正如 oldfred 在评论中建议的那样,sudo efibootmgr -v
在 Linux 中使用来查看它们,识别BootXXXX
过时条目的数量,然后使用sudo efibootmgr -B -b XXXX
来删除它们。
在不破坏分区表的情况下使 BIOS 可启动磁盘无法启动实际上有点棘手:我知道的最简单的方法是一个名为 的小实用程序ms-sys
,它可以写入多种类型的 BIOS 主引导记录和分区引导记录...包括不起眼的“不可启动磁盘”主启动记录。
不幸的是,该实用程序似乎在现代 Ubuntu 的软件包存储库中不可用。其源代码位于https://sourceforge.net/projects/ms-sys/(或者旧版本镜像在https://github.com/pbatard/ms-sys如果您不喜欢 SourceForge)。如果您安装了gcc
和make
通用应用程序开发库,您应该能够使用以下命令构建它:
<download the source code package>
tar xvf xvf ms-sys-2.8.0.tar.gz
cd ms-sys-2.8.0
make && sudo make install
如果成功,您现在应该可以在 处找到该工具/usr/local/bin/ms-sys
及其手册页/usr/local/man/man1/ms-sys.1
(可通过简单的 进行查看man ms-sys
)。
要使 BIOS 可启动磁盘/dev/sdX
无法启动,请使用ms-sys
:
sudo ms-sys --mbrzero /dev/sdX
--mbrzero
手册页上该选项的描述是:
-z, --mbrzero
将空(清零、不可引导)主引导记录写入设备。将除分区映射和签名 id(字节 01be-01ff)之外的所有字节清零。类似于 fdisk 创建的空 DOS 分区表。
事实上,它避免覆盖分区表(由于某种原因称为“分区映射”)和磁盘签名字节是重要的部分。