我最近将产品安装程序从 Debian 10 移植到了 Ubuntu 20.04,但在显示普利茅斯启动画面时遇到了问题。
拆开一个好的安装程序,并劫持 20.04 的安装,我发现 plymouth 无法显示启动画面,因为它找不到合适的图形设备,这是由于缺少内核模块造成的。好吧,我将它们添加到 initramfs-tools 中的模块文件中,现在它们已捆绑在 initramfs 文件中。
但是,当调用 drm 渲染器时,由于缺少库而失败。我可以在我的好安装程序中看到库,但在新安装程序中看不到。我可以在构建过程中单独复制它们,但我必须相信 mkinitramfs 有能力确定依赖项并帮我复制它。我的总体看法是,依赖项没有被复制,因为我在解压由 mkinitramfs 最初构建的 initrd 文件后,手动将 /usr/lib/x86_64-linux-gnu/plymouth 目录塞入 initrd 目录中。
我该如何告诉 mkinitramfs 包含这些文件/目录?为了解决问题,我还想复制一些其他二进制文件,例如 less?我该如何告诉 mkinitramfs 复制哪些 bin 文件?
答案1
您不应手动将文件复制到 initramfs,而应创建一个自定义 initramfs 脚本,该脚本使用 copy_exec 将文件放入 initramfs。当您生成 initramfs 时,它应该会自动获取任何依赖项。我必须为我们用于通过网络对服务器进行映像的过程执行此操作。Ubuntu 的 initramfs 工具文档应该可以帮助您入门。
https://manpages.ubuntu.com/manpages/xenial/man8/initramfs-tools.8.html