Puncte:0

Programul de instalare Debian nu se va închide după instalarea preseedată

drapel tr

Fac o instalare preseedată care implică afișarea debconf Mesaje INFO chiar în interiorul programului de instalare debian. La sfârșitul late_command, mă aștept ca sistemul să scoată cdrom-ul de instalare și să-mi repornească instanța.Problema este că, în loc să se comporte astfel, revine la meniul de instalare debian, iar pentru a termina procesul de instalare îmi lasă doar opțiunea de a opri manual și de a porni de pe disc pentru a scoate cdrom-ul de instalare.

Este important să precizez că acest comportament neașteptat a apărut doar când am început să folosesc debconf INFO mesaje (funcționa așa cum era de așteptat înainte, deci preseed.cfg este în mod normal configurat corect), este astfel direct legat de acesta.

Mai jos sunt următoarele: My parte late_command, scriptul care este lansat de către late_command care implică debconf, cel syslog când se termină instalarea, este și ecranul în care sunt condus înapoi.

late_command :

șir de comandă 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;

deployment-preseed-track.sh (Practic scanează în mod viu jurnalul pentru a detecta progresul implementării)

#!/bin/sh

. /usr/share/debconf/confmodule
. „/home/machine/build/variables.sh”

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

pisică > „${templatePath}” << „EOF”
Șablon: deployment_progress_tracker/progress/fallback
Tip: text
Descriere: ${STEP}...
EOF

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

watchLogs () {
  deploymentDone=fals
  in timp ce ! $deploymentDone
  do
    if [ -f "${logFile}" ]; atunci
      pas=$(grep -E -o -a -h "Pasul de progres: .*" "${logFile}" | coada -1 | sed 's/Pasul de progres: //')
      if [ -z "${pas##*$DEPLOYMENT_FINISHED*}" ]; atunci
        deploymentDone=true
      elif [ -n "${pas}" ]; atunci
        db_subst deployment_progress_tracker/progress/fallback PASUL „${step}”
        INFO db_progress deployment_progress_tracker/progress/fallback
      fi
    fi
    somn 3
  Terminat
}

syslog

care duce înapoi la acest ecran

Puncte:0
drapel tr

Îmi voi răspunde după zile de încercări eșuate.

Debconf nu a fost vinovat. Ceea ce s-a întâmplat a fost felul în care orchestram apelurile scripturilor (tracker în fundal și script de implementare în prim-plan) nu dădea nicio șansă instalatorului Debian să oprească scriptul de fundal într-un mod curat, așteptat. De îndată ce scriptul de implementare a fost ucis sau nu a fost ucis în mod inconsecvent, ceea ce a dus la o implementare reușită sau eșuată, aleatoriu.

Mi-a fost greu să încerc să mă joc cu debconf înainte de a înțelege ce se întâmplă, dar din moment ce am înțeles în sfârșit, asta am ajuns să funcționeze fără probleme, de fiecare dată.

În loc să lansați scriptul de implementare implementare-preseed.sh ca proces de prim plan și tracker deployment-preseed-track.sh ca proces de fundal, am făcut exact opoziția, adică: deployment-preseed-track.sh ca proces de prim plan și implementare-preseed.sh ca proces de fundal.

În consecință, am actualizat late_command :

șir de comandă 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;

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.