更新initramfs是内核或关键驱动变更后的强制步骤,否则重启可能卡在initramfs;Debian/Ubuntu用sudo update-initramfs -u更新当前内核镜像,读取/etc/initramfs-tools配置,重打包驱动、加密模块等生成新initrd.img并覆盖/boot下旧文件。

更新 initramfs 不是“可选操作”,而是内核或关键驱动变更后的强制步骤;跳过它,系统很可能在下次重启时卡在 initramfs 加载失败或找不到根文件系统。
Debian/Ubuntu 系统用 update-initramfs -u 更新当前内核镜像
这个命令只作用于当前正在运行的内核(uname -r 输出的版本),它会读取 /etc/initramfs-tools/ 下的配置和钩子脚本,重新打包驱动、加密模块、LVM/RAID 工具等进新的 initrd.img-$(uname -r),并覆盖 /boot/ 下同名旧文件。
- 必须加
sudo:因为要写入/boot/,普通用户无权限 - 不加
-k参数时,-u默认只处理当前内核;如果你刚装了新内核但还没重启,它不会自动更新那个新内核的 initramfs - 如果系统有多个内核共存,且你希望全部更新,得逐个指定:
sudo update-initramfs -u -k all或对每个版本跑一次sudo update-initramfs -u -k 5.15.0-102-generic - 常见错误:
update-initramfs: Generating /boot/initrd.img-... update-initramfs: failed for /boot/initrd.img-... with 1.—— 通常是某个 hook 脚本语法错误,或/etc/initramfs-tools/conf.d/下某配置文件损坏,需检查最近手动改过的文件
Arch Linux 用 mkinitcpio -P 重建所有已安装内核的 initramfs
Arch 不区分“当前运行”和“已安装”内核,mkinitcpio -P 会扫描 /lib/modules/ 下所有内核目录,并为每个生成对应的 initramfs-<version>.img</version>。它依赖 /etc/mkinitcpio.conf 中的 HOOKS 和 MODULES 设置。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 执行前务必确认
/etc/mkinitcpio.conf语法正确:一行末尾多一个引号、注释符错位、空格混用都会导致unexpected EOF报错 - 如果系统用了 LUKS + LVM,确保
encrypt和lvm2都在HOOKS中,且顺序为base udev encrypt lvm2 filesystems - chroot 进入修复环境后,若提示
command not found: mkinitcpio,说明mkinitcpio包未安装或未挂载/usr分区 —— Arch 的 initramfs 构建依赖完整/usr树 - 不要在 live 环境中直接运行
mkinitcpio -P,除非你已arch-chroot /mnt并确认/boot和/etc/fstab正确挂载
RHEL/CentOS/Rocky 8+ 用 dracut -f 强制重生成默认 initramfs
RHEL 系列默认使用 dracut,它的行为比 update-initramfs 更“激进”:不依赖当前运行内核,而是根据 /lib/modules/ 下最新可用内核版本生成镜像,并默认覆盖 /boot/initramfs-$(uname -r).img。加 -f 是强制刷新,跳过时间戳比对。
-
dracut -f不会自动处理旧内核镜像,残留的initramfs-*.img文件需手动清理,否则grub2-mkconfig可能生成冗余菜单项 - 若系统启用了 Secure Boot,
dracut生成的 initramfs 必须被mokutil签名,否则启动时被拒绝加载 - 调试时可加
--force和--regenerate-all,但生产环境慎用 —— 它可能把调试用的debughook 打包进去,增大镜像体积并拖慢启动 - 常见报错:
dracut: FATAL: No kernel modules found for kernel '4.18.0-372.19.1.el8_6.x86_64',说明该内核的/lib/modules/4.18.0-372...目录为空或权限不对,需检查kernel-core包是否完整安装
initramfs 不是“静态快照”,它必须和内核模块、磁盘布局、加密策略严格同步;哪怕只是升级了一个 NVMe 驱动或改了 LUKS 密码派生参数,都得重跑对应命令 —— 否则重启就是黑屏或 emergency shell。

















