Рейтинг:0

Программа установки Debian не закрывается после предварительной установки

флаг tr

Я выполняю предварительную установку, которая включает отображение debconf ИНФО-сообщения прямо внутри программы установки Debian. В конце late_command я ожидаю, что система извлечет установочный компакт-диск и перезагрузит мой экземпляр.Проблема в том, что вместо того, чтобы вести себя таким образом, он возвращается в меню установщика Debian, и для завершения процесса установки он оставляет мне только возможность вручную завершить работу и загрузиться с диска, чтобы извлечь установочный компакт-диск.

Важно уточнить, что это неожиданное поведение появилось только тогда, когда я начал использовать ИНФОРМАЦИЯ о debconf сообщений (раньше он работал как положено, поэтому preseed.cfg обычно правильно сконфигурирован), таким образом, он напрямую связан с ним.

Ниже приведены следующие: Мои поздняя_командная часть, скрипт, запускаемый поздняя_команда который включает debconf, системный журнал когда установка закончится, es и экран, на котором я возвращаюсь.

поздняя_команда :

d-i preseed/late_command строка \
cp -rf /cdrom/build /target/home/device; \
/bin/sh /target/home/machine/build/deployment-preseed-track.sh; \
chmod +x /target/home/machine/build/deployment-preseed.sh; \
in-target --pass-stdout ./home/machine/build/deployment-preseed.sh > /target/var/log/installation.log; \
in-target rm -rf /home/machine/build;

развертывание-preseed-track.sh (Он в основном сканирует журнал, чтобы определить ход развертывания)

#!/бин/ш

. /usr/доля/debconf/confmodule
. "/home/machine/build/variables.sh"

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 "Шаг выполнения: .*" "${logFile}" | tail -1 | sed 's/Шаг выполнения: //')
      если [ -z "${шаг##*$DEPLOYMENT_FINISHED*}" ]; тогда
        развертывание выполнено = истина
      Элиф [-n "${шаг}"]; тогда
        db_subst deploy_progress_tracker/progress/fallback ШАГ "${шаг}"
        db_progress INFO deployment_progress_tracker/progress/fallback
      фи
    фи
    спать 3
  сделано
}

системный журнал

возвращаясь к этому экрану

Рейтинг:0
флаг tr

Я отвечу себе после нескольких дней неудачных попыток.

Debconf не был виновником. Произошло то, что то, как я организовывал вызовы сценариев (трекер в фоновом режиме и сценарий развертывания на переднем плане), не давало установщику Debian возможности завершить фоновый сценарий чистым, ожидаемым образом. Как только сценарий развертывания был непоследовательно убит или не убит, что привело к успешному или неудачному развертыванию случайным образом.

Мне было трудно поиграть с debconf, прежде чем я понял, что происходит, но с тех пор, как я, наконец, понял, это то, что я сделал, чтобы заставить его работать без проблем каждый раз.

Вместо запуска сценария развертывания развертывание-preseed.sh как процесс переднего плана и трекер развертывание-preseed-track.sh в качестве фонового процесса я сделал точную оппозицию, т.е.: развертывание-preseed-track.sh как процесс переднего плана, и развертывание-preseed.sh как фоновый процесс.

Я соответственно обновил поздняя_команда :

d-i preseed/late_command строка \
cp -rf /cdrom/build /target/home/device; \
chmod +x /target/home/machine/build/deployment-preseed.sh; \
(in-target --pass-stdout ./home/machine/build/deployment-preseed.sh > /target/var/log/installation.log &); \
/bin/sh /target/home/machine/build/deployment-preseed-track.sh; \
in-target rm -rf /home/machine/build;

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.