LINUX.ORG.RU

Как сменить bootsplash «три квадратика» на любую другую тему? Plymouth?

 , ,


0

2

Всем привет!

Есть у меня «без вводные» машинки на базе Raspberry Pi3 с одной лишь функцией - выводить изображение на экран. Работают уже гладко, тфу тфу тфу, и захотелось всё поломать доработать. т.к. вывод загрузки ядра уже более никого не интересует, я решил включить bootsplash.

Значит добавил к параметрам ядра «splash quiet» и перезагрузил, результат не мог не обрадовать - экран чёрный, а в центре 3 квадратика меняющие свою яркость по мере загрузки. Прикольно чё, но нужна другая картинка на загрузку. Начал рыть логи и пришёл в выводу, что сплешем занимается plymouth. Нашёл инструкцию на него, вычитал, что надо бы создать Initramfs с нужной мне темой по средствам команды plymouth-set-default-theme -R <theme> и так далее. Всё это проделал, initramfs создался, в строку загрузки добавил. Перезагружаюсь - ни чего не изменилось. Стал опять рыть, и что я понял. А нет такой темы с 3мя квадратиками и от куда она берётся я так и не нашёл.

Так вот, всеведующий коллективный разум, может кто в курсе как это и от куда?

Система Debian Jessy aka Rasbian Jessy Lite.

Ответ на: комментарий от amorpher

собственно не понимаю что в этом описании есть. Всё как и всегда. Добавление темы, обновление initramfs. Я это уже делал. И у меня всё равно всегда 3 квадратика....

Spider55 ()
Ответ на: комментарий от Spider55

сделай точно всё, чтобы размеры, форматы картинок и прочего были одинаковыми
ну и должен быть установлен пакет plymouth и всё остальное (plymouth-text-theme это не то)

ещё посмотри какое разрешение поддерживается для того, через чего хочешь вывод сплеша, в грубе например набери vbeinfo

amorpher ★★★★★ ()
Последнее исправление: amorpher (всего исправлений: 3)
Ответ на: комментарий от amorpher

ну ессестно пакет стоит. Так то в принципе невозможно (прямым путём) установить plymouth-text-theme без plymouth, зависимости не дадут.
груба у меня нет, у меня прямая загрузка в ядро.
Вывод у меня на fb идёт с разрешением 1024х768@60Hz и тему я взял из готовых с расчётом на 1024х768

пробовал включать отладку plymouth. Ну тут ваще всё не просто. Судя по всему где-то теория разошлась с практикой.

[main.c:273]                                 load_settings:Trying to load /etc/plymouth//plymouthd.conf
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group Daemon
[ply-key-file.c:268]                      ply_key_file_load_groups:key file has no more groups
[main.c:295]                                 load_settings:Splash delay is set to 1.000000
[main.c:411]                    find_system_default_splash:System configured theme file is '/usr/share/plymouth/themes/mytheme/mytheme.plymouth'
[main.c:273]                                 load_settings:Trying to load /usr/share/plymouth//plymouthd.defaults
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group Daemon
[ply-key-file.c:268]                      ply_key_file_load_groups:key file has no more groups
[main.c:426]              find_distribution_default_splash:Distribution default theme file is '/usr/share/plymouth/themes/text/text.plymouth'
[main.c:844]           plymouth_should_show_default_splash:checking if plymouth should show default splash
[main.c:877]           plymouth_should_show_default_splash:using default splash because kernel command line has option "splash"

самый сок в последней строке. т.е. plymouth проверяет есть ли слово splash в строке параметров ядра и ОТКЛЮЧАЕТ использование установленной мною темы, выбирая дефолтную. Но если на то пошло, то и дефолтная тема text не есть 3 квадратика.
с другой стороны сервис plymouth.service не будет запущен менеджером systemd если в строке параметров не будет splash, потому как в файле plymouth-start.service есть строка ConditionKernelCommandLine=splash Замкнутый круг?

Ну круг то я разомкнул. Я убрал пока эту строку и судя по логам plymouth загружается и не берёт дефолтную тему, но всё равно квадратики. Если же запретить запуск сервиса plymouth-start, то при загрузке квадратиков нет, просто черный экран и пара строк от ядра...

Spider55 ()
Ответ на: комментарий от Spider55

хз, ничего наверное актуального не посоветую уже, т. к. не пользуюсь давно никакими сплешами как ушёл на арч (у меня в грубе стоит quiet и вывод при загрузке всего в несколько строк за несколько секунд до иксов), ранее баловался этими красивостями на дебиане и убунтах (и с плимутом и со сплешем до плимута) и проблем не возникало, помню только, что важны размеры и форматы картинок

amorpher ★★★★★ ()
Ответ на: комментарий от amorpher

ну у меня железка по тупее и в основном время загрузки занимает соединение по Wifi с сервером и прочее, от чего достаточно как бы простой. Потом конечно запускается Xorg, но тоже голенький :)

Spider55 ()

В общем те самые 3 квадратика это тупо тема text, которая используется есть нет fb и консоль по мнению plymouth текстовая.
Но ведь она графическая, вверху сидят 4 пингвина... Как ему это объяснить?

Spider55 ()

В общем я нашёл проблему.
Опишу, дабы снова когда буду такое делать наткнуться на это сообщение и не втуплять так как в этот раз. А может и ещё кому-то поможет.

не отображались только ГРАФИЧЕСКИЕ «темы», параметр ядру splash всё таки нужен, почему так я не разобрался, но нужен, без него демон plymouthd не устанавливает обработчик событий для Udev и как следствие не получает сообщение о создании /dev/fb0 ну и не выводит на него. Но с этим обработчиком в логе пишеться, что будет использоваться стандартная тема из /usr/share/plymouth/plymouthd.defaults, но наделе используется из /etc/plymouth/plymouthd.conf. Вот дословно:

[main.c:273]                                 load_settings:Trying to load /etc/plymouth//plymouthd.conf
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group Daemon
[ply-key-file.c:268]                      ply_key_file_load_groups:key file has no more groups
[main.c:295]                                 load_settings:Splash delay is set to 0.000000
[main.c:411]                    find_system_default_splash:System configured theme file is '/usr/share/plymouth/themes/fade-in/fade-in.plymouth'
[main.c:273]                                 load_settings:Trying to load /usr/share/plymouth//plymouthd.defaults
[ply-key-file.c:171]                       ply_key_file_load_group:trying to load group Daemon
[ply-key-file.c:268]                      ply_key_file_load_groups:key file has no more groups
[main.c:426]              find_distribution_default_splash:Distribution default theme file is '/usr/share/plymouth/themes/text/text.plymouth'
[main.c:844]           plymouth_should_show_default_splash:checking if plymouth should show default splash
[main.c:877]           plymouth_should_show_default_splash:using default splash because kernel command line has option "splash"

повторюсь - в итоге будет тема НЕ дефолтная. Вот такая логика.
Далее, у меня не отображалась тема, потому что plymouthd при загрузке цеплялся к текстовой консоли /dev/tty1 и определяя, что она НЕ framebuffer или drm отказывался выводить в неё графику. Ну и выводил только текстовые темы.
Этот момент был исправлен параметром ядра plymouth.ignore-serial-consoles. Теперь plymouthd при загрузке стал игнорировать /dev/tty* и продолжал ждать любой другой консоли.
[ply-device-manager.c:675]                   create_seats_from_terminals:checking for consoles
[ply-device-manager.c:680]                   create_seats_from_terminals:ignoring all consoles but default console because explicitly told to.
[ply-device-manager.c:394]                         watch_for_udev_events:watching for udev graphics device add and remove events

И дожидался /dev/fb0 как и положено. Понимал что она 1024х768 и переходил в ожидание команды от plymouth клиента, а команда должна быть --show-splash и команда приходила, и вот тут происходил Segmentation fault того самого plymouthd, о чём я не мог понять, потому что эта строка не появлялась в логах, а клиентская сторона сообщала о неудачном соединении с демоном и тоже отваливалась. Заставки не было.

В поисках причины падения демона меня заинтересовала строка в логах
device is for local console: no. Порывшись в исходниках стало понятно, что должен быть yes, без этого не создаётся ни одного основного «терминала», не что в итоге проверки нет и при попытке вывести в него заставку происходит падение. Ну ещё бы! А вот определяется это параметром boot_vga у устройства /dev/fb0, точнее у видеоадаптера на который ссылается fb0. На эту тему в сети есть много багрепортов, почему этого флага не создаётся и как исправить. Мне было лень искать решение и в локальной версии у себя я просто убрал эту проверку.
--- plymouth-0.9.0.orig/src/libply-splash-core/ply-device-manager.c
+++ plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c
@@ -173,7 +173,7 @@ create_seat_for_udev_device (ply_device_
   const char *device_path;
   ply_terminal_t *terminal = NULL;

-  for_local_console = device_is_for_local_console (manager, device);
+  for_local_console = true; //device_is_for_local_console (manager, device);

   ply_trace ("device is for local console: %s", for_local_console? "yes" : "no");

у меня один fb0 и этого достаточно. Собственно всё. После перекомпиляции всё заработало. Работает как графика так и тестовые заставки. Да это не красиво, но в моём варианте этого достаточно.

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