如何从 Grub2 隐藏恢复分区

如何从 Grub2 隐藏恢复分区

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

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

有人能指出我从 GRUB 菜单中排除操作系统/分区的正确方向吗?

答案1

//编辑// 因编辑而更改(我发誓在我输入时这已经更改了)

一个肮脏的解决方案是编辑 grub.cfg,但每次内核升级时都需要这样做。

在 grub v2 中:(注意:不推荐这样做)

vim /boot/grub/grub.cfg

正确的方法是编辑 /etc/grub.d/30_os-prober(如你所述)并告诉它忽略某些分区,可以找到一个很好的指南这里

肮脏的解决方案#2 可能是运行一个脚本,为您的朋友从 grub.cfg 中注释掉该行。

答案2

我遵循了这个帖子(第 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
    

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

    gksu gedit +83 /etc/grub.d/30_os-prober &
    
  • 确定确切的标题和 Windows 恢复分区。它们可以在 中找到/boot/grub/grub.cfg file。添加以下条目。在示例中,菜单项显示为“Windows Vista (loader) (on /dev/sda1)”。请确保选择正确的分区,因为正常标题和恢复标题的标题可能相同。 和 的内容 $LONGNAME${DEVICE} 为恢复分区菜单项中引号之间的准确内容:

    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
    

保存文件,然后运行:

sudo update-grub

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

答案3

在文件中,/etc/default/grub您可以添加GRUB_OS_PROBER_SKIP_LIST用空格分隔的列表值UUID@path_to_device,以让 OS_PROBER 跳过那些文件系统。

例如:

GRUB_OS_PROBER_SKIP_LIST=12345@/dev/sda1

您可以从 获取 UUID 列表lsblk -fs

更多信息GRUB_OS_PROBER_SKIP_LIST

相关内容