Score:0

โปรแกรมติดตั้ง Debian จะไม่ออกหลังจากติดตั้งล่วงหน้า

ธง tr

ฉันกำลังทำการติดตั้งล่วงหน้าที่เกี่ยวข้องกับการแสดง ดีเบตคอนเฟอเรนซ์ ข้อความ INFO ภายในตัวติดตั้งเดเบียน ในตอนท้ายของ late_command ฉันคาดหวังว่าระบบจะนำ cdrom การติดตั้งออก และรีบูตอินสแตนซ์ของฉันปัญหาคือแทนที่จะทำงานในลักษณะนี้ กลับเข้าสู่เมนูตัวติดตั้งเดเบียน และเพื่อให้กระบวนการติดตั้งเสร็จสิ้น ทำให้ฉันเหลือเพียงตัวเลือกในการปิดระบบด้วยตนเองและบูตจากดิสก์เพื่อนำซีดีรอมการติดตั้งออก

สิ่งสำคัญคือต้องระบุให้แน่ชัดว่าลักษณะการทำงานที่ไม่คาดคิดนี้เกิดขึ้นเมื่อฉันเริ่มใช้งานเท่านั้น ข้อมูล debconf ข้อความ (มันทำงานตามที่คาดไว้ก่อนหน้านี้ ดังนั้น preseed.cfg โดยปกติจะมีการกำหนดค่าอย่างถูกต้อง) จึงเกี่ยวข้องโดยตรงกับมัน

ด้านล่างมีดังต่อไปนี้: ของฉัน ส่วน late_commandสคริปต์ที่เปิดตัวโดย late_command ซึ่งเกี่ยวข้องกับ ดีเบตคอนเฟอเรนซ์, syslog เมื่อการติดตั้งเสร็จสิ้นและหน้าจอที่ฉันถูกนำกลับไป

late_command :

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; \
ในเป้าหมาย --pass-stdout ./home/machine/build/deployment-preseed.sh > /target/var/log/installation.log; \
ในเป้าหมาย rm -rf /home/machine/build;

การปรับใช้ preseed-track.sh (โดยทั่วไปจะสแกนบันทึกที่มีชีวิตชีวาเพื่อตรวจหาความคืบหน้าในการปรับใช้)

#!/bin/sh

. /usr/share/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
ประเภท: ข้อความ
คำอธิบาย: ${STEP}...
อฟ

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

บันทึกการเฝ้าดู () {
  การปรับใช้เสร็จสิ้น = เท็จ
  ในขณะที่ ! $deployment เสร็จสิ้น
  ทำ
    ถ้า [ -f "${logFile}" ]; แล้ว
      step=$(grep -E -o -a -h "Progress-step: .*" "${logFile}" | tail -1 | sed 's/Progress-step: //')
      ถ้า [ -z "${step##*$DEPLOYMENT_FINISHED*}" ]; แล้ว
        การปรับใช้เสร็จสิ้น=จริง
      elif [ -n "${ขั้นตอน}" ]; แล้ว
        db_subst deployment_progress_tracker/progress/fallback ขั้นตอน "${step}"
        db_progress INFO การปรับใช้_progress_tracker/progress/fallback
      ไฟ
    ไฟ
    นอน 3
  เสร็จแล้ว
}

syslog

นำกลับมายังหน้าจอนี้

Score:0
ธง tr

ฉันจะตอบตัวเองหลังจากพยายามไม่สำเร็จมาหลายวัน

Debconf ไม่ใช่ผู้กระทำความผิด สิ่งที่เกิดขึ้นคือวิธีที่ฉันเตรียมการเรียกสคริปต์ (ตัวติดตามในพื้นหลังและสคริปต์การปรับใช้เบื้องหน้า) ไม่เปิดโอกาสให้ตัวติดตั้งเดเบียนสามารถฆ่าสคริปต์พื้นหลังด้วยวิธีที่สะอาดและคาดหวัง ทันทีที่สคริปต์การปรับใช้ถูกฆ่าหรือไม่ถูกฆ่าอย่างไม่สอดคล้องกัน ซึ่งนำไปสู่การปรับใช้ที่สำเร็จหรือล้มเหลวแบบสุ่ม

ฉันมีช่วงเวลาที่ยากลำบากในการพยายามเล่นกับ debconf ก่อนที่จะเข้าใจว่าเกิดอะไรขึ้น แต่ในที่สุดเมื่อฉันได้มันมา นี่คือสิ่งที่ฉันลงเอยด้วยการทำให้มันทำงานได้อย่างราบรื่นทุกครั้ง

แทนที่จะเรียกใช้สคริปต์การปรับใช้ การปรับใช้-preseed.sh เป็นกระบวนการเบื้องหน้าและตัวติดตาม การปรับใช้ preseed-track.sh ในฐานะกระบวนการเบื้องหลัง ฉันได้คัดค้านอย่างตรงไปตรงมา เช่น: การปรับใช้ preseed-track.sh เป็นกระบวนการเบื้องหน้าและ การปรับใช้-preseed.sh เป็นกระบวนการเบื้องหลัง

ฉันอัปเดตตาม late_command :

d-i preseed/late_command สตริง \
cp -rf /cdrom/build /target/home/device; \
chmod +x /target/home/machine/build/deployment-preseed.sh; \
(ในเป้าหมาย --pass-stdout ./home/machine/build/deployment-preseed.sh > /target/var/log/installation.log &); \
/bin/sh /target/home/machine/build/deployment-preseed-track.sh; \
ในเป้าหมาย rm -rf /home/machine/build;

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา