LINUX.ORG.RU

Как GRUB2 подружить с цветными конями

 ,


0

1

Разбираюсь с 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-...).

★★★★★

Последнее исправление: Spoofing (всего исправлений: 1)

как-то сообщить GRUB2 перед его загрузкой, какой у меня gfxmode?

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

GRUB2 сперва успешно выполняет search, а на set theme ругается

Похоже здесь ты заблуждаешься.

указываю в самом начале: set theme=«/boot/grub/themes/flattershy/theme.txt»…

…но не указываешь на каком разделе. Наверно правильно будет:

search --no-floppy --file --set root "/boot/grub/themes/flattershy/theme.txt"
set theme="/boot/grub/themes/flattershy/theme.txt"

А потом уже искать ядро.

andytux ★★★★★
()

ощщем, два search не помогли. пошёл другим путём и сделал search внутри menuentry, таким образом чрут делается только когда выбираешь пункт меню. сойдёт.

с gfxmode=auto я конечно погорячился, если сделать хотя бы 1366х768, то фоновое изображение становится враскоряку. тут тоже не всё так просто и надо шаманить. лень. (или призываю понифагов если есть желающие помочь, давайте нарисуем пони-тему для граба?)

Spoofing ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.