加载一个巨大的initrd时显示一个闪屏图像
考虑一下具有以下约束条件的实时GNU / Linux发行版:所有软件都应包含在initrd
映像中(这会导致其大小很大),并且内核包含尽可能少的静态编译模块。
考虑所描述的发行版的启动过程:引导加载程序(例如grub或isolinux)加载内核,然后加载并提取initrd到内存中。 在提取过程中(旧计算机需要20-30秒)屏幕上没有任何事情发生。
我想知道,在initrd提取过程中是否有现成的解决方案来显示启动画面? 如果不是,请您对以下建议发表评论:
静态编译一个例如600x480x8bit的图像到内核中,并在initrd被提取时以某种方式将其刷新到framebuffer中。
做同样的事情,但强制一个特定的视频驱动程序被加载(例如VESA)并入侵它的代码,而不是内核的帧缓冲区。
谢谢。
也许你可以简化它:创建2个initrd文件。 第一个可以很小。 然后它可以调用普利茅斯显示启动画面,而真正的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
然后编译,安装,更新你的bootloader并检查它是否适用于你。
链接地址: http://www.djcxy.com/p/11453.html