'scripts/init-top/all_generic_ide`中的hooker脚本实际上是什么?
问题描述:
我在Ubuntu的虚拟硬盘上学习init
。 在scripts/init-bottom/udev
我看到这个代码片段:'scripts/init-top/all_generic_ide`中的hooker脚本实际上是什么?
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
它出现在scripts/**
脚本几乎每一个脚本(如scripts/init-top/all_generic_ide,scripts/local-bottom/ntfs_3g,scripts/local-premount/fixrtc
,等等)。虽然它们可能有一些细微的差异,但其中大部分只是在身体代码的顶部具有相同的片段。
我从Ubuntu的阅读维基:initramfs-tools
我完全不知道它的目的。我想我可以实现它的流程,但是不知道它会做什么?
答
当使用参数prereqs
调用脚本,然后以零退出时,此样板代码仅输出PREREQ
的值。
的initramfs-tools手册页说,在钩子脚本 - >启动脚本:
没有任何保证,以作为对于不同的脚本,除非prereqs执行顺序是在脚本的设置。
因此,scripts/init-bottom
中的脚本将在引导时以任意顺序执行(如果它们未指定prereq)。如果这些脚本相互依赖,则脚本必须定义prereq以确保正确的执行顺序。
例如,一个脚本可能会挂载/ home(称为mount_home
),一个脚本会创建新的用户帐户(称为create_users
)。然后第二个脚本需要通过改变样板代码申报的第一个(调用create_user prereqs
应该返回mount_home
)的依赖性:
PREREQ="mount_home"
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
如果你的脚本不依赖于其他脚本相同的目录里面,可以只需复制样板代码。