![如何判断更新是否需要 initramfs 更新?](https://linux22.com/image/206961/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E6%9B%B4%E6%96%B0%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%20initramfs%20%E6%9B%B4%E6%96%B0%EF%BC%9F.png)
有时,在运行时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
并使用它来保护您的更改。)