从 Ubuntu 删除所有 Windows 痕迹

从 Ubuntu 删除所有 Windows 痕迹

我曾经在其中一个硬盘驱动器上安装了双启动系统 - Ubuntu 和 Windows 7。然后,我添加了一个 SSD,现在它是我的主要硬盘驱动器,我完全用它来运行 Windows 7,而 Ubuntu 则保留在旧硬盘中。我恢复了 Grub,所以一切都正常,除了一件事。

每次我更新 grub 时,它都会检测两个窗口:

Found Windows 7 (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sdb1

显然,我不想让它检测到 sdb1 上的 Windows。因为我不再使用它(我手动删除了文件)。在不完全清除分区的情况下,我该怎么做?

答案1

我不确定它使用什么来检测操作系统。我会尝试快速重新格式化分区。

如果没有其他方法可行,这里有一个补丁可以/etc/grub.d/30_os-prober让你指定你想要跳过的任何分区:

/etc/grub.d/30_os-prober 修改

可以将这些行添加到文件(中间部分)以跳过您不想在菜单中显示的任何分区。将字符串留空将不会跳过任何内容。

添加以

############## Patch to prevent some partitions being autodetected

通过

############## End of patch

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"

  ############## Patch to prevent some partitions being autodetected
  SKIP_THESE_DEVICES="sdb1"
  # SKIP_THESE_DEVICES="sda1 sdb1 sdb2"   example for multiple devices
  # SKIP_THESE_DEVICES=""                 example for no devices

  PARTITIONNAME="`echo ${DEVICE} | cut -c 6- 2> /dev/null`"
  if [ "`echo ${SKIP_THESE_DEVICES} | grep -e ${PARTITIONNAME} 2> /dev/null`" ] ; then
    continue
  fi
  ############## End of patch

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

更改此文件后,您当然需要运行sudo update-grub以重新生成菜单。当终端对每个条目显示“找到...”时,您应该能够从终端的输出中看到结果;您可以先在修改之前运行它,然后将输出与修改之后的输出进行比较。您不应该看到已删除的条目。

答案2

如果仍然检测到 Windows 7,则意味着您创建的分区仍然包含一些 Windows 7 的引导加载程序文件。 为什么不删除分区本身? 这肯定会解决这个问题。

我建议您备份所有需要的文件,然后删除旧硬盘中的 Windows 7 分区。之后更新 grub。

我认为我不需要向您推荐工具,但据我所知,Gparted 是最好的分区编辑器。

答案3

您应该使用 Gparted live cd 删除旧硬盘上的 Windows 分区。但执行此操作后,您可能需要修复 grub。

答案4

您可以使用它wipefs来擦除文件系统元数据,这样 NTFS Windows 分区就不再被检测到了。您将丢失该分区中的所有数据。

你只需运行

sudo wipefs -a /dev/sdb1

该命令在运行后立即结束,并且比删除分区或删除文件更快。

相关内容