ubuntu - `hooker script` 中的 `scripts/init-top/all_generic_ide` 实际上是什么?

标签 ubuntu initrd

我在学习init在 Ubuntu 的 ramdisk 中。
scripts/init-bottom/udev我看到了这段代码片段:

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 阅读了 wiki:initramfs-tools

我完全不知道它的目的是什么。我想我可以意识到它的流程,但就是不知道它会做什么?

最佳答案

此样板代码仅打印 PREREQ 的值当使用参数 prereqs 调用脚本时然后以零退出。

initramfs-tools 的手册页在 HOOK 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 中的脚本将在启动时以任意顺序执行(如果它们没有指定 prereqs)。如果这些脚本相互依赖,则脚本必须定义 prereqs 以确保正确的执行顺序。

例如,一个脚本可能会挂载/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

如果您的脚本不依赖于同一目录中的其他脚本,则只需复制样板代码即可。

关于ubuntu - `hooker script` 中的 `scripts/init-top/all_generic_ide` 实际上是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007747/

相关文章:

linux - 有没有一种简单的方法可以在 Ubuntu 13.10 上连接 Moto X?

video - OPENCV,无法打开类 VideoWriter

linux-kernel - ARM 有时会卡在 "Starting kernel image ..."

linux - 在 Debian 安装完成之前使用 preseed 运行脚本

linux - 我如何获得由 grub2 以与发行版无关的方式加载为根设备的 cpio 归档文件制成的 initrd?

java - 在 Ubuntu10.04 Linux 中启动 Jade

php - 我们可以在谷歌云 ubuntu vm 实例中使用 xampp 作为在线服务器吗

c - time.h 的位置 -> localtime() 在 Ubuntu 中的实现?

linux - ARM Linux 引导的一些细节

android - Android 的 initrd.img 中包含什么内容?