'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 

如果你的脚本不依赖于其他脚本相同的目录里面,可以只需复制样板代码。