如果 mbr 包含 iso9660 则无法安装 grub

如果 mbr 包含 iso9660 则无法安装 grub

我在以前包含 ISO9660 文件系统的磁盘上安装了 Debian/Gnu-Linux,但无法安装 grub:

root@debian:~# grub-install /dev/sdb
/usr/sbin/grub-setup: error: hd1 appears to contain a iso9660 filesystem which isn't known to reserve space for DOS-style boot.  Installing GRUB there could result in FILESYSTEM DESTRUCTION if valuable data is overwritten by grub-setup (--skip-fs-probe disables this check, use at your own risk).

我能够将其安装在当前插入机器上的其他磁盘(/dev/sda)上,但我想摆脱它。

我尝试过install-mbr /dev/sdb,希望它能删除 ISO9660 块,但 grub-install 仍然出现错误。

我可能可以将 /dev/sda 的一些块复制到 /dev/sdb,但是其中有多少块?

答案1

您可以使用 dd 命令删除 mbr(主引导记录)。主引导记录 (MBR) 是 512 字节的引导扇区,是硬盘分区数据存储设备的第一个扇区。

了解 MBR 大小

mbr 大小如下(以字节为单位):

446 bytes - Bootstrap.
64 bytes - Partition table.
2 bytes - Signature.
= 512 bytes

警告!如果执行这些示例,您的计算机可能会崩溃。以下命令将完全删除您的 MBR,包括所有分区信息。因此,请确保使用正确的设备名称和块大小(以字节为单位)。

删除mbr包括所有分区

打开终端并键入以下命令来删除所有内容:

# dd if=/dev/zero of=/dev/sdc bs=512 count=1

示例输出:

1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00308483 s, 166 kB/s

在哪里,

if=/dev/zero - Read data from /dev/zero and write it to /dev/sdc.
of=/dev/sdc - /dev/sdc is the USB drive to remove the MBR including all partitions.
bs=512 - Read from /dev/zero and write to /dev/sdc up to 512 BYTES bytes at a time.
count=1 - Copy only 1 BLOCK input blocks.

仅删除mbr的命令

以下命令将擦除 mbr,但不会擦除您的分区:

# dd if=/dev/zero of=/dev/sdc bs=446 count=1

在哪里,

bs=446 - Read from /dev/zero and write to /dev/sdc up to 446 BYTES bytes at a time.

来源

答案2

我终于通过直接调用 grub-setup 让它工作:

grub-setup --force --skip-fs-probe /dev/sdX

Grub-setup 发出了一些警告,但我能够再次启动磁盘。

相关内容