현재 저는 다소 동적인 조립식 건물을 만들려고 노력하고 있습니다. 이는 사용자 정의 템플릿/질문을 만들고 답변을 기반으로 특정 "di" 옵션을 설정한다는 의미입니다. 내 환경은 debian-installer를 사용하는 우분투/데비안입니다.
이는 다음 명령을 사용하여 실행됩니다.
d-i preseed/early_command string wget -qO preseed_early_command.sh http://myurl/preseed/server/bionic/preseed_early_command.sh && sh preseed_early_command.sh
언어 선택에 따라 설정별 옵션을 사용해 보았는데 debconf-set
인식되는 것처럼 보이지만 early_command
완료 후에도 여전히 언어 대화 상자가 표시됩니다(모든 설정 값이 질문에 따라 올바르게 설정되었음에도 불구하고).
if [ "$(debconf-get language-select/select)" = "German" ]; then
debconf-set debian-installer/language "de"
debconf-set debian-installer/country "DE"
debconf-set debian-installer/locale "de_DE.UTF-8"
debconf-set console-setup/ask_detect false
debconf-set keyboard-configuration/layoutcode "de"
debconf-set keyboard-configuration/variantcode "nodeadkeys"
fi
설정되었음에도 불구하고 설치 프로그램이 나에게 다시 질문하지 않도록 하려면 어떻게 해야 합니까? 원하는 대로 사전 설정을 조작할 수 있나요?
머신 유형 선택(예: 데스크탑/헤드리스)에 따라 taskel/pkgsel 옵션을 설정하고 싶습니다. 하지만 직접 실행하려고 하거나 사용하려고 하면 항상 오류와 함께 실패합니다.debconf-set
if [ "$(debconf-get machine-type/select)" = "Ubuntu Desktop" ]; then
debconf-set tasksel/first multiselect ubuntu-desktop
debconf-set pkgsel/include openssh-server build-essential nano vim hardinfo htop remmina bash-completion dkms dialog
elif [ "$(debconf-get machine-type/select)" = "Ubuntu Headless" ]; then
debconf-set tasksel/first multiselect standard
debconf-set pkgsel/include "openssh-server nano vim htop bash-completion ntp"
fi
"pkgsel/tasksel" 옵션을 어떻게 실행/평가하나요? busybox에서 예외가 발생하므로 이 단계에서는 Tasksel을 사용할 수 없는 것 같습니다 not found
.
답변1
이 답변은 두 가지 질문 중 첫 번째 질문만 다루려고 시도합니다.
debian-installer에는 소스 코드인 debconf-set
짧은 쉘 스크립트가 있습니다.구성 모듈(3)그리고 전화를 걸어보세요 db_set $1 $2
. 더 유용한 명령은 debconf-set-selections
다음과 같이 이해될 수 있습니다.debconf-설정-선택(1)는 사전 설정 파일과 동일한 형식의 파일을 인수로 사용합니다. 아마도 표준 입력에서도 데이터를 받아들여야 할 것 같지만, 데비안 설치 프로그램 환경에서 성공적으로 작동하지 못했습니다.
예를 들어:
VALUES=`mktemp`
cat > "${VALUES}" << END_OF_DEBCONF
d-i time/zone string Antarctica/Troll
END_OF_DEBCONF
debconf-get-selections "${VALUES}"
반품. 그냥 preseed/run
스크립트를 사용하는 것이 preseed/early_command
.