如何在 apt 更新内核软件包后在 Debian 上自动运行 mkinitramfs?

如何在 apt 更新内核软件包后在 Debian 上自动运行 mkinitramfs?

我想要实现的是在 Raspberry Pi(运行 Raspian Buster)上拥有一个加密的根文件系统,该系统在启动时通过 ssh 解锁。我通过适应取得了很大的进步Kali Linux 教程并让它至少工作一次,但它还不能在内核更新中幸存下来。

问题之一是,此设置使用的是 initramfs,该 initramfs 被/boot/config.txt引用

initramfs initramfs.gz followkernel

并且需要在内核更新后通过手动调用来更新,例如

mkinitramfs -o /boot/initramfs.gz 4.19.118-v7+

其中4.19.118-v7+取决于当前内核版本和所使用的 Raspberry Pi 硬件类型。当然,我希望每当apt upgrade安装新内核时都能自动完成此操作。

这是我遇到的两个问题:

  • A) 在哪里以及如何以正确的方式插入更新过程?
  • B) 如何确定要使用的正确内核版本?

关于A)我已经学习了raspberrypi-kernel.postinst执行/etc/kernel/postinst.d/。这又调用/usr/sbin/update-initramfs到底会调用哪个mkinitramfs。我感到困惑的是这段代码/usr/sbin/update-initramfs

set_initramfs()
{
        initramfs="${BOOTDIR}/initrd.img-${version}"
}

它确定 initramfs 的文件名。更新期间没有生成这样的文件,我不确定我是否走在正确的轨道上,因为维基百科表示 init.rd 方案已被 initramfs 方案取代。但是,我无法找到一个很好的文档来描述内核模块升级后应该如何发生事情。 (好的链接表示赞赏)。

所以我的问题是:哪里是插入运行mkinitramfs命令的脚本的好地方?我应该修改吗/etc/kernel/postinst.d/?这个解决方案在接下来的几个 Debian 版本中会稳定吗?

关于 B),很容易获得可用的内核版本

> ls -l /lib/modules/ | awk -F" " '{print $9}'`

5.4.51+
5.4.51-v7+
5.4.51-v7l+
5.4.51-v8+

但如何自动选择适合当前硬件的呢?对于 Pi3B+ 这将是5.4.51-v7+.有没有办法自动确定这一点?

非常感谢您的帮助!

答案1

看起来必须通过设置INITRD=Yes来启用 initramfs/etc/default/raspberrypi-kernel并添加更新后脚本来/etc/initramfs/post-update.d/更新/boot/config.txt,如建议的那样内核更新后更新intramfs#608

我希望,这有效...

相关内容