构建后将 initramfs 复制到特定位置?

构建后将 initramfs 复制到特定位置?

我一直在使用 Ubuntu 15.04 映像对 Raspberry Pi 进行黑客攻击。由于我有加密的启动设置,因此我需要initramfs.gz在文件系统的第一个分区(即明文启动设备)中生成一个映像。

Ubuntu 自动生成 initramfs 映像/boot/initrd.img-$(uname -r)。是否有一个可以用脚本捕获的钩子,以便我可以自动将最新构建的图像复制到/boot/firmware/initramfs.gz

答案1

initramfs-工具手册并编写一个钩子脚本。您可以查看系统提供的脚本/usr/share/initramfs-tools/hooks/以供参考。您自己的脚本应该放入/etc/initramfs-tools/hooks/.两个文件夹中的脚本被合并并执行,通过mkinitramfs.

在临时文件夹中,您可以生成 initramfs 并检查其内容。

mkinitramfs -o initramfs.gz
zcat initramfs.gz | cpio -id initramfs.gz

一旦看起来准备就绪,请/boot使用更新系统 initramfs update-initramfs -u

编辑:我误解了你的问题。

您可以看到钩子脚本目录,/etc/kernel其中由每个内核包的 postinst/postrm/preinst/prerm 脚本调用。 update-initramfs在 中调用/etc/kernel/postinst.d/initramfs-tools,因此您可以在那里添加另一个脚本,该脚本将在 后调用initramfs-tools

答案2

我知道,这是一个老问题,但我一直在寻找同一问题的答案,就是这样:

使用脚本/etc/initramfs/post-update.d/

Ubuntu 没有很好的文档,但是它适用于 Debian如中所述这个问题。该update-initramfs脚本检查该目录是否存在,并在创建 initramfs 后运行该目录中的脚本。

首先创建目录:

mkdir -p /etc/initramfs/post-update.d

在你的情况下,脚本将是:

/etc/initramfs/post-update.d/zz-copy-to-firmware

#!/bin/sh
cp /boot/initrd.img-$(uname -r) /boot/firmware/initramfs.gz

并使其可执行:

chmod +x /etc/initramfs/post-update.d/zz-copy-to-firmware

注意:Ubuntu 在 中创建了指向最新 initramfs 的符号链接/boot/initrd.img,因此您可以在脚本中使用它而不是查询uname -r

相关内容