grub2: как просмотреть записи меню BLSCFG в оболочке Host OS (bash) (не grub) командной строке?

Вопрос или проблема

На моем ноутбуке с Fedora-40 Linux x86_64 файл /boot/grub2/grub.cfg настроен на использование BLSCFG – не мог бы кто-нибудь подробнее объяснить о BLSCFG и о том, как я могу использовать его из командной строки bash, чтобы перечислить пункты меню, чтобы я мог использовать команду grub2-reboot, указав номер пункта меню?

   ```
   [root@host:~] # cat /etc/default/grub
   GRUB_TIMEOUT=5
   GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
   GRUB_DEFAULT="saved"
   #GRUB_DISABLE_SUBMENU="true"
   GRUB_TERMINAL_OUTPUT="console"
   GRUB_CMDLINE_LINUX="resume=UUID=${elided} rd.lvm.lv=LNX_ROOT/FEDORA rhgb=no plymouth.use-simpledrm enforcing=0 gnome.initial-setup=no mitigations=off "
  #GRUB_DISABLE_RECOVERY="true"
  GRUB_ENABLE_BLSCFG="true"
  #GRUB_DISABLE_OS_PROBER="true"
  GRUB_GRUBENV_UPDATE="yes"
  GRUB_OS_PROBER_SKIP_LIST="C08C-8F0D@/EFI/Microsoft/Boot/bootmgfw.efi"
  ```

Проблема в том, что мой /boot/grub2/grub.cfg использует ДИНАМИЧЕСКИЕ пункты меню, т.е. BLSCFG смотрит на то, что находится в /boot/vmlinux* на целевом загрузочном устройстве и
затем выбирает последний загруженный пункт?

Тогда как я могу сказать FC-40 “перезагрузиться на выбранный пункт меню grub” с помощью команды grub2-reboot, если я не могу перечислить пункты меню?

Я хочу удостовериться, что если ‘lernel-install add …’ перестроил initramfs ядра Rescue и обновил конфигурацию UEFI ПОСЛЕ того, как он перестроил изображения ядра не-резерва и сделал свою конфигурацию, тогда не-резервное ядро остается стандартным ядром для следующей загрузки, или я могу УСТАНОВИТЬ стандартное ядро для следующей загрузки с помощью grub2-reboot. Как именно я могу это сделать, если используется BLSCFG?

Т.е. я ищу какой-то скрипт / команду ‘grub2-show-menu-entries’, который отображает индексы пунктов меню, которые я могу передать в grub2-reboot …

Я столкнулся с аналогичной проблемой, когда добавил репозиторий LTS в виртуальную машину Fedora 41. Получить список текущего порядка загрузки можно с помощью grubby:

sudo grubby --info=ALL | awk -F '(=)' '/title/ {print $2}' | tr -d \"

Fedora Linux (6.11.8-300.fc41.x86_64) 41 (Сорок один)
Fedora Linux (6.6.62-200.fc41.x86_64) 41 (Сорок один)

Этот список отображается в порядке индексов (начиная с 0), так что grub-reboot 1 загрузит второй пункт из списка. Чтобы получить больше информации о ваших текущих загрузочных записях, выполните это:

sudo grubby --info=ALL

index=0
kernel="/boot/vmlinuz-6.11.8-300.fc41.x86_64"
args="ro selinux=0"
root="UUID=9056e92f-a773-49f6-9470-7cf4ae80b0a8"
initrd="/boot/initramfs-6.11.8-300.fc41.x86_64.img"
title="Fedora Linux (6.11.8-300.fc41.x86_64) 41 (Сорок один)"
id="65b28911db9a4f70b577ca032cc03608-6.11.8-300.fc41.x86_64"
index=1
kernel="/boot/vmlinuz-6.6.62-200.fc41.x86_64"
args="ro selinux=0"
root="UUID=9056e92f-a773-49f6-9470-7cf4ae80b0a8"
initrd="/boot/initramfs-6.6.62-200.fc41.x86_64.img"
title="Fedora Linux (6.6.62-200.fc41.x86_64) 41 (Сорок один)"
id="65b28911db9a4f70b577ca032cc03608-6.6.62-200.fc41.x86_64"

Я не уверен, как Fedora устанавливает порядок индексов; единственное, что последовательно, это то, что последнее установленное ядро перемещается на индекс 0. Загрузочные записи для BLSCFG Grub находятся в /boot/loader/entries/.

Ответ или решение

Введение в BLSCFG и его использование в Fedora 40

BLSCFG (Boot Loader Specification Configuration) – это механизм, используемый в современных системах Linux для управления загрузкой различных ядер и initramfs. В отличие от статически настроенных меню GRUB, BLSCFG позволяет динамически генерировать меню загрузки на основе файлов, находящихся в директории /boot/loader/entries/. Это особенно полезно для простоты и гибкости, так как новые записи могут автоматически добавляться после установки или обновления ядра.

Как просмотреть записи меню BLSCFG в Fedora 40

Чтобы получить список доступных записей меню BLSCFG через командную строку в Bash, вы можете воспользоваться несколькими командами. Важно отметить, что для работы с записями вам потребуется использовать утилиту grubby, которая работает с записями загрузчика.

  1. Список всех доступных записей:

    Выполните следующую команду, чтобы получить список всех доступных записей загрузки:

    sudo grubby --info=ALL | awk -F '(=)' '/title/ {print $2}' | tr -d \"

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

  2. Получение информации о записях:

    Если вы хотите получить более детальную информацию о каждой записи, используйте команду:

    sudo grubby --info=ALL

    Это выведет полную информацию, включая индексы и параметры запуска для каждого доступного ядра. Например:

    index=0
    kernel="/boot/vmlinuz-6.11.8-300.fc41.x86_64"
    args="ro selinux=0"
    root="UUID=...",
    title="Fedora Linux (6.11.8-300.fc41.x86_64) 41 (Forty One)"

    Здесь index определяет порядок записи. Индекс 0 будет соответствовать первому загружаемому ядру, индекс 1 – второму, и так далее.

Как использовать grub2-reboot для перезагрузки в выбранное ядро

После того как вы получили нужный индекс записи, вы можете использовать команду grub2-reboot, чтобы установить конкретное ядро для следующей перезагрузки:

sudo grub2-reboot <index>

Замените <index> на номер записи, который вы хотите загрузить. Например, чтобы загрузить ядро с индексом 1, выполните команду:

sudo grub2-reboot 1

Резюме

Использование BLSCFG в Fedora 40 упрощает управление загрузочными записями, автоматизируя этот процесс. Используя утилиту grubby, вы можете быстро получить доступ ко всем доступным ядрам и их информации, что дает вам возможность точно настроить загрузку системы. Понимание и управление этими записями помогают избежать проблем, связанных с загрузкой системы после обновлений или изменений конфигурации.

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

Оцените материал
Добавить комментарий

Капча загружается...