Изменение фоновой картинки в меню GRUB 2

  • Блог им. Lucky  

Простой способ
GRUB 2 поддерживает установку изображений в формате png, jpeg, tga, в случае если имеются соответствующие модули для загрузки изображения. Для начала рассмотрим простой способ изменения фоновой картинки.
В ubuntu возможность установки фонового изображения для grub уже настроена, поэтому достаточно только сохранить картинку с разрешением 640x480 в формате png, jpeg или tga в файл /boot/grub/moreblue-orbit-grub.png (или с расширением jpeg/tga). Хотя теоретически загрузка изображений в формате jpeg возможна, но она не реализована в стандартных файлах настройки grub. Путь к файлу (/boot/grub/moreblue-orbit-grub.png) можно проверить открыв файл /etc/grub.d/05_debian_theme. В нем должна быть строчка вида:

for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

Для того чтобы изменить цвет текста и меню нужно отредактировать следующие строчки:

set menu_color_normal=white/black
set menu_color_highlight=black/white
...
set color_normal=black/black
set color_highlight=magenta/black

Значение переменной устанавливается в формате: {цвет текста}/{цвет фона}
menu_color_normal и menu_color_highlight это цвет меню и выбранного элемента меню соответственно.
color_normal — это цвет основного текста.
После всех изменений необходимо обновить конфигурационный файл командой:
sudo update-grub

И если при обновлении вы увидите строчку «Found Debian background: /boot/grub/moreblue-orbit-grub.png», значит настройка прошла успешно.

Сложный способ
Хотя это способ сложнее, но я рекомендую использовать именно его, потому что он позволяет генерировать конфигурационный файл с более простой структурой.
Для начала необходимо создать файл /etc/grub.d/06_splash со следующим содержимым:
#!/bin/bash -e
source /usr/lib/grub/grub-mkconfig_lib
if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then
  if is_path_readable_by_grub /boot/grub/splash.png ; then
    if test -e /boot/grub/png.mod ; then
      echo "Found background: /boot/grub/splash.png" >&2
      cat << EOF
insmod png
if background_image /boot/grub/splash.png ; then
  set color_normal=white/black
  set menu_color_normal=white/black
  set menu_color_highlight=red/black
fi
EOF
    fi
  fi
fi

Затем сохранить изображение с разрешением 640x480 в файл /boot/grub/splash.png и изменить цвет текста меню путем редактирования строк начинающихся с «set». Формат переменных описан в первом способе. Далее нужно также как и в первом способе использовать команду update-grub.

Предварительный таймер
При стандартных настройках grub меню скрыто, и для того чтобы разблокировать меню нужно отредактировать в файле /etc/default/grub строчки:
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

Переменную GRUB_HIDDEN_TIMEOUT_QUIET установить в false, а GRUB_HIDDEN_TIMEOUT в нужное число секунд перед загрузкой образа по умолчанию. При таких настройках чтобы попасть в меню нужно нажимать ESC до того как истечет таймер.
Можно убрать этот предварительный таймер и сразу показывать меню со своим таймером. И таким образом избавится от лишнего этапа загрузки.
Для этого нужно создать файл /etc/grub.d/31_timeout со следующим содержимым:
#!/bin/bash -e
source /usr/lib/grub/grub-mkconfig_lib
cat << EOF
if [ \${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
EOF

В строчке «set timeout=10» вместо 10-ти можно указать любое другое число секунд перед загрузкой. Переменную GRUB_TIMEOUT в файле /etc/default/grub следует установить равной "-1":
GRUB_TIMEOUT="-1"

Таким образом это отключит стандартную систему таймеров в обход той что указана в файле /etc/grub.d/31_timeout, а переменные GRUB_HIDDEN_TIMEOUT и GRUB_HIDDEN_TIMEOUT_QUIET больше не будут ни на что влиять.
После изменений нужно как обычно выполнить команду update-grub.
  • ubuntu,
  • Grub
  • +2
  • 20 февраля 2010, 02:09
  • Lucky      


Комментарии (13)

RSS свернуть / развернуть
+
0
+1 делал по этому рецепту
avatar

ASovetov

  • 26 февраля 2010, 01:54
+
0
Спасибо, всё работает. Только есть маленькое уточнение. Разрешение картинки должно совпадать с разрешением grub, а оно не всегда 640х480. У меня 1024х768.
avatar

lampslave

  • 28 февраля 2010, 11:20
+
0
В таком случае можно использовать изображения более высокого разрешения. Чтобы узнать какие видеорежимы поддерживаются надо выполнить команду «vbeinfo» в консоли GRUB 2 (кнопка c). Затем нужное разрешение указать в файле /etc/default/grub (переменная GRUB_GFXMODE, закомментирована по умолчанию).
avatar

Lucky

  • 28 февраля 2010, 12:15
+
0
лаке молодчина!
avatar

ASovetov

  • 28 февраля 2010, 14:48
+
0
Это да… Это верно… Где посмотреть?
avatar

zondercom18

  • 6 марта 2010, 14:42
+
0
Это да… Это верно… Где посмотреть?

и вот здесь:
if background_image /boot/grub/splash.png ; then
  set color_normal=white/black
  set menu_color_normal=white/black
  set menu_color_highlight=red/black
fi
EOF
    fi
  fi
fi

ничего не перепутано? Чот всегда думал, что EOF дб в конце файла…
avatar

zondercom18

  • 6 марта 2010, 14:46
+
0
Посмотреть что? Разрешение?
avatar

lampslave

  • 6 марта 2010, 17:01
+
0
Разрешение смотреть командой vbeinfo в консоли grub.
avatar

Lucky

  • 6 марта 2010, 20:57
+
0
да, но там указан «cat << EOF», то есть читать все до поступления EOF. все верно
avatar

Lucky

  • 6 марта 2010, 20:56
+
0
Спасибо! Помог простой способ. Сложный не привел к каким то результатам. Почему — не понял.
Честно говоря, мой уровень чайникизма таков, что для сопоставления номера версии 1.97 и 2 понадобились доп сессии гугля… Может добавить определение «номер версии 1.хх= grub2»?
avatar

zondercom18

  • 6 марта 2010, 13:36
+
0
Тут не просто 1.xx а 1.97, то есть подразумевается «почти 2.00». Обычно всегда так пишут, это что то вроде пре-релиза, когда осталось совсем чуть-чуть: доработать программку и потестить.
avatar

Lucky

  • 6 марта 2010, 20:59
+
0
Файл сценария при «сложном способе» должен быть исполняемым.
Изменяется в «Свойства» -> «Права» -> «Позволять исполнение ...».
Всё работает!
avatar

LexX

  • 18 ноября 2010, 05:56
+
0
Вот есть еще фишка
avatar

Guf

  • 28 октября 2010, 05:44

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.