Score:1

การใช้ความคาดหวังที่จะทำให้การติดตั้ง Alpine Linux เป็นไปโดยอัตโนมัติใน FreeBSD ใน Bhyve

ธง mx

ฉันกำลังพยายามทำให้การติดตั้ง Alpine Linux เป็นแบบอัตโนมัติใน vm-bhyve ภายใต้ FreeBSD และคาดว่าจะตายไม่นานหลังจากที่เมนูบู๊ตหมดเวลาและเริ่มการติดตั้ง Alpine Linux

#!/usr/bin/env คาดหวัง
วางไข่ vm ติดตั้ง -f อัลไพน์ alpine.iso # สั้นลงเพื่อความกะทัดรัด
คาดหวัง "การเข้าสู่ระบบ localhost:"
ส่ง "รูท\r"
...

ส่งผลให้เกิดข้อผิดพลาดต่อไปนี้:

"ขณะดำเนินการ
"ส่ง" root\r"

ฉันสงสัยว่าเมื่อใดก็ตามที่หน้าจอโล่งและเริ่มบู๊ต จะเกิดความสับสนว่าคิดว่าโปรแกรมเสร็จสิ้นแล้วใช่หรือไม่ และเป็นผลให้สคริปต์ตาย

ฉันไม่เคยเขียนโค้ดคาดหวังในลักษณะนี้มาก่อน เป็นไปได้ไหมที่จะทำด้วยความคาดหวัง

ฉันยังลองตั้งค่าการหมดเวลาทั่วโลกก่อนที่จะวางไข่ vm install cmd ซึ่งจะบู๊ตและเข้าสู่คอนโซลสำหรับผู้เยี่ยมชมทันที แต่นั่นไม่ได้เปลี่ยนแปลงอะไรเลย ดังนั้นฉันจึงแยกมันออกจากสคริปต์ด้านบน การนอนหลับในจุดเดิมไม่ได้ช่วยอะไร มันแค่ทำให้การบูทล่าช้า (และความล้มเหลวตามมาตามจำนวนที่ฉันตั้งไว้สำหรับโหมดสลีป)

แก้ไข: ฉันกำลังพยายามเปิดตัวติดตั้งในพื้นหลัง เข้าสู่โหมดสลีป 30 วินาที จากนั้นแนบคอนโซล ณ จุดนี้คาดหวัง ควร งาน.

fo flag
ฉันขอแนะนำให้ใช้ `autoexpect` เพื่อบันทึกการติดตั้งแบบโต้ตอบอย่างสมบูรณ์ รหัสคาดหวังที่ได้นั้นละเอียดมาก แต่สามารถแก้ไขได้หากจำเป็น
fo flag
นอกจากนี้ ในขณะที่พัฒนาสคริปคาดหวัง ให้เปิดใช้งานด้วย `expect -d` เพื่อเปิดใช้งานเอาต์พุตดีบั๊กแบบละเอียด: สิ่งนี้สามารถระบุสาเหตุที่รูปแบบที่คุณคาดไว้ไม่ตรงกัน (มักมีช่องว่าง "ซ่อนอยู่")
mx flag
ไอเดียดีมาก ไม่ยักรู้ว่ามี น่าเสียดายที่สิ่งนี้ก็ตายเช่นกัน ฉัน *คิดว่า* มันต้องไม่ชอบเทอร์มินัลแน่ๆ มันจับเอาต์พุตได้มากขึ้นอย่างที่คาดไว้ .
Score:0
ธง mx

ฉันใช้งานได้ในทั้งสองกรณี (vm install -f และใช้ vm console เพื่อแนบกับ VM ที่กำลังทำงานอยู่)

ปัญหาในกรณีของฉันคือฉันเริ่มต้นด้วยการกำหนดค่าใหม่และการกำหนดค่าใหม่นั้นมีการตั้งค่าที่ไม่ถูกต้อง (PCI passthrough) ฉันคิดว่าฉันบูทเครื่องโดยไม่ได้คาดหมายและได้ผล อย่างไรก็ตาม ฉันได้รีอิมเมจเครื่องแล้วและการกำหนดค่าของฉันถูกเขียนทับ

การใช้ autoexpect ช่วยให้ฉันสามารถเก็บรายละเอียดได้มากขึ้นซึ่งฉันควรจะมี และเป็นวิธีที่ยอดเยี่ยมในการเตรียมสคริปต์ที่คาดหวัง

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

โพสต์คำตอบ

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