ในช่วง late_command
ขั้นตอนของการติดตั้งแบบอัตโนมัติ ฉันใช้เชลล์สคริปต์:
d-i preseed/late_command สตริงในเป้าหมาย /bin/sh -c './execute-script.sh'
เมื่อถึงขั้นตอน late_command UI (พื้นหลังสีน้ำเงิน หน้าต่างสีเทา) จะแสดงข้อความ "กำลังรัน preseed..." :
ฉันสงสัยว่ามีวิธีใดในการแสดงข้อความอื่นๆ ที่มีชีวิตชีวาตามสิ่งที่ ดำเนินการ-script.sh
กำลังทำ.
ฉันคิดอย่างไร้เดียงสาว่าการใช้ STDOUT ปกติกับเสียงสะท้อนจะทำเคล็ดลับได้ แต่ดูเหมือนว่าจะซับซ้อนกว่า
การค้นหาของฉันจนถึงตอนนี้ทำให้ฉันสนใจถึงความเป็นไปได้ในการใช้งาน ดีเบตคอนเฟอเรนซ์
แต่ฉันไม่สามารถหาวิธีใด ๆ
สคริปต์เวอร์ชันปัจจุบันของฉันเปลี่ยนรูปตามคำตอบของ @Andrew :
#!/bin/sh
. /usr/share/debconf/confmodule
. "./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
เสร็จแล้ว
}
(
บันทึกการเฝ้าดู;
rm -f "${ templatePath}";
db_progress ชุดที่ 1;
นอน 1;
db_progress หยุด;
db_unregister deployment_progress_tracker/progress;
) &
สคริปต์ก่อนหน้าจะส่งผลต่อไปนี้:
และนำกลับไปที่เมนูตัวติดตั้ง (การเลือกเสร็จสิ้น การติดตั้งจะรันอีกครั้งในส่วนที่ตั้งไว้ล่วงหน้าและล้มเหลว การเลือก Abort จะไม่ยกเลิกการต่อเชื่อม ISO และรีบูต อย่างไรก็ตาม ฉันพยายามให้ทั้งการถอนการติดตั้งและการรีบูตทำโดยอัตโนมัติ):