Как я могу написать свой собственный экран заставки для Linux? - PullRequest
6 голосов
/ 28 марта 2009

Это НЕ вопрос простой старой скучной настройки; Я на самом деле хочу создать программу, вы знаете, с исходным кодом и т.д ...

Я думаю о программировании своего собственного интерфейса медиацентра, и я подумал, что будет лучше, если я кодирую свой собственный экран-заставку для загрузки ОС.

Примечание: Интерфейс медиацентра будет работать в X, но этот вопрос касается того, что произойдет до загрузки X-сервера.

Проще говоря, я хотел бы создать приложение-заставку, чтобы скрыть загрузочные сообщения ядра Linux. Есть ли способ, которым я могу запрограммировать анимацию, например, анимированный индикатор выполнения? Я предполагаю, что не смогу закодировать любую 2D / 3D графику (так как для этого потребуется X, не так ли?), Так как же мне сгенерировать это?

Я бы предпочел сделать это в C ++, но вариант C также возможен.

Примечание: Я не собираюсь использовать какие-либо существующие "темы" или что-то в этом роде, просто заинтересован в программировании.

Обновление:

Некоторые предложения касались использования стандартных изображений (.bmp, .jpeg и т. Д.), Меня не интересует загрузка изображений в существующее приложение. Но, очевидно, я могу захотеть загрузить образы в приложение экрана загрузки, которое я сделаю.

Я не привязан к дистрибутиву Linux, так что это может быть для чего угодно, хотя Debian или дистрибутив на основе Debian подойдет.

Мне нравится предложение о ранней загрузке X-сервера и запуске экрана загрузки, но разве нет более прямого подхода? Конечно, вы можете сделать программу, которая скрывает загрузочные сообщения и показывает пользовательскую программу? Очевидно, это было бы программирование очень низкого уровня, но это то, что я ищу ...

Кроме того, я не заинтересован в изменении загрузчика (LILO, GRUB и т. Д.).

Обновление 2:

До сих пор хорошие предложения были рассмотрены в исходном коде для таких приложений, как splashy и fbsplash. Может кто-нибудь лучше это предложение?

Ответы [ 6 ]

3 голосов
/ 28 марта 2009

Для графического вывода вы можете использовать кадровый буфер Linux , для разработки приложений вы можете использовать gtk, поддерживающий рендеринг непосредственно в кадровый буфер GtkFB .

Для видео и тому подобного вы можете использовать mplayer, который также поддерживает рендеринг в кадровый буфер.

Для инициализации вы должны посмотреть на используемую систему, debian использует инициализацию в стиле sysv init http://www.debian -administration.org / article / 212 , ubuntu использует upstart.

3 голосов
/ 28 марта 2009

Я бы посмотрел на грязный исходный код. Но вам нужно будет код на C.

Если у вас есть навыки, вы можете реализовать программный 3D-движок (как в старые добрые времена). Простой вращающийся куб не должен быть очень трудным для кодирования, и есть множество обучающих программ. Недостатком является то, что вы увеличите время загрузки, что не очень приятно в медиацентре.

2 голосов
/ 28 марта 2009

Вот в чём дело: есть патч библиотеки / ядра, fbsplash , который уже был написан для выполнения точно того, что вы хотите сделать. Он будет отображать изображение вместо обычных загрузочных сообщений, а также может включать индикатор выполнения. Когда вы пытаетесь сделать что-то, для чего уже существует хорошо зарекомендовавшая себя реализация с открытым исходным кодом, на самом деле нет лучшего способа научиться делать это самостоятельно, чем смотреть на исходный код.

Даже если вы ищете что-то более сложное (скажем, если вы хотите создать какую-нибудь более причудливую анимацию, чем индикатор выполнения), вы можете начать с fbsplash и изменить его в соответствии со своими потребностями.

1 голос
/ 28 марта 2009

Есть несколько способов сделать это. Вы можете загрузить X-сервер очень рано и просто написать программу для отображения заставки. Вы также можете использовать устройство кадрового буфера. Если вы используете аппаратное обеспечение Intel или хотите использовать драйверы OSS AMD или Nouveau для Nvidia, вы можете использовать режим ядра. Для этого я бы посмотрел на Плимут Федоры. Вы могли бы просто написать плагин Plymouth для отображения вашего заставки.

0 голосов
/ 09 июля 2017

Если все, что вы хотите сделать, это иметь красивую чистую последовательность загрузки с собственным всплеском и абсолютно без загрузочных сообщений, вы можете сделать следующее:

Во-первых, тишину, загрузочные сообщения и консольный курсор:

GRUB_CMDLINE_LINUX_DEFAULT = quiet fastboot splash vt.cur_default=1 loglevel=0
GRUB_TIMEOUT               = 0

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

Это дает профессиональную чистую последовательность загрузки без всех обычных бородавок и морщин. (Как OSX и Windows).

Я лично использую Ubunutu с LXDE, и у меня чистая всплывающая загрузка менее чем за 3 секунды, даже на старом оборудовании.

0 голосов
/ 28 марта 2009

Заставка представляет собой просто изображение (.bmp, .jpg, и т. Д. ) и может быть загружено загрузчиком. Поскольку вы не указали используемый вами дистрибутив, изучите LILO, grub или любой другой, который вам подходит. Проверьте каталог /boot на наличие подсказок, которые будут направлять ваш поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...