补充说明
mkinitcpio 是 Arch Linux 使用的 initramfs(早期用户空间)生成器。它根据配置文件收集内核模块、固件、二进制工具和钩子脚本,打包成一个压缩的 cpio 镜像,供内核在挂载真正的根文件系统之前使用。
主配置文件为 /etc/mkinitcpio.conf,其中 MODULES、BINARIES、FILES、HOOKS、COMPRESSION 决定镜像内容。HOOKS 的顺序至关重要:base、udev、autodetect、block、filesystems 是基础,加密、LVM、RAID 等钩子必须放在 filesystems 之前。
预设文件位于 /etc/mkinitcpio.d/,例如 linux.preset,定义内核版本、配置文件和输出路径。内核或相关包升级时,pacman 钩子会自动调用 mkinitcpio -P 重新生成;手工修改配置后也应重新生成,否则改动不会生效。
语法
mkinitcpio [选项]
选项
-c 文件:使用备用配置文件-g 路径:指定生成的镜像路径-k 版本:指定内核版本-p 预设:构建/etc/mkinitcpio.d中的指定预设-P:处理全部预设-S 钩子:跳过指定钩子,逗号分隔-A 钩子:临时追加钩子,逗号分隔-I 路径:向镜像添加文件或目录-D 目录:指定钩子所在目录-L:列出所有可用钩子-M:显示自动探测到的模块-U 路径:构建统一内核镜像(UKI)-z 程序:指定压缩程序,如zstd、xz、lz4、cat-n:关闭彩色输出-v:输出详细信息
实例
# 按全部预设重新生成(升级内核后常用)
sudo mkinitcpio -P
# 只重建 linux 预设
sudo mkinitcpio -p linux
# 临时跳过 fsck 钩子,输出到测试文件
sudo mkinitcpio -S fsck -g /boot/initramfs-test.img
# 查看可用钩子及说明
mkinitcpio -L
# 查看某个钩子的帮助
mkinitcpio -H encrypt
配置文件片段
# /etc/mkinitcpio.conf
MODULES=(btrfs)
BINARIES=()
FILES=()
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck)
COMPRESSION="zstd"