mkinitcpio Hooks

配置文件位于 graceful-linux-tools 项目中 config/rootfs/etc/mkinitcpio.conf.d/graceful-linux.conf

hooks

Hook分类

构建Hook

构建Hook是指在执行 mkinitcpio 时候要执行的脚本,其脚本内部必须包含两个函数:buildhelpbuild 函数中描述了哪些 内核模块、文件、二进制文件要被安装到 initrmfs 中,help函数用来输出 build 中要做的信息。构建Hook脚本被放置在/etc/initcpio/install(用户自定义)和/usr/lib/initcpio/install(系统默认)两个目录中。

运行时Hook

梅核运行时Hook都有一个同名的构建Hook与之对应,与之对应的构建Hook将会调用add_runscript函数将运行时Hook添加到镜像中。这些运行时Hook一般被busybox等提供,并且按照HOOKS设置的顺序进行执行。运行时Hook一般包含以下几个函数:

  • run_earlyhook:此名称的函数将在挂载API文件系统和解析内核命令行之后运行。

  • run_hook:此函数在run_earlyhook 运行之后不久运行

  • run_latehook:此名称的函数在根设备挂载后运行

  • run_cleanuphook:此函数尽可能晚的执行,且于配置文件中HOOKS数组列出的顺序相反的方向运行。

运行时Hook放置路径:/usr/lib/initcpio/hooks//etc/initcpio/hooks/

默认Hook

busybox init systemd init build Hook Runtime Hook(busybox init only)
base 可选
udev systemd
usr systemd
resume systemd
btrfs -
autodetect autodetect
modconf modconf
kms kms
block block
net 未实现
dmraid ?
mdadm_udev mdadm_udev
keyboard keyboard
keymap sd-vconsole
consolefont sd-vconsole
encrypt sd-encrypt
lvm2 lvm2
filesystems filesystems
fsck fsck