Справочное руководство по изображению grub.cfg

Я пытаюсь вручную установить фоновое изображение для grub на загрузочном флэш-диске. Поскольку накопитель загружает только ISO и не имеет установленной ОС, я не могу воспользоваться такими сценариями, как update-grub чтобы сделать это для меня, а сообщения о редактировании / etc / default / grub не относятся к моей ситуации. Я видел Как установить фоновое изображение на GRUB? но это не относится к причинам, о которых я упомянул. Мне удалось получить все мои ISO для правильной загрузки, но я застрял в применении фонового изображения. Вот соответствующий раздел моего grub.cfg, остальные – все записи меню, которые работают правильно (возврат в текстовый режим).

 set timeout=10 set default=0 set root=(hd0,msdos1) ### BEGIN background setup ### function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi } load_video insmod gfxterm insmod part_msdos insmod png GRUB_TERMINAL=gfxterm GRUB_GFXMODE=auto GRUB_BACKGROUND="splash.png" ### END background setup ### 

Фоновое изображение представляет собой PNG-файл размером 640×480 (который я масштабировал до размера с помощью gimp). Используя GRUB 2.02 Beta2

Дальнейшие исследования показывают, что эта часть:

 GRUB_TERMINAL=gfxterm GRUB_GFXMODE=auto GRUB_BACKGROUND="splash.png" 

использует переменные, которые используются сценариями обновления и принадлежат / etc / default / grub и не отображаются таким образом в grub.cfg, поэтому я уверен, что эти строки, по крайней мере, ошибочны.

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

  • Как восстановить массив RAID5
  • Arch linux: pacman не работает, когда chrooting
  • Удалил папку Windows.old, и теперь, когда я запускаю свой компьютер, GRUB больше не видит окна
  • Определите, какая программа находится в моем MBR-коде
  • Есть ли способ загрузиться из iso во время работы системы с живого диска?
  • Невозможно найти отсутствующие разделы root / sda
  • Восстановление системы с сбоем HDD и повторная установка GRUB
  • arch linux-error: не удалось получить канонический путь «airootfs» (grub to USB installation)
  • 2 Solutions collect form web for “Справочное руководство по изображению grub.cfg”

    Перед меню необходимо добавить следующую строку в свой grub.cfg. Поскольку он выполнен на заказ, и вы не собираетесь использовать update-grub вас не должно быть никаких проблем:

      background_image /boot/Your_image.png 

    Теперь, если вы хотите иметь другой фон для своих дистрибутивов, вам просто нужно добавить строку в меню. Например, это та часть, где начинаются мои меню, так как вы можете видеть, что у меня есть фон по умолчанию перед меню, так что, когда начинается grub, у него есть фон, после чего каждое меню / подменю имеет свой собственный backgroun:

     background_image /boot/SolusOS-splash.png set color_normal=white/black set color_highlight=black/white submenu "Debian 8.1 -->"{ submenu "Debian 8.1 i386 -->"{ background_image /boot/DebianLava-splash.png set iso=/boot/ISOs/debian-live-8.1.0-i386-gnome-desktop.iso .... 

    EDIT: Вот мои записи в пути поиска (помните, что uuid – мой идентификатор usb) не знают, может ли это быть вашей проблемой:

     set boot_uuid=D042-8A53 set root_uuid=D042-8A53 search --fs-uuid $root_uuid --set=root search --fs-uuid $boot_uuid --set=grub_boot if [ $boot_uuid == $root_uuid ] then set grub_boot=($grub_boot)/boot else set grub_boot=($grub_boot) fi 

    Поскольку мои навыки кодирования явно не соответствовали этой задаче, я разработал метод решения этой проблемы, временно установив на флеш-накопитель Live Lubuntu и используя самый лучший настройщик Grub Daniel Richter, чтобы дать мне исходную отправную точку. Я систематически прошел через код, комментируя строки и разделы, которые, как я думал, могут оказаться ненужными для моих целей, проверяя изменения, когда я шел. Пример с комментариями (без записей в меню) можно найти здесь для тех, кто может быть заинтересован в этом процессе. Ниже приведен тестовый раздел кода (используемый для Legacy Boot ) после редактирования, который я закончил после удаления большинства комментариев и ненужных разделов. Похоже, что большинство моих проблем были связаны с неправильной обработкой linux_gfx_mode , terminal_output и background_image (и установкой root). Как я догадывался в своем редактировании, переменные выражаются по-разному в файле grub.cfg, чем в сценариях grub. Я не сомневаюсь, что это можно было бы улучшить, и когда я обнаруживаю упрощения, я их отредактирую.

      set have_grubenv=true load_env set timeout=10 #added set default=2 #added menuentry_id_option="" export menuentry_id_option function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi } #if [ x$feature_default_font_path = xy ] ; then #font=unicode #else ##Scrapped if-then-else above required? - NO? insmod part_msdos insmod ext2 search --no-floppy --set=root --label freedom font=/boot/grub/fonts/unicode.pf2 fi if loadfont $font ; then set gfxmode=auto load_video insmod gfxterm set locale_dir=/boot/grub/locale set lang=en_US insmod gettext fi terminal_output gfxterm insmod part_msdos insmod ext2 search --set=root --label freedom ### Begin Background setup ### insmod png set menu_color_normal=yellow/black set menu_color_highlight=black/light-gray if background_image /boot/grub/splash.png; then true else set menu_color_normal=green/black set menu_color_highlight=black/light-gray fi ### END Background setup ### ### BEGIN setup graphics ### function gfxmode { set gfxpayload="${1}" if [ "${1}" = "keep" ]; then set vt_handoff=vt.handoff=7 else set vt_handoff= fi } if [ "${recordfail}" != 1 ]; then if [ -e ${prefix}/gfxblacklist.txt ]; then if hwmatch ${prefix}/gfxblacklist.txt 3; then if [ ${match} = 0 ]; then set linux_gfx_mode=keep else set linux_gfx_mode=text fi else set linux_gfx_mode=text fi else set linux_gfx_mode=keep fi else set linux_gfx_mode=text fi export linux_gfx_mode ### End setup graphics ### 

    Источники:

    https://answers.launchpad.net/~danielrichter2007

    https://ubuntuforums.org/showthread.php?t=1195275

    https://www.gnu.org/software/grub/manual/grub.html

    Linux и Unix - лучшая ОС в мире.