【问题标题】:Showing a splash image while loading a huge initrd在加载巨大的 initrd 时显示启动图像
【发布时间】:2012-11-07 04:32:13
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

  • +1 我想知道这个。
  • 我会说静态选项是最好的,无需再增加几秒钟的启动时间。

标签: linux kernel splash-screen initrd


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 谢谢@blu3g3!绝对值得一试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多