为什么 grub 显示 Windows 7 选项?

为什么 grub 显示 Windows 7 选项?

我最近在我的电脑上安装了 mint 17。

$ parted -l
Model: ATA PLEXTOR PX-256M5 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

Number  Start   End    Size   Type      File system  Flags
 1      1049kB  256MB  255MB  primary   ext2         boot
 2      257MB   256GB  256GB  extended
 5      257MB   256GB  256GB  logical                lvm


Model: ATA SAMSUNG HD103SJ (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  1000GB  1000GB  primary  ext3


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/mint--vg-root: 252GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  252GB  252GB  ext4


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/mint--vg-swap_1: 4291MB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End     Size    File system     Flags
 1      0.00B  4291MB  4291MB  linux-swap(v1)

ATA PLEXTOR PX-256M5 磁盘之前确实装有 Windows 8,但它已经重新格式化,应该完全消失了,现在上面安装了 linux mint。

TA SAMSUNG HD103SJ 磁盘上确实有 Windows 7,所以我怀疑这与该磁盘有关。 Mint 会自动挂载此磁盘(它没有 fstab 条目)。

我已经成功地使用 fdisk 然后使用 mkfs 在磁盘上手动创建了一个分区,但是当我重新启动电脑时,我仍然看到 Windows 7 选项。

谁能告诉我我错过了什么?

答案1

事实证明我需要运行以下命令:

sudo update-grub

这更新了我的 /boot/grub/grub.cfg 文件并删除了 windows 7 选项。

答案2

Grub 的菜单来自配置文件,而不是通过扫描硬件。但是,可以通过扫描硬件来创建配置文件,您可能希望在更改分区后执行此操作。

执行此操作的命令是grub-mkconfig(Debian 派生)或grub2-mkconfig(Fedora 派生)。我认为 Mint 会是前者,但无论如何,实际上只会安装其中一个。

仔细检查您是否有现有的/boot/grub2/grub.cfg.如果没有,应该有一个 grub 子目录 grub.cfg/boot支持这一点(例如cp grub.cfg grub.cfg.bk)。然后你需要su root运行grub-mkconfig(或grub2-...);这将打印到标准输出。这只是为了确保它有效。如果是这样:

grub-mkconfig > /etc/grub2/grub.cfg

假设这是正确的道路。我这里之所以说使用suand而不是sudo因为重定向(>)。这次输出会少得多,只有Found linux image:诸如此类的东西。

当您重新启动时,选项应该会更新。如果由于某种原因新配置不起作用,您将需要启动 Live CD 并替换grub.cfg为您所做的备份。

答案3

从您提供的信息来看,如果您没有安装除 Linux 之外的其他操作系统,则可以选择禁用 os-prober。

执行此操作的两种方法:

  • 在 grub 默认文件中设置 GRUB_DISABLE_OS_PROBER=true (/etc/default/grub? - Mint 上不确定)
  • 删除 os-prober 软件包(如果缺少,grub-mkconfig 将跳过该部分)

可能发生的情况是 os-prober 错误地认为该磁盘上仍然存在 Win7,因为某些扇区仍然包含它检查的任何签名。另一种解决方案,如果该驱动器上还没有重要数据(因为您似乎暗示它最近重新分区和格式化),则将前 10Mb 左右归零(例如dd if=/dev/zero of=/dev/sdb count=1 bs=10M),然后重新安装启动标签,重新分区并重新格式化。

在尝试执行任何操作之前,检查 /boot/.../grub.cfg 应该会告诉您哪个设备被检测为具有 Win 7。

相关内容