Вовремя поздняя_команда
шаг автоматической установки, я запускаю сценарий оболочки:
d-i preseed/late_command string in-target /bin/sh -c './execute-script.sh'
При достижении шага late_command в пользовательском интерфейсе (синий фон, серое окно) отображается сообщение «Выполняется preseed...»:
Мне интересно, есть ли способ живого отображения других сообщений на основе того, что выполнить-script.sh
делается.
Я наивно думал, что использование обычного STDOUT с эхом поможет, но это кажется более сложным.
Мои поиски до сих пор привлекли мое внимание к потенциальному использованию debconf
но я не смог найти никакого способа.
Текущая версия моего сценария изменена в соответствии с ответом @Andrew:
#!/бин/ш
. /usr/доля/debconf/confmodule
. "./переменные.ш"
logFile="/target${INSTALLATION_LOG_LOCATION}"
templatePath="/target/tmp/deployment_progress_tracker.templates"
кошка > "${templatePath}" << 'EOF'
Шаблон: deployment_progress_tracker/progress/fallback
Тип: текст
Описание: ${ШАГ}...
EOF
debconf-loadtemplate deploy_progress_tracker "${templatePath}"
db_progress НАЧАЛО 0 1 deployment_progress_tracker/прогресс
журналы просмотра () {
развертывание выполнено = ложь
пока ! $deploymentDone
делать
если [-f "${logFile}" ]; тогда
step=$(grep -E -o -a -h "Progress-step: .*" "${logFile}" | tail -1 | sed 's/Progress-step: //')
если [ -z "${шаг##*$DEPLOYMENT_FINISHED*}" ]; тогда
развертывание выполнено = истина
Элиф [-n "${шаг}"]; тогда
db_subst deploy_progress_tracker/progress/fallback ШАГ "${шаг}"
db_progress INFO deployment_progress_tracker/progress/fallback
фи
фи
спать 3
сделано
}
(
журналы просмотра;
rm -f "${templatePath}";
db_progress НАБОР 1;
спать 1;
db_progress СТОП;
db_unregister deployment_progress_tracker/progress;
) &
Предыдущий скрипт приведет к следующему:
И возвращает обратно в меню установщика (выбор «Завершить установку» фактически снова запустит предварительно заданную часть и завершится сбоем, выбор «Прервать» не приведет к размонтированию ISO и перезагрузке, в любом случае я пытаюсь выполнить размонтирование и перезагрузку автоматически):