Grub2图标问题

Grub2图标问题

每次 grub 更新时,由于正常更新,grub 菜单上的一些图标都会丢失。我必须手动编辑 /boot/grub/grub.cfg 文件,并将“--class ubuntu”(或其他内容)添加到不再包含“--class”条目的行,因此不会显示任何图标。

grub 究竟从哪里获得将 '--class' 条目写入 grub.cfg 文件的指令?我查看了模板,但没有发现任何明显的东西。

我已阅读了一些在线 grub 指南,但我发现它很难,所以我想寻求帮助!

(Ubuntu 14.04 LTS)

答案1

对于任何感兴趣的人,我已经弄清楚了。要查看的文件夹是

/etc/grub.d/

这里有一组文件,它们是生成文件的模板

/boot/grub/grub.cfg

我感兴趣的文件是

10_linux*
30_uefi-firmware*

10_linux 文件用于 linux 操作系统条目,30_uefi-firmware 文件用于 eufi 设置条目。

为了生成子菜单项的图标,我编辑了相应的行。原始行是这样的

echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"

我添加了 CLASS 选项,现在它看起来像这样

echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"

为了给系统设置条目(即 uefi 设置 (bios))添加图标,我编辑了 30_uefi-firmware

我在导出条目后立即添加了一个类条目

CLASS="--class recovery"

我在菜单项行中添加了 CLASS 选项

menuentry '$LABEL' ${CLASS} \$menuentry_id_option 'uefi-firmware'

类别条目必须与主题图标文件夹中的图标匹配。

/boot/grub/themes/<theme name>/icons

我使用了“恢复”类/图标,它显示一个工具箱图标。我会在有空的时候寻找一些更合适的东西,将图标放在图标文件夹中,并相应地更改类条目。

答案2

您的回答中提到您正在寻找更好的 UEFI 图标。

这是图标我正在使用我的 grub UEFI 系统设置选项:

在此处输入图片描述

这是另一个图标互联网

在此处输入图片描述

答案3

答案4

使此过程完全自动化的一种方法是编写一个脚本,在自动生成的文件中进行正则表达式替换grub.cfg以添加--class所需的 es。然后修改grub-mkconfig/usr/sbin/grub-mkconfig在 Ubuntu 衍生产品中)以在最后运行它。

我用这个想法事情,您可能会喜欢的 grub 主题/工具(无耻的插件)。

基于此,你可以在 Python 中手动完成,例如,此功能(注意正则表达式)返回一个匹配列表,每个匹配项都包含您的条目的名称,您可以稍后对其进行迭代以grub.cfg使用正确的--classes 构造替换(示例实现这里)。

def get_entry_names(grub_cfg):
    "Gets the entry names from grub.cfg contents"
    pattern = (
        r"(?P<head>(?:submenu|menuentry) ?)"  # menuentry or submenu
        r"(?:\"|')"  # " or '
        r"(?P<entryname>[^\"']*)"  # capture the entry name (without quotes)
        r"(?:\"|')"  # " or '
        r"(?P<tail>[^\{]*\{)"  # The rest of the entry header until a { is found
    )
    matchiter = re.finditer(pattern, grub_cfg)
    matches = list(matchiter)
    return matches

相关内容