Вопрос о значках Grub2

Каждый раз копает обновления, из-за нормальных обновлений, я теряю некоторые значки в меню личинки. Я должен вручную отредактировать/boot/grub/grub.cfg файл и добавить '-человечность класса' (или безотносительно) к строкам, которые больше не имеют '-запись класса и следовательно не отображают значка.

Где, точно, личинка получает инструкцию записать '-запись класса в grub.cfg файл? Я посмотрел на шаблоны, но не вижу ничего очевидного.

Я прочитал несколько руководств личинки онлайн, но я нахожу это тяжелым движением так думал, что я обращусь за помощью!

(Ubuntu 14.04 LTS)

1
задан 14 August 2014 в 15:49

4 ответа

Для кого-либо, кому интересно, я понял это. Папка для заглядывания

/etc/grub.d/

существует набор файлов в здесь, которые являются шаблонами для поколения файла

/boot/grub/grub.cfg

файлы, которыми я интересуюсь,

10_linux*
30_uefi-firmware*

10_linux, файл для записей операционной системы Linux, 30_uefi-микропрограммный файл для записи установки 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-встроенное-микропрограммное-обеспечение

, я добавил запись класса, сразу после записей экспорта

CLASS="--class recovery"

, и я добавил опцию CLASS в menuentry строке

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

, запись класса должна соответствовать значку, который находится в папке значка тем.

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

я использовал класс/значок 'восстановления', который показывает значок панели инструментов. Я буду искать что-то немного более подходящее, когда я получу момент, помещу значок в папку значков и изменю запись класса соответственно.

1
ответ дан 11 November 2019 в 12:38

Ваш ответ упомянул поиск лучшего значка UEFI.

Вот значок, я использую для своей личинки системную опцию настройки UEFI:

enter image description here

Вот другой значок в сети:

enter image description here

0
ответ дан 7 December 2019 в 16:34

Пользователям Fedora, это будет полезно при реализации вышеуказанного исправления: https://www.reddit.com/r/Fedora/comments/cg3wl4/i_cant_find_menuentries_of_my_fedora_30_install/

0
ответ дан 18 April 2020 в 11:55

Один из способов сделать это полностью автоматизированным — создать скрипт, который заменяет регулярные выражения в автоматически сгенерированном grub.cfg, чтобы добавить нужные вам --class. А затем изменить grub-mkconfig (/usr/sbin/grub-mkconfig в производных Ubuntu), чтобы запустить его в конце.

Я использую эту идею в Matter, теме/инструменте 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
0
ответ дан 5 July 2020 в 20:59

Другие вопросы по тегам:

Похожие вопросы: