最近我继承了一个实验室,但不幸的是,负责设置的人已经离开了该组织。我在理解 pxe 安装流程时发现在预置配置中初始化 debconf 变量时遇到麻烦。
预置配置的一部分:
### Account setup
d-i passwd/user-fullname string TEST User
d-i passwd/username string test
d-i passwd/user-password-crypted password xxxxxxxxxxxxxxxxxxxxxxxxxxx
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
### Finishing up the installation
d-i finish-install/reboot_in_progress note
### Custom stuff, update pre-late.sh if creating new variables
base-config test/http/server string
base-config test/ubuntu/release string 16.04
base-config test/nfs/server string 10.44.55.5
base-config test/nfs/config string /export/vol01/ubuntu/config
base-config test/nis/domain string ccd
base-config test/nis/server string 10.44.55.100 10.44.55.101
#### Advanced options
d-i preseed/late_command string wget http://10.44.55.5/ubuntu/config/pre-late.sh -O /tmp/pre-late.sh; sh -x /tmp/pre-late.sh
d-i preseed/run string classes.sh
上面提到的 debconf 变量 test/ubuntu/release、test/nfs/server、test/nfs/config、test/nfs/domain 和 test/nis/server 正在被提取,并在 pre_late-sh 中设置环境变量,如下所示在上面的 preseed 配置中使用 preseed/late_command 执行的脚本。
#!/bin/sh
#Source debconf library
. /usr/share/debconf/confmodule
db_get test/ubuntu/release
export RELEASE="$RET"
db_get test/nfs/server
export NFS_SERVER="$RET"
db_get test/nfs/config
export NFS_CONFIG="$RET"
db_get test/nis/domain
export NIS_DOMAIN="$RET"
db_get test/nis/server
export NIS_SERVER="$RET"
我尝试用谷歌搜索很多关于初始化 debconf 变量的方法,但无法理解它们在这里使用基本配置初始化的方式。有人可以帮助我理解这是如何完成的吗?
答案1
预置将定义的变量存储在适当的debconf
数据库中;安装程序的变量用于d-i
- 拥有的变量,系统的 (in /var/cache/debconf
) 的变量用于其他变量。所以所有base-config
变量最终都存储在系统debconf
数据库中。
db_get
,由 提供/usr/share/debconf/confmodule
,从数据库中检索指定变量的值debconf
,并将其存储在RET
变量中。所以
db_get test/ubuntu/release
export RELEASE="$RET"
检索 的值test/ubuntu/release
,并将其存储在环境变量 中RELEASE
。
看Debian wiki 上的预置页面有关预置的详细信息,以及debconf
Debian wiki 上的页面的详细信息debconf
。