7

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

考虑所描述的发行版的启动过程:引导加载程序(例如 grub 或 isolinux)加载内核,然后加载并提取 initrd 到内存中。在提取过程中(在旧计算机上需要 20-30 秒),屏幕上没有任何反应。

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

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

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

谢谢你。

4

3 回答 3

2

也许你可以让它更简单:创建 2 个 initrd 文件。第一个可以很小。然后它可以调用 Plymouth 以在提取真正的 initrd 时显示启动画面。

于 2013-12-16T16:34:33.023 回答
1

如果您认为内核加载了 initrd 映像,那您就错了。它由引导加载程序完成。如果你想显示一个启动画面,你必须告诉你的引导加载程序显示一个图像。如何执行此操作取决于您的引导加载程序。

于 2013-05-21T17:04:37.803 回答
1

您可以尝试创建一个普通的 .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

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

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

然后只需编译、安装、更新您的引导加载程序并检查它是否适合您。

于 2013-07-09T13:31:33.083 回答