我如何编码我自己的自定义启动屏幕的Linux?

这不是一个简单的旧无聊定制的问题; 我真的想创build一个程序,你知道,与源代码等…

我正在考虑编写我自己的媒体中心界面,我想如果我编写我自己的启animation面,当操作系统正在加载时,它会更好看。

注意:媒体中心界面将在X中运行,但是这个问题是关于在X服务器加载之前会发生什么。

简单地说,我想做一个启animation面应用程序来隐藏Linux内核启动消息。 有没有一种方法,我可以编程一些animation像这样的某种animation进度栏,例如? 我认为我将无法编写任何2D / 3Dgraphics(因为这需要X正在运行,对吧?),那么我将如何去产生?

我宁愿在C ++中做这个,但C也是一个选项。

注意:我不打算使用任何现有的“主题”或类似的东西,只是对编程方面感兴趣。

更新:

一些build议是使用标准图像(.bmp,.jpeg等), 我不想将图像加载到现有的应用程序。 但显然,我可能想要加载图像到我将要做的启动屏幕应用程序。

我没有绑定到Linux发行版,所以这可以用于任何事情,尽pipeDebian或基于Debian的发行版都不错。

我喜欢早期加载X服务器并运行加载屏幕的build议,但是有没有更直接的方法? 当然,你可以做一个程序,隐藏引导信息,并显示一个自定义的程序? 显然,这将是非常低水平的编程,但这就是我正在寻找…

另外,我不想改变引导装载程序(LILO,GRUB等)。

更新2:

到目前为止,好的build议一直在寻找像splashy和fbsplash这样的应用程序的源代码 。 任何人都可以更好的这个build议?

对于图形输出你可以使用Linux framebuffer ,为了开发应用程序,你可以使用gtk,它支持直接渲染到framebuffer GtkFB 。

对于视频等,你可以使用mplayer,也支持渲染帧缓冲。

对于初始化你必须查看使用的系统,debian使用一个sysv初始化风格初始化,Ubuntu使用暴发户。

我会看看飞溅的源代码。 但是你需要用C编码

如果你有技能,你可以实现一个基于软件的3D引擎(就像在过去的美好时光一样)。 一个简单的旋转立方体不应该很难编码,并有大量的教程。 缺点是你会增加开机时间,在媒体中心不是很愉快。

这里有一个东西:有一个库/内核补丁, fbsplash ,已经被写入做你想做的事情。 它将显示一个图像来代替正常的启动信息,并且还可以包含一个进度条。 当你试图做一些已经存在的,已经建立了完善的开源实现的东西的时候,真的没有更好的办法来学习如何自己做,而不是看源代码。

即使你正在寻找更复杂的东西(比如说,如果你想创建一些比进度条更出色的动画),你也许可以从fbsplash开始,并修改它以适应你的需求。

有几种方法可以做到这一点。 你可以让X服务器加载得很早,只需编写一个程序来显示启动画面。 你也可以使用framebuffer设备。 如果您正在使用英特尔硬件,或者愿意使用OSS AMD驱动程序或Nouveau作为Nvidia,则可以使用内核模式设置。 为此,我会看看Fedora的普利茅斯。 你可以写一个普利茅斯插件来显示你的启动画面。

启动画面只是一个图像(.bmp,.jpg ),可以通过启动加载程序加载。 既然你没有指定你正在使用的发行版本,请查看LILO,grub或其中一个适合的版本。 检查/boot目录中的线索,将引导您的搜索。

如果所有你想要做的是有一个很好的干净启动顺序与自己的飞溅,绝对没有启动消息,你可以做到以下几点:

首先,沉默grub,启动消息传递和控制台光标:

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

这将非常迅速和默默地(淡入黑色)带你到登录屏幕,在那里你可以把飞溅。 你的发行版可能会显示它自己的飞溅,如果你喜欢,你可以改变它。

这是一个专业的干净启动顺序,没有所有的通常的Linux疣和皱纹。 (像OSX和Windows)。

我个人使用Ubunutu与LXDE,并在3秒内,即使在较旧的硬件,有一个干净的飞溅启动。