Разбираюсь с GRUB2, делаю, чтобы, когда загружаешь линуксы через PXE, тебя встречала Флаттершай.
Изначально GRUB2 не хотел вообще работать в графическом режиме. В ответ на background_image
выдавал:
error: no video mode activated.
Проблема решается следующей конфигурацией:
insmod all_video
insmod gfxterm
set gfxmode=auto
set gfxpayload=keep
terminal_output gfxterm
При включении графического режима вместо текста вы увидите квадратики. Для решения надо обязательно подключить какой-нибудь шрифт, loadfont unifont
.
Теперь вопросы.
Можно ли как-то сообщить GRUB2 перед его загрузкой, какой у меня gfxmode? Допустим, я захочу на телевизоре запустить мультимедиа-дистрибутив, и хочу, чтобы моя Флаттершай была в разрешении 4096x2160. Решение у меня конечно есть, — под каждый хост свой образ, свой GRUB2, соответственно индивидуальная настройка, но интереса ради, имеется ли возможность установить максимально поддерживаемый set gfxmode=4096x2160x32
?
Хочу, чтобы конь был не один. Имеет ли GRUB2 поддержку какого-либо рандома? Ну чтобы можно было как-нибудь сделать set theme="/boot/grub/themes/$RANDOM_PONY/theme.txt"
И объясните пожалуйста, как работает search
. Потому что оно работает не так, как ожидается.
Дистрибутивы загружаются в UEFI-режиме, что локально, что через PXE, соответственно для UEFI создаются два образа, /EFI/BOOT/BOOTX64.EFI который делается командой:
grub-mkstandalone \
--format=x86_64-efi \
--output=./BOOTX64.EFI \
--modules="" \
--locales="" \
--fonts="" \
--themes="flattershy rainbow pinkiepie"
В него сам GRUB2 складывает все свои модули, ШГ, коней цветных. На выходе получаем EFI-загружаемый файл (типа как ядро с EFI_STUB).
Далее загрузочный BOOTX64.EFI заворачивается в FAT32 раздел.
TMP=$(mktemp -d)
dd if=/dev/zero of=./UEFI.IMG count=8 bs=1M
mkfs.vfat ./UEFI.IMG
mount ./UEFI.IMG $TMP
install -D ./BOOTX64.EFI $TMP/EFI/BOOT/BOOTX64.EFI
umount $TMP
rmdir $TMP
Получившийся UEFI.IMG с конями образ готов.
qemu-system-x86_64 -bios /usr/share/qemu/OVMF.fd UEFI.IMG
(скачать попробовать можете отсюда).
Суть в чём.
UEFI.IMG это раздел, на котором хранится BOOTX64.EFI, больше ничего там нет, а уже все файлы GRUB2 хранятся внутри самого BOOTX64.EFI. Это понятно.
В grub.cfg я указываю в самом начале: set theme="/boot/grub/themes/flattershy/theme.txt"
, и только ПОТОМ уже делаю search --no-floppy --file --set root /boot/vmlinuz-5.7.0
.
Нооо проблема в том, что GRUB2 сперва успешно выполняет search
, а на set theme
ругается, что такой темы оформления нет: конечно её нет, GRUB2 уже переключился на другой раздел, в другой корень (root), и естественно, там этой темы нет и быть не может, она лежит в грабовском BOOTX64.EFI!
Как быть? Я конечно могу установить эти темы рядом с /boot/vmlinuz, но для чистоты картины мне бы всё же хотелось, чтобы GRUB2 загружался, сперва применял все настройки включая цветных коней, а уже только потом чрутался в другой раздел.
Может надо как-то его заставить подождать, прежде чем делать search
?
P.S.: пример сборки CRUX/FVWM в котором задействован GRUB2 с конями iso (http://dl.voglea.com/dist/crux_gnulinux/amd64/current/crux-amd64-desktop-x11-...).