initramfs (Dracut) 命令速查
从 Ubuntu 26.04 起,initramfs 的生成工具由 initramfs-tools 切换为 Dracut。日常维护命令也随之变化:原先的 update-initramfs、lsinitramfs 应改用 dracut、lsinitrd,配置目录改为 /etc/dracut.conf.d/。
Note
在升级到 26.04 的旧系统上可能仍保留 initramfs-tools,此时旧命令依然可用。新装系统默认使用 Dracut。可用 which dracut / dracut --version 确认。
命令对照表
| 旧(initramfs-tools) | 新(Dracut) | 说明 |
|---|---|---|
sudo update-initramfs -u | sudo dracut -f | 为当前内核重新生成 initramfs(-f 覆盖已存在文件) |
sudo update-initramfs -u -k all | sudo dracut -f --regenerate-all | 为所有已安装内核重新生成 |
sudo update-initramfs -u -k $(uname -r) | sudo dracut -f --kver $(uname -r) | 为指定内核版本生成 |
lsinitramfs /boot/initrd.img-$(uname -r) | lsinitrd | 列出 initramfs 中包含的文件 |
lsinitramfs … | grep xxx | lsinitrd | grep xxx | 检查某模块/文件是否被打包 |
/etc/initramfs-tools/ | /etc/dracut.conf.d/ | 配置目录 |
/etc/initramfs-tools/modules | force_drivers+=" 模块名 "(写入 conf.d) | 强制加入内核模块 |
常用操作
# 为当前内核重新生成 initramfs
sudo dracut -f
# 为所有已安装内核重新生成(更新驱动、加密、resume 等配置后常用)
sudo dracut -f --regenerate-all
# 为指定内核版本生成到指定路径
sudo dracut -f /boot/initrd.img-7.0.0-10-generic 7.0.0-10-generic查看 initramfs 内容
# 查看当前内核 initramfs 的内容(默认即为当前内核)
lsinitrd
# 查看指定文件
lsinitrd /boot/initrd.img-$(uname -r)
# 确认某个内核模块是否已打包(如 resume、加密、网卡驱动)
lsinitrd | grep -i resume
lsinitrd | grep -i nvme配置 Dracut
Dracut 的配置位于 /etc/dracut.conf.d/ 下的 *.conf 文件,修改后需重新生成 initramfs 才会生效。
# 示例:强制把某些驱动打包进 initramfs
echo 'force_drivers+=" nvme nvme_core "' | sudo tee /etc/dracut.conf.d/90-nvme.conf
sudo dracut -f --regenerate-all常用配置项:
# /etc/dracut.conf.d/zz-local.conf
# 仅打包当前主机所需的模块(体积更小,默认行为)
hostonly="yes"
# 强制加入指定内核驱动
force_drivers+=" 模块名 "
# 额外加入指定 dracut 模块(如 crypt、lvm、network)
add_dracutmodules+=" crypt lvm "
# 在 initramfs 中额外包含某些可执行文件
install_items+=" /usr/bin/vi "Tip
修改 resume(休眠)、磁盘加密、根文件系统所在控制器驱动后,记得运行 sudo dracut -f --regenerate-all,否则可能导致系统无法启动。
相关文章
Last updated on