Debian

無法理解在預置配置中初始化 debconf 變數的方式

  • August 27, 2020

最近我繼承了一個實驗室,但不幸的是,設置的人已經離開了組織。在預置配置中初始化 debconf 變數時,我在理解 pxe 安裝流程時遇到了麻煩。

預置配置的一部分:

### 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"

我試圖用Google搜尋很多關於初始化 debconf 變數的方式,但無法理解它們在此處使用 base-config 初始化的方式。有人可以幫助我了解這是如何完成的嗎?

預置將定義的變數儲存在適當的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有關debconf.

引用自:https://unix.stackexchange.com/questions/606581