在加载一个巨大的initrd时显示一个启动图像



考虑一个具有以下约束的GNU/Linux发行版:所有软件都应该包含在initrd映像中(这会导致其巨大的大小),并且内核包含尽可能少的静态编译模块。

考虑所描述的发行版的引导过程:引导加载程序(例如grub或isolinux)加载内核,然后内核加载initrd并将其提取到内存中。在提取过程中(在旧电脑上需要20-30秒),屏幕上什么都没有发生。

我想知道,有没有现成的解决方案可以在initrd提取过程中显示启动屏幕?如果没有,你能对以下想法发表评论吗:

  1. 在提取initrd时,将一个例如600x480x8位的映像静态编译到内核中,并以某种方式将其刷新到帧缓冲区中。

  2. 做同样的事情,但强制加载特定的视频驱动程序(例如VESA)并侵入其代码,而不是内核的帧缓冲区。

谢谢。

也许您可以简化它:创建2个initrd文件。第一个可以很小。然后它可以调用Plymouth来显示一个启动屏幕,同时提取真实的initrd。

如果你认为内核加载initrd映像,那你就错了。这是由引导加载程序完成的。如果你想显示一个启动屏幕,你必须告诉你的引导加载程序显示一个图像。如何做到这一点取决于您的引导加载程序。

您可以尝试创建一个普通的.ppm文件,并在内核压缩模式下使用LZMA压缩。这可以通过使用引导标志选项来完成,但不确定它是否适用于您。

首先,您需要在内核中启用对Bootup徽标和标准224色Linux徽标的支持:

设备驱动程序-->图形支持–>

Support for frame buffer devices
VESA VGA graphics support
Video mode selection support
Framebuffer Console support
Select compiled-in fonts
VGA 8×16 font
Bootup logo
Standard 224-color Linux log

其次,如果假设您有一个名为screen.png.png图像,则需要生成相应的.ppm文件:

pngtopnm screen.png| ppmquant -fs 223 | pnmtoplainpnm > /usr/src/linux/drivers/video/logo/logo_linux_clut224.ppm 

然后编译、安装、更新引导程序,并检查它是否适合您。

相关内容

  • 没有找到相关文章

最新更新