如何从 Grub2 隐藏恢复分区

Nos*_*nit 1 grub2 recovery-partition

我在朋友的 PC 上安装了 Linux 发行版。他不知道如何很好地使用 Linux 甚至 Windows,我希望它尽可能简单。当我安装 GRUB 时,它检测到 HP 为他安装的恢复分区,并且它是列表中的第一个 Windows。

在谷歌搜索并查看 grub 手册和配置文件后,我仍然无法弄清楚如何从 GRUB 中隐藏分区。我查看了30_osprober,但没有看到任何明确的方法来排除操作系统。

任何人都可以指出我从 GRUB 菜单中排除操作系统/分区的正确方向吗?

小智 5

我遵循了这篇文章中的指导方针(在第 6 部分)

GRUB 2 将为 Windows (Vista) 恢复分区找到并创建一个菜单项。至少在 Vista 中,菜单名称与正常的 Vista 操作分区相同,唯一的区别是分区名称。从菜单中删除恢复分区条目:

  • 备份现有/etc/grub.d/30_os-prober文件,从备份中删除可执行位,使其不会在更新期间运行,并打开原始文件进行编辑(该部分从第 134 行开始):

    sudo cp /etc/grub.d/30_os-prober /etc/grub.d/30_os-prober.original  && sudo chmod -x
    
    Run Code Online (Sandbox Code Playgroud)

    /etc/grub.d/30_os-prober.original

    gksu gedit +83 /etc/grub.d/30_os-prober &
    
    Run Code Online (Sandbox Code Playgroud)
  • 确定确切的标题和 Windows 恢复分区。这些可以位于/boot/grub/grub.cfg file. 添加下面的条目。在示例中,菜单项显示为“Windows Vista(加载程序)(在 /dev/sda1 上)”。确保选择正确的分区,因为正常和恢复标题的标题可能相同。对于内容 $LONGNAME${DEVICE} 应在menuentry的恢复分区引号之间的确切内容:

    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`"
    
    if [ -z "${LONGNAME}" ] ; then
     LONGNAME="${LABEL}"
    fi
    
    # Added to remove Windows Recovery
    if [ "$LONGNAME" = "Windows Vista (loader)" ] && [ "${DEVICE}" = "/dev/sda1" ] ; then
    continue
    fi
    # End Added
    
    Run Code Online (Sandbox Code Playgroud)

保存文件,然后运行:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

我不得不考虑 Windows 7(方法是相同的),而不是 Vista,一切正常。