我一直在使用 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
。