Skip to the content.

9. Customizing contents


本章讨论了实时系统内容的微调定制,而不仅仅是选择要包含哪些包。Includes允许您在实时系统映像中添加或替换任意文件,hook允许您在构建的不同阶段和引导时执行任意命令,preseeding允许您在安装包时通过提供debconf问题的答案来配置包。

9.1 Includes

虽然理想情况下,live系统将包含完全由未修改包提供的文件,但有时通过文件提供或修改某些内容也很方便。使用includes,可以在live系统映像中添加(或替换)任意文件。live-build提供了两种使用它们的机制:

请参阅Terms了解有关“Live”和“binary”图像之间区别的更多信息。

9.1.1 Live/chroot local includes

Chroot本地包含可用于添加或替换chroot/Live文件系统中的文件,以便它们可以在Live系统中使用。典型的用法是填充Live系统用来创建Live用户的主目录的骨架用户目录(/etc/skel)。另一种是提供可以在图像中简单地添加或替换而无需处理的配置文件;如果需要处理,请参阅Chroot local hooks.

要包含文件,只需将它们添加到config/includes.chroot目录。该目录对应于live系统的根目录/。例如,要在live系统中添加一个文件/var/www/index.html,使用:

$ mkdir -p config/includes.chroot/var/www
$ cp /path/to/my/index.html config/includes.chroot/var/www

然后,您的配置将具有以下布局:

-- config
    [...]
     |-- includes.chroot
     |   `-- var
     |       `-- www
     |           `-- index.html
    [...]

安装包后安装chroot local includes,会覆盖包中安装的文件。

9.1.2 Binary local includes

要在介质文件系统中包含文档或视频等材料,以便在插入介质时可以立即访问,而无需启动Live系统,您可以使用binary local includes。这与chroot本地包含的工作方式类似。例如,假设文件~/video_demo.*是由HTML索引页描述和链接到的现场系统演示视频。只需将材料复制到 config/includes.binary/ 如下:

$ cp ~/video_demo.* config/includes.binary/

这些文件现在将出现在live媒体的根目录中。

9.2 Hooks

Hooks允许在构建的chroot和binary阶段运行命令,以便自定义映像。根据你是构建一个活动镜像还是一个常规的系统镜像,你必须把钩子分别放在config/hooks/live或config/hooks/normal中。这些通常被称为局部钩子,因为它们是在构建环境中执行的。

还有一些boot-time hooks,允许您在映像已经构建完成后,在启动过程中运行命令。

9.2.1 Chroot local hooks

要在chroot阶段运行命令,需要创建一个带有.hook.chroot后缀的钩子脚本,其中包含config/hooks/live或config/hooks/normal目录中的命令。在应用了chroot配置的其余部分之后,hook将在chroot中运行,因此请记住确保您的配置包含hook运行所需的所有包和文件。请参阅示例chroot钩子脚本,了解/usr/share/doc/live-build/examples/hooks中提供的各种常见的chroot定制任务,您可以复制或符号链接以在自己的配置中使用它们。

9.2.2 Binary local hooks

要在二进制阶段运行命令,创建一个带有.hook.binary后缀的钩子脚本,其中包含config/hooks/live或config/hooks/normal目录中的命令。该钩子将在所有其他二进制命令运行之后运行,但在binary_checksums(最后一个二进制命令)之前运行。钩子中的命令不会在chroot中运行,所以注意不要修改构建树之外的任何文件,否则可能会损坏构建系统!查看示例二进制钩子脚本,了解/usr/share/doc/live-build/examples/hooks中提供的各种常见二进制定制任务,您可以复制或符号链接到自己的配置中使用它们。

9.2.3 Boot-time hooks

要在引导时执行命令,您可以提供live-config钩子,如其手册页的”Customization”部分所述。检查live-config在/lib/live/config/中提供的钩子,注意序号。然后提供带有适当序列号前缀的自己的钩子,或者作为config/includes.chroot/lib/live/config/中的chroot local include,或者作为Installing modified or third-party packages中讨论的定制包。

9.3 Preseeding Debconf questions

以.cfg结尾的config/preseed/目录中的文件,后面跟着阶段(.chroot或.binary),被认为是debconf preseed文件,并在相应阶段使用debconf-set-selections安装。

有关debconf的更多信息,请参见debconf包中的debconf(7)。