데비안 무인 미리 설정 설치 중에 사용자에게 메시지 표시

데비안 무인 미리 설정 설치 중에 사용자에게 메시지 표시

late_command무인 설치 단계 에서 쉘 스크립트를 실행하고 있습니다.

d-i preseed/late_command string in-target /bin/sh -c './execute-script.sh'

late_command 단계에 도달하면 UI(파란색 배경, 회색 창)에 "미리 설정 실행 중..." 메시지가 표시됩니다.

여기에 이미지 설명을 입력하세요

의 활동에 따라 다른 메시지를 생생하게 표시할 수 있는 방법이 있는지 궁금합니다 execute-script.sh.

나는 에코와 함께 일반 STDOUT을 사용하면 문제가 해결될 것이라고 순진하게 생각했지만 더 복잡해 보였습니다.

지금까지 검색을 통해 의 잠재적인 용도에 대해 관심을 갖게 되었지만 debconf어떤 방법도 찾을 수 없었습니다.

@Andrew 답변에 따라 내 스크립트의 현재 버전이 재구성되었습니다.

#!/bin/sh

. /usr/share/debconf/confmodule
. "./variables.sh"

logFile="/target${INSTALLATION_LOG_LOCATION}"
templatePath="/target/tmp/deployment_progress_tracker.templates"

cat > "${templatePath}" << 'EOF'
Template: deployment_progress_tracker/progress/fallback
Type: text
Description: ${STEP}...
EOF

debconf-loadtemplate deployment_progress_tracker "${templatePath}"
db_progress START 0 1 deployment_progress_tracker/progress

watchLogs () {
  deploymentDone=false
  while ! $deploymentDone
  do
    if [ -f "${logFile}" ]; then
      step=$(grep -E -o -a -h "Progress-step: .*" "${logFile}" | tail -1 | sed 's/Progress-step: //')
      if [ -z "${step##*$DEPLOYMENT_FINISHED*}" ]; then
        deploymentDone=true
      elif [ -n "${step}" ]; then
        db_subst deployment_progress_tracker/progress/fallback STEP "${step}"
        db_progress INFO deployment_progress_tracker/progress/fallback
      fi
    fi
    sleep 3
  done
}



(
  watchLogs;
  rm -f "${templatePath}";
  db_progress SET 1;
  sleep 1;
  db_progress STOP;
  db_unregister deployment_progress_tracker/progress;
) &

이전 스크립트의 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

설치 프로그램 메뉴로 돌아갑니다(Finish를 선택하면 미리 설정한 부분이 실제로 다시 실행되고 실패합니다. Abort를 선택하면 ISO 마운트가 해제되지 않고 재부팅되지 않습니다. 어쨌거나 마운트 해제와 재부팅이 모두 자동으로 수행되도록 하려고 합니다).

여기에 이미지 설명을 입력하세요

답변1

당신은 꽤 제한적일 것이며 debconf노력할 가치가 없을 수도 있습니다. 나는 당신이 스크립트 실행으로 그것을 전혀 할 수 없을 것이라고 생각합니다 in-target. 나는 Debian Buster에서 다음 미리 설정 조각과 스크립트를 사용하여 성공했습니다. Running Preseed...세 번 표시되는 텍스트가 변경됩니다 . 보여줄 것이다

  1. Step A
  2. Step B
  3. Running c...("대체" 옵션)

스크립트를 다운로드하고 실행하기 위한 부분적인 미리 설정 파일입니다.

d-i preseed/late_command string \
  wget -P /run http://REDACTED/my_script.sh ; \
  chmod 755 /run/my_script.sh ; \
  /run/my_script.sh

.my_script.sh

#!/bin/sh

. /usr/share/debconf/confmodule

set -e

# create a templates file with the strings for debconf to display
cat > /run/my_script.templates << 'EOF'
Template: my_script/progress/a
Type: text
Description: Step A

Template: my_script/progress/b
Type: text
Description: Step B

Template: my_script/progress/fallback
Type: text
Description: Running ${STEP}...
EOF

# use the utility to load the generated template file
debconf-loadtemplate my_script /run/my_script.templates

# pause just to show "Running Preseed..."
sleep 2

# foreach 3 steps tell debconf which template string to display
for step in a b c; do

    if ! db_progress INFO my_script/progress/$step; then
        db_subst my_script/progress/fallback STEP "$step"
        db_progress INFO my_script/progress/fallback
    fi

    case $step in
        "a")
            # run commands or scripts in the installer environment (this uses the sleep command in the installer environment)
            sleep 10
            ;;
        "b")
            # run commands or scripts in the chroot environment (this uses the sleep command from the installed system)
            in-target sleep 10
            ;;
        "c")
            # just another sample step
            sleep 10
            ;;
    esac
done

생성된 스크립트와 템플릿 파일은 finish-install( debian-installer패키지)를 기반으로 합니다.스크립트그리고템플릿.

관련 정보