Вопрос или проблема
Я хочу изменить операционную систему по умолчанию при загрузке в GRUB2. Но единственный способ, который я знаю, чтобы увидеть порядок ОС, который я хочу в меню GRUB, это сделать перезагрузку и увидеть отображенное меню.
В grub.cfg
есть гораздо больше строк menuentry
, чем фактических вариантов в меню GRUB, поэтому я не могу определить в этом файле ту, которую я хочу.
Есть ли какое-то место, где хранится фактически отображаемое меню, чтобы я мог его увидеть без необходимости перезагружать компьютер?
Я считаю, что grub-emu
должен вам помочь. В терминале выполните команду:
sudo apt install grub-emu && sudo grub-emu
Смотрите здесь для получения дополнительной информации.
Учтите: Вам нужно установить фокус на терминал, в котором вы запустили эмулятор, чтобы можно было вводить данные! Окно самого эмулятора не будет реагировать на любые вводы.
Вы можете установить grub2-theme-preview, который является пакетом PyPi. Он использует QEMU и, похоже, хорошо работает для тестирования тем grub, и это без необходимости перезагружать компьютер после каждого изменения.
Он также доступен напрямую из AUR, это версия, которую я использовал, так как я использую Manjaro.
Для него требуются следующие зависимости, не из PyPi (смотрите README.md для ссылок, деталей и возможных обновлений):
- grub-mkrescue от GRUB 2 (пакет grub-common на Debian и Ubuntu)
- QEMU — гипервизор, выполняющий аппаратную виртуализацию
- OVMF — EFI образ BIOS для использования с QEMU
- mtools — коллекция утилит для доступа к MS-DOS
- xorriso из libisoburn — интерфейс, позволяющий создавать и расширять форматы ISO
- И python / pip, конечно
Для установки выполните следующую команду:
pip install --user grub2-theme-preview
После установки вы можете запускать grub2-theme-preview /path/to/your/theme/directory
из терминала для его запуска (подробнее о его использовании здесь.)
Примечание: если у вас есть какие-либо пользовательские конфигурации, например custom.cfg или, скажем, liveiso.cfg, которые вы добавляете в grub.cfg отдельно, благодаря скрипту в /etc/grub.d/41_custom, например, их записи могут не отображаться, в таком случае вам нужно будет использовать новый флаг –add. Ваша команда может выглядеть следующим образом, с –add TARGET=/SOURCE для каждой пользовательской конфигурации, которую вы хотите добавить:
grub2-theme-preview --verbose --grub-cfg /boot/grub/grub.cfg --add /boot/grub/custom.cfg=/boot/grub/custom.cfg --add /boot/grub/gpu-switcher.cfg=/boot/grub/gpu-switcher.cfg --add /boot/grub/liveiso.cfg=/boot/grub/liveiso.cfg /usr/share/grub/themes/manjaro
Больше контекста здесь: https://github.com/hartwork/grub2-theme-preview/issues/29#issuecomment-980802808
Вы также можете посмотреть ответы здесь, если вам нужно что-то более ориентированное на терминал и только для просмотра порядка. Эта команда awk, например, даст вам записи и подзаписи также:
awk -F\' '/(^|| )nuentry / {print $2}' /boot/grub/grub.cfg|cat -n|awk '{print $1-1,$1="",$0}'
Мне больше нравятся эти варианты, чем grub-emu
, так как, кажется, он имеет проблему с закрытием, без необходимости полностью закрывать ваш терминал, как указано в комментариях к этому ответу. Кроме того, grub2-theme-preview действительно покажет вам тему (хотя он требует большего количества зависимостей), а команда awk быстра и проста; возможно, добавьте ее в качестве псевдонима, если вы используете ее часто, чтобы не помнить ее заново.
Для GRUB2 необходим новый пакет /.*emu/
, потому что grub-emu
(как рекомендовано revisions/405521/8
) не будет работать.
С помощью Fedora-KDE-Live-x86_64-41-1.4.iso
, grub2-emu-2.12-15.fc41.x86_64.rpm
можно установить с помощью sudo dnf install 'grub2-emu'
и вызвать как:
.
Ответ или решение
Конечно, рассмотрим, как можно предварительно просмотреть меню GRUB без необходимости перезагрузки системы. Это актуальная задача для многих пользователей Linux, которые хотят изменить операционную систему по умолчанию в загрузочном меню GRUB2 без повторных перезагрузок. Решений данной проблемы несколько, и они отличаются по сложности и необходимым инструментам.
Использование GRUB Emulator
Одним из эффективных способов визуализировать изменения в меню GRUB без перезагрузки является установка и использование GRUB Emulator (grub-emu
). Этот инструмент позволяет запустить эмуляцию меню GRUB прямо в терминале:
- Установите GRUB Emulator, воспользовавшись командой ниже:
sudo apt install grub-emu && sudo grub-emu
Не забудьте кликнуть внутри окна терминала, чтобы активировать ввод данных, так как само окно эмулятора не реагирует на нажатия клавиш напрямую.
Использование grub2-theme-preview
Инструмент grub2-theme-preview
позволяет тестировать изменения в темах GRUB без перезагрузки системы, используя возможности QEMU для эмуляции:
- Установите необходимые зависимости:
grub-mkrescue
, QEMU, OVMF, mtools и xorriso. - С помощью команды ниже установите пакет:
pip install --user grub2-theme-preview
- Запустите предварительный просмотр:
grub2-theme-preview /path/to/your/theme/directory
Учитывайте, что для включения пользовательских конфигураций потребуется добавить соответствующие флаги в команду.
Операции в терминале
Для быстрого отображения списка пунктов меню GRUB можно воспользоваться awk
командой, которая выполнит парсинг файла конфигурации GRUB и выведет все доступные пункты:
awk -F\' '/(^|| )nuentry / {print $2}' /boot/grub/grub.cfg | cat -n | awk '{print $1-1,$1="",$0}'
Заключение
Каждое из предложенных решений имеет свои преимущества. Эмулятор GRUB и grub2-theme-preview позволяют увидеть визуальные изменения, что особенно полезно при тестировании тем. Команда awk
— простой и эффективный метод для быстрого получения списка меню.
Важно выбрать инструмент, который лучше всего соответствует вашим требованиям и возможностям вашей системы. Надеемся, эти решения помогут вам эффективно управлять вашим GRUB меню без необходимости повторной перезагрузки.