mkinitcpio详解

mkinitcpio详解

简介

initramfs映像是一个SVR4 CPIO归档文件,通过find和bsdcpio命令生成,可选择使用内核理解的压缩方案进行压缩
mkinitcpio是创建initramfs的bash脚本

每次升级内核,mkinitcpio都会默认创建两个内存盘镜像:默认镜像/boot/initramfs-linux.img和fallback镜像/boot/initramfs-linux-fallback.img。fallback镜像和默认镜像只有一个区别,就是创建时跳过了autodetect钩子扩展,因而它包含更多的内核模块。autodetect扩展会探测硬件信息,针对硬件向镜像添加需要的模块,因此缩小了镜像。

简单使用

使用默认内核linux生成镜像:

mkinitcpio -p linux

-p选项定义了要使用的预配置(preset);多数内核软件包都会提供一套mkinitcpio预配置文件,放在/etc/mkinitcpio.d目录(比如,linux内核是/etc/mkinitcpio.d/linux.preset)。预配置文件中包含内存盘镜像的基本配置。

生成自定义initcpio

使用其他配置文件创建镜像,例如以/etc/mkinitcpio-custom.conf配置的内容生成镜像/boot/linux-custom.img

mkinitcpio -c /etc/mkinitcpio-custom.conf -g /boot/linux-custom.img

使用指定内核创建镜像,可在/usr/lib/modules目录下可查看支持的内核

mkinitcpio -g /boot/linux-custom2.img -k 4.19.69-1-MANJARO

mkinitcpio用法:

mkinitcpio [选项]
 选项:
   -A,--addhooks <hooks> 	将指定的钩子(以逗号分隔)添加到映像
   -c,--config <config> 	使用备用配置文件。 (默认值:/etc/mkinitcpio.conf)
   -g,--generate <路径> 	生成cpio映像并写入指定的路径
   -H,--hookhelp <hookname> 显示给定钩子和退出的帮助
   -h,--help 				显示此消息并退出
   -k,--kernel <kernelver> 使用指定的内核版本(默认值:4.19.69-1-MANJARO)
   -L,--listhooks 			列出所有可用的钩子
   -M,--automods 			通过自动检测找到的显示模块
   -n,--nocolor 			禁用彩色输出消息
   -p,--preset <文件> 		从/etc/mkinitcpio.d构建指定的预设
   -P,--allpresets 		处理/etc/mkinitcpio.d中的所有预设文件
   -r,--moduleroot <dir> 	模块的根目录(默认值:/)
   -S,--skiphooks <hooks> 	在构建过程中跳过用逗号分隔的指定钩子
   -s,--save 				保存构建目录。 (默认值:否)
   -d,--genicir <dir> 		将生成的图像写入<dir>
   -t,--builddir <dir> 	使用DIR作为临时构建目录
   -V,--version 			显示版本信息并退出
   -v,--verbose 			详细输出(默认值:no)
   -z,--compress <程序> 	在映像上使用备用压缩器