Вопрос или проблема
На моем ноутбуке с 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
, которая работает с записями загрузчика.
-
Список всех доступных записей:
Выполните следующую команду, чтобы получить список всех доступных записей загрузки:
sudo grubby --info=ALL | awk -F '(=)' '/title/ {print $2}' | tr -d \"
Эта команда извлечет названия всех доступных ядер и выведет их в виде списка.
-
Получение информации о записях:
Если вы хотите получить более детальную информацию о каждой записи, используйте команду:
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
, вы можете быстро получить доступ ко всем доступным ядрам и их информации, что дает вам возможность точно настроить загрузку системы. Понимание и управление этими записями помогают избежать проблем, связанных с загрузкой системы после обновлений или изменений конфигурации.
С помощью описанных команд вы сможете легко настроить вашу систему на загрузку нужного ядра при следующем перезапуске, что является важным аспектом системного администрирования.