B.3. 创建预置文件

预置文件是 debconf-set-selections 命令使用的格式。通常预置文件中每一行的格式为:

  1. <owner> <question name> <question type> <value>

The file should start with #_preseed_V1

编写预置文件的时候要留意几条规则。

  • 在类型和值之间只有一个空格或者 tab:任何额外的空格将被解释为值的一部分。

  • 一行可以通过行尾的反斜杠(“\”)连接符分成多行。分割一行比较妥当的地方是在问题后面;在类型和值之间分割则是糟糕做法。被分割的行连接时会把行首和行尾的空格缩减为一个空格,再组成单独一行。

  • 只在安装程序自己使用的 debconf 变量(模板),owner 应该设置为 “d-i”; 要在安装后的系统里面预置变量,应该使用名称中包含对应 debconf 模板的软件包。只有那些 owner 为非 “d-i” 的变量将被保存到安装后系统的 debconf 数据库里面。

  • 大多数问题需要使用有效的英文预置值,而不是翻译过的值。但有些问题(例如 partman),需要使用翻译过的值。

  • 有些问题在安装过程中显示值的代码而不是英文文本。

  • Start with #_preseed_V1

建立预置文件最简单的方法是使用例子文件作为工作的基础,它位于 第 B.4 节 “预置文件的内容(buster)”

另一种方法是手动安装,重启后,使用 debconf-utils 软件包里面的 debconf-get-selections 导出 debconf 数据库和安装程序的 cdebconf 数据库到一个文件:

  1. $ echo "#_preseed_V1" > file
  2. $ debconf-get-selections --installer >> file
  3. $ debconf-get-selections >> file

但用此方法产生的文件,有些项无法预置。对于大多数用户,示例文件是一个较佳的开始。

[注意]注意

这种方法在安装的最后,安装程序的 cdebconf 数据库被保存到新安装系统的 /var/log/installer/cdebconf 文件。由于数据库里面常还有敏感的信息,默认只为 root 可读。

如果您清除 installation-report 软件包,/var/log/installer 目录及其中的文件将从您的系统中删除。

为了检测问题答案可用的值,您可以在安装进行中使用 nano 检查 /var/lib/cdebconf 下的文件。templates.dat 是原始的模板,questions.dat 是当前变量设置的值。

为了在安装之前测试您的预置文件是否有效,您可以使用 debconf-set-selections -c preseed.cfg 命令。