Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сплэшскрин в Линукс, реально ли вообще?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Polaris
Подскажите, а есть ли возможность показывать при старте системы нормальный сплэшскрин (логотип)?
Проблема заключается в следующем - мне нужно показать картинку с момента старта системы до момента запуска моего приложения, которое стартует под Иксами. Я уже перепробовал кучу всего, в итоге остановился на варианте с логотипом, встроенным в ядро. Он показывается достаточно рано, спустя примерно 2 секунды, висит на экране весь процесс загрузки, но выключается сразу же при старте Иксов, возможно даже, что чуть раньше, при достижении graphical.target. Система у меня достаточно медленная, поэтому Иксы стартуют 3-4 секунды, потом запускается приложение, в итоге минимум 5-6 секунд экран черный, что выглядит реально непрофессионально.
Я знаю, что есть как минимум три возможности запуска логотипа на моей системе (iMX6+Debian или Angström):

1. Включить отображение в U-boot и пропатчить ядро для сохранения картинки, данный метод включается сразу (что некритично в целом), но выключается, думаю, в тот же момент и требует немалых усилий
2. Поддержка логотипа в ядре - то, что я использую в данный момент времени.
3. Скрипт в init.d с отрисовкой через fbi - запускается позднее, чем из ядра, проблема с Иксами не решается, этот метод я уже использовал и отказался от него.

Есть ли какая-то дополнительная возможность обойти инициализацию Иксов и сохранить картинку до момента запуска моего приложения?

Заранее спасибо!
Tarbal
Конечно возможно. Отдельно в буте и при старте ядра. В ядре делал.
Когда-то делал в ядре 2.6.35 на imx53, но уже не помню деталей.
Вам на какой платформе?
Вот вам где это делается. Я делал аналогично. *.ppm это картинки в таком формате должны быть.
http://elixir.free-electrons.com/linux/lat...vers/video/logo

фрагмент Makefile

obj-$(CONFIG_LOGO) += logo.o
obj-$(CONFIG_LOGO_LINUX_MONO) += logo_linux_mono.o
obj-$(CONFIG_LOGO_LINUX_VGA16) += logo_linux_vga16.o
obj-$(CONFIG_LOGO_LINUX_CLUT224) += logo_linux_clut224.o
obj-$(CONFIG_LOGO_BLACKFIN_CLUT224) += logo_blackfin_clut224.o
obj-$(CONFIG_LOGO_BLACKFIN_VGA16) += logo_blackfin_vga16.o
obj-$(CONFIG_LOGO_DEC_CLUT224) += logo_dec_clut224.o
obj-$(CONFIG_LOGO_MAC_CLUT224) += logo_mac_clut224.o
obj-$(CONFIG_LOGO_PARISC_CLUT224) += logo_parisc_clut224.o
obj-$(CONFIG_LOGO_SGI_CLUT224) += logo_sgi_clut224.o
obj-$(CONFIG_LOGO_SUN_CLUT224) += logo_sun_clut224.o
obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o

obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o


В make menuconfig

вам надо разрешить CONFIG_LOGO и CONFIG_LOGO_.... соответствующий вашей картинке.
Polaris
Цитата(Tarbal @ Aug 23 2017, 05:09) *
Конечно возможно. Отдельно в буте и при старте ядра. В ядре делал.
Когда-то делал в ядре 2.6.35 на imx53, но уже не помню деталей.
Вам на какой платформе?
Вот вам где это делается. Я делал аналогично. *.ppm это картинки в таком формате должны быть.
http://elixir.free-electrons.com/linux/lat...vers/video/logo

фрагмент Makefile

obj-$(CONFIG_LOGO) += logo.o
obj-$(CONFIG_LOGO_LINUX_MONO) += logo_linux_mono.o
obj-$(CONFIG_LOGO_LINUX_VGA16) += logo_linux_vga16.o
obj-$(CONFIG_LOGO_LINUX_CLUT224) += logo_linux_clut224.o
obj-$(CONFIG_LOGO_BLACKFIN_CLUT224) += logo_blackfin_clut224.o
obj-$(CONFIG_LOGO_BLACKFIN_VGA16) += logo_blackfin_vga16.o
obj-$(CONFIG_LOGO_DEC_CLUT224) += logo_dec_clut224.o
obj-$(CONFIG_LOGO_MAC_CLUT224) += logo_mac_clut224.o
obj-$(CONFIG_LOGO_PARISC_CLUT224) += logo_parisc_clut224.o
obj-$(CONFIG_LOGO_SGI_CLUT224) += logo_sgi_clut224.o
obj-$(CONFIG_LOGO_SUN_CLUT224) += logo_sun_clut224.o
obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o

obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o


В make menuconfig

вам надо разрешить CONFIG_LOGO и CONFIG_LOGO_.... соответствующий вашей картинке.

Я все это уже сделал давно, все работает, вопрос не в этом, а в дырке между этим лого и стартом самого приложения, после завершения загрузки ядра лого исчезает, а мне нужно еще закрыть старт икс-сервера и, если реально, приложения, этого лого из ядра не делает, в этом и вопрос, что реализация данной задачи не является тривиальной. Есть, конечно, plymouth, но на моей машине он почему-то не работает.
Tarbal
Понятно. Это уже не сплэш скрин. Полагаю вам надо в конфигурации xorg надо искать. Здесь я мало что могу сказать.
Tarbal
Вот попалось по теме, но похоже у человека пока не все получилось.
https://devtalk.nvidia.com/default/topic/99...n-at-x-startup/

Добавили фрагмент
Код
    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "LogoPath" "/usr/share/images/desktop-base/water.png"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection

в файл:
/etc/X11/xorg.conf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.