У нас оказывается grub сделан весьма криворуко: перед загрузкой ядра он зачем-то лезет на раздел /usr, хотя, по определению загрузчик должен иметь всё необходимое в разделе /boot. У меня раздел /usr находится на USB, по этому при запуске загрузчика это устройство ещё не проинициализировано и по этому не доступно. В результате загрузчик не находит фонтов и запрещает переход в графический режим и не загружает фоновую картинку меню.
Created attachment 4629 [details] фонт в /boot Перенёс файл фонта в /boot теперь фоновая картинка появляется всегда
Мне не нравится это исправление: grub-mkconfig должен генерить конфиг. Копировать чего-то куда-то он не должен. Недоступность /usr из grub - это вообще достаточно редкий случай. Можно же просто задать другой GRUB_FONT. Тривиальным исправлением также будет просто переложить font в /boot из /usr/share/. Но я пока не понял действительно ли это нужно.
1 Вам совершенно не должно нравится моё решение -- это МОЁ решение, и я его навязывать не собираюсь. 2 Я продемонстрировал вам как можно исправить эту ситуацию и, самое главное, указал на причину этой ошибки. Если grub-mkconfig должен генерировать только конфиг. Кто же должен обеспечивать работоспособность загрузчика? До запуска ядра, кроме /boot загрузчика вообще не должно что-то интересовать. Может у меня остальные разделы вообще на сервере? что тогда? Тривиальное исправление (на уровне пакета) конечно предпочтительнее, тем более, что это совсем не сложно. Где задаётся GRUB_FONT я с первого раза не нашёл (и сейчас не знаю) для меня оказалось проще изменить скрипт
Кстати, у меня тоже есть конфигурации с недоступным /usr из grub. Виталик, Дмитрий в данном случае абсолютно прав - всё что нужно для grub должено быть доступно. разумным выглядит копирование шрифта.
Может я дурак? но GRUB_FONT я действительно не нахожу [user@eeedima Documents]$ sudo grep -r GRUB_FONT /etc grep: /etc/ppp/resolv.conf: No such file or directory /etc/grub.d/00_header~: cp -v "${GRUB_FONT_PATH}" "${GRUB_PREFIX}" /etc/grub.d/00_header~: FONTFILE="${GRUB_PREFIX}${GRUB_FONT_PATH##*/}" /etc/grub.d/00_header~:if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT_PATH}"` ; then /etc/grub.d/00_header.org: prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT_PATH}"` /etc/grub.d/00_header.org:if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT_PATH}"` ; then /etc/grub.d/00_header: cp "${GRUB_FONT_PATH}" "${GRUB_PREFIX}" /etc/grub.d/00_header: FONTFILE="${GRUB_PREFIX}/${GRUB_FONT_PATH##*/}" grep: /etc/syslog.d/ldap: No such device or address grep: /etc/syslog.d/klogd: No such device or address grep: /etc/syslog.d/openvpn: No such device or address grep: /etc/syslog.d/postfix: No such device or address [user@eeedima Documents]$ [user@eeedima Documents]$ sudo grep -r GRUB_FONT /boot [user@eeedima Documents]$ Где оно задаётся? при компиляции?
grub2-1.98-alt21.20100804 -> sisyphus: * Fri Oct 29 2010 Vitaly Kuznetsov <vitty@altlinux> 1.98-alt21.20100804 - place default font in /boot/grub (ALT #24446) - fix initrd finding (ALT #24442)
Спасибо