如何判断更新是否需要 initramfs 更新?

如何判断更新是否需要 initramfs 更新?

有时,在运行时sudo apt-get upgrade,接近尾声时会出现以下行:

Processing triggers for initramfs-tools (0.133+deb10u1) ...
update-initramfs: Generating /boot/initrd.img-5.10.103-v7+

您如何提前判断是否会发生这种情况?

(我所处的特定环境是 Raspberry Pi 操作系统,但我相信这个问题适用于所有基于 Debian/apt 的操作系统。)

答案1

运行lsinitramfs /boot/initrd.img-$(uname -r)(或您的发行版的等效项)以查看包含在中的所有内容的列表你的initramfs。如果常规文件系统中的任何相应文件发生更改,那么 initramfs 通常也应该更新。

请注意,某些 initramfs 脚本的对应项位于真实文件系统中的不同位置:特别是,initramfs/scripts目录的内容基于真实文件系统中的文件/usr/share/initramfs-tools/etc/initramfs-tools真实文件系统中的文件。

特别是,在以下情况下需要更新 initramfs:

  • 安装了更新的内核
  • 如果您有早期启动所需的第三方内核模块(即系统磁盘、控制台显示器和/或键盘的驱动程序)并且这些模块已更新(例如使用 DKMS)
  • 负责创建实际 initramfs 内容的脚本或这些脚本的配置文件已更改
  • 与根文件系统、主交换和/或从休眠状态恢复相关的任何持久设置都会更改
  • 与 initramfs 中初始化的设备相关的 udev 规则或内核模块选项已更改

update-initramfs每当更新相应的包时,上述前两个通常会自动触发。最后两项主要是系统管理员的职责。

如果initramfs-tools更新了软件包,软件包维护者通常会将软件包配置为update-initramfs根据需要触发自动更新。但是,如果您自己对initramfs-tools挂钩脚本或配置文件进行更改或添加,则您需要自行负责运行它。

请注意,理想情况下,如果可能的话,您应该将对 initramfs-tools 的更改保留在/etc/initramfs-tools/子树中;如果您修改/usr/share/initramfs-tools/子树中的现有脚本,这些更改可能会在包更新时被覆盖。

(如果您绝对必须对 initramfs-tools 的标准脚本进行修改,您可能希望阅读其手册页dpkg-divert并使用它来保护您的更改。)

相关内容