访问 Yocto 生成的 initramfs 映像中的 initramfs-tools 功能

访问 Yocto 生成的 initramfs 映像中的 initramfs-tools 功能

我想加载一些内核模块,并在 Plymouth 启动之前激活帧缓冲区访问。这通常是/etc/initramfs-tools使用initramfs-tools.但是,当使用 Yocto 构建 initramfs 映像时,没有这样的目录可用。这意味着,据我所知,无论initramfs-tools加载模块和初始化帧缓冲区做什么,都必须在图像中手动完成。initramfs

notro 非常细致地解释了我想要完成的任务https://github.com/notro/fbtft/wiki/Bootsplash 。我想做与下面相同的事情:

  • 访问/etc/initramfs-tools/scripts/init-top/spimodprobe模块。
  • 访问/etc/initramfs-tools/modules并列出由模块守护程序启动的更多模块
  • 启用帧缓冲区,这是通过echo "export FRAMEBUFFER=/dev/fb1" | sudo tee /etc/initramfs-tools/conf.d/fb1

通过我的研究,我可以发现initramfs-framework-基础包其中包含 initramfs 启动使用的一些脚本。我认为这可能是一个很好的起点。但是,我不知道如何明确告诉 initramfs 执行我想要完成的任务(上面的任务)。

笔记:目前,我的 initramfs 映像是通过以下配方生成的:

include recipes-core/images/rpi-basic-image.bb
BASEPACKS = " \
    base-passwd \
    busybox \
    initramfs-live-boot \
    initramfs-framework-base \
    udev \
    ${ROOTFS_BOOTSTRAP_INSTALL} \
"

IMAGE_INSTALL = " ${BASEPACKS} \
                  plymouth plymouth-set-default-theme  \
                "

# Do not pollute the initrd image with rootfs features
IMAGE_FEATURES = "splash"
SPLASH = "plymouth"

IMAGE_LINGUAS = ""
LICENSE = "MIT"

IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
IMAGE_ROOTFS_SIZE = "8192"
IMAGE_OVERHEAD_FACTOR = "1.0"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
IMAGE_ROOTFS_MAXSIZE = "12288"

CMDLINE_append = " quiet splash nomodeset plymouth.ignore-serial-consoles consoleblank=0"

BAD_RECOMMENDATIONS += "busybox-syslog"

另请注意:我使用的是带有 U-boot 引导加载程序的基于 ARMv6 的计算机。编译原始版本initramfs-tools(最初是为 Debian 开发的)生成 0 字节图像。我猜这是它的兼容性问题。因此,我将不得不使用 yocto 的内部工具生成 initramfs。

任何帮助表示赞赏。提前致谢。

相关内容