`scripts/init-top/all_generic_ide` 中的`hooker script` 到底是什么?
What is `hooker script` actually in `scripts/init-top/all_generic_ide`?
我正在 Ubuntu 的 ramdisk 中学习 init
。
在 scripts/init-bottom/udev
中,我看到了以下代码片段:
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case 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 的 wiki:initramfs-tools
我完全不知道它的目的是什么。我想我可以理解它的流程,但就是不知道它会做什么?
此样板代码仅在使用参数 prereqs
调用脚本时打印 PREREQ
的值,然后以零退出。
initramfs-tools 的手册页在 HOOK SCRIPTS -> Boot scripts 中说:
No guarantees are made as to the order in which the different scripts are executed unless the prereqs are setup in the script.
因此 scripts/init-bottom
中的脚本将在启动时以任意顺序执行(如果它们没有指定先决条件)。如果这些脚本相互依赖,则脚本必须定义先决条件以确保正确的执行顺序。
例如,一个脚本可能挂载 /home(称为 mount_home
),一个脚本创建新用户帐户(称为 create_users
)。然后第二个脚本需要通过更改样板代码来声明对第一个脚本的依赖(调用 create_user prereqs
应该 return mount_home
):
PREREQ="mount_home"
prereqs()
{
echo "$PREREQ"
}
case in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
如果您的脚本不依赖于同一目录中的其他脚本,您可以只复制样板代码。
我正在 Ubuntu 的 ramdisk 中学习 init
。
在 scripts/init-bottom/udev
中,我看到了以下代码片段:
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case 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 的 wiki:initramfs-tools
我完全不知道它的目的是什么。我想我可以理解它的流程,但就是不知道它会做什么?
此样板代码仅在使用参数 prereqs
调用脚本时打印 PREREQ
的值,然后以零退出。
initramfs-tools 的手册页在 HOOK SCRIPTS -> Boot scripts 中说:
No guarantees are made as to the order in which the different scripts are executed unless the prereqs are setup in the script.
因此 scripts/init-bottom
中的脚本将在启动时以任意顺序执行(如果它们没有指定先决条件)。如果这些脚本相互依赖,则脚本必须定义先决条件以确保正确的执行顺序。
例如,一个脚本可能挂载 /home(称为 mount_home
),一个脚本创建新用户帐户(称为 create_users
)。然后第二个脚本需要通过更改样板代码来声明对第一个脚本的依赖(调用 create_user prereqs
应该 return mount_home
):
PREREQ="mount_home"
prereqs()
{
echo "$PREREQ"
}
case in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
如果您的脚本不依赖于同一目录中的其他脚本,您可以只复制样板代码。