grub 认为 ext4 是 iso9660 文件系统

grub 认为 ext4 是 iso9660 文件系统

我该如何解决这个问题并安装 grub?

当我使用 GParted 时,我看到/dev/sdb有一个分区,它是 ext4,但是当我尝试安装 grub 时,我得到:

#grub-install /dev/sdb
/usr/sbin/grub-setup: 错误:hd0 似乎包含一个 iso9660 文件系统,该文件系统未知为 DOS 式引导保留空间。如果有价值的数据被 grub-setup 覆盖,在那里安装 GRUB 可能会导致文件系统损坏(--skip-fs-probe 禁用此检查,使​​用风险自负)。

我还看到一个挂载点和 2 个磁盘系统。一个似乎是我的 Debian 安装,另一个似乎是安装盘。我似乎无法弄清楚安装磁盘在文件系统中的位置。显然只有一个分区。

我通过使用 VMware 并将其安装到 USB 而不是 VMware 中的磁盘来安装它。我有另一个 USB,没有遇到这个问题,但我用的是笔记本电脑。

答案1

最好使用wipefs命令进行“外科手术”:

sudo wipefs  /dev/sdb

会显示类似:

  DEVICE OFFSET TYPE    UUID                   LABEL
  sdb    0x8001 iso9660 2016-07-20-12-17-32-00 Lubuntu 16.04.1 LTS i386
  sdb    0x1fe  dos

所以你的 sdb 分区中有两个操作系统的 2 个签名。

要解决此问题,请运行以下命令:

sudo wipefs -o 0x8001 /dev/sdb

(它将在不触及 GPT 的情况下,在 ISO 签名的 5 个字节上外科手术般地写入零)。

完成后,运行“partprobe”或重新启动系统以将分区信息更新到操作系统。

来源:https://bugzilla.gnome.org/show_bug.cgi?id=789898

答案2

抱歉,我目前无法评论其他答案。

请永远不要做 johnshen64 建议的事情。

dd if=/dev/zero of=/dev/sdb bs=512 count=numSectorsBeforeSdb1

这将彻底毁掉你的分区表!

磁盘(HDD 和 USB)的第一个扇区(512 字节)包含磁盘的分区表。

覆盖会破坏您的磁盘分区结构。

johnshen64 的想法很好,但是你必须跳过第一个扇区。

因此请使用:

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

search 参数指示忽略前 512 个字节(分区表)并在其后写入 2047 个扇区。

答案3

你的 USB 磁盘上可能确实有某种 iso 签名,或者至少在 grub 看来是这样。使用 fdisk -l /dev/sdb (并分开 /dev/sdb 打印以确认)查找 /dev/sdb1 的起始位置。然后使用 dd if=/dev/zero of=/dev/sdb bs=512 count=numSectorsBeforeSdb1 清除这些扇区。如果您有任何不能丢失的重要数据,请在执行此类操作时一如既往地进行备份。

答案4

尝试手动运行 grub-setup:

grub-setup --force --skip-fs-probe /deb/sdb

我遇到此问题是因为我不小心将 CD ISO 映像写入我的磁盘而不是 USB 闪存盘。 grub-setup 发出了一些警告,但最终我能够在该磁盘上启动。

相关内容