我想加载一些内核模块,并在 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/spi
和modprobe
模块。 - 访问
/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。
任何帮助表示赞赏。提前致谢。