Score:0

คำสั่งบางอย่าง (เช่น modprobe หรือ usermod) ล้มเหลวเนื่องจากคำสั่งล่าช้าในการติดตั้งอัตโนมัติของ Ubuntu

ธง pt

ฉันกำลังพยายามตั้งค่า คอนเทนเนอร์สำหรับ kubernetes ผ่าน กลไกการติดตั้งอัตโนมัติของ Ubuntu (สำหรับอูบุนตู 20.04)

คำสั่งบางอย่างเมื่อใช้ใน คำสั่งล่าช้า ดูเหมือนจะล้มเหลวโดยไม่มีเหตุผลชัดเจน (ออก > 0 โดยไม่มีเอาต์พุตที่เป็นคำอธิบาย) ตัวอย่างที่ล้มเหลวจาก คำสั่งล่าช้า ดูเหมือนกับ:

  คำสั่งล่าช้า:
    - printf 'โอเวอร์เลย์\nbr_netfilter\n' > /target/etc/modules-load.d/containerd.conf
    - curtin ในเป้าหมาย --target=/target -- /usr/sbin/modprobe ซ้อนทับ
    - curtin ในเป้าหมาย --target=/target -- /usr/sbin/modprobe br_netfilter

โปรแกรมติดตั้งแสดงข้อผิดพลาดว่า ม็อดโพรบ โทรออก 1.

ป้อนคำอธิบายรูปภาพที่นี่

ฉันรีสตาร์ท VM เข้าสู่ระบบด้วย อูบุนตู, และกลายเป็น ราก. ตอนนั้นวิ่งได้ การซ้อนทับ modprobe สำเร็จ (ทางออก 0) ฉันยังมองไม่เห็น /var/crash/16238... (ดูด้านบน) เนื่องจากไม่มีอยู่ในเป้าหมาย (ฉันเดาว่ามันมีอยู่ในสภาพแวดล้อมของตัวติดตั้ง) /var/log/ตัวติดตั้ง ไม่มีประโยชน์อะไรเลย

จากที่กล่าวมาข้างต้น สิ่งที่อาจทำให้ ม็อดโพรบ ล้มเหลวเป็น คำสั่งล่าช้า? ดูเหมือนไม่เกี่ยวข้อง ฉันได้ลอง a เชจ -d 0 การโทรที่ล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดเป็นศูนย์เช่นกัน มีคำอธิบายว่าทำไมบางคำสั่งอาจไม่มีอยู่หรือทำงานไม่ถูกต้องภายในสภาพแวดล้อมเป้าหมายในขั้นตอนนั้นหรือไม่?


แก้ไข 1: เกี่ยวกับความล้มเหลวของ usermod ฉันเดาว่าการตอบกลับนี้บ่งบอกว่าผู้ใช้ ubuntu ไม่ได้ถูกสร้างขึ้น ณ จุดนั้นในกระบวนการติดตั้ง

แก้ไข 2: ฉันเพิ่มไฟล์ คำสั่งผิดพลาด ซึ่งดูเหมือนว่ามีประโยชน์สำหรับการดีบัก:

  คำสั่งผิดพลาด:
    - /usr/bin/tail -n 250 /var/log/syslog

ตอนนี้แสดงให้เห็นแล้ว ไม่พบการซ้อนทับโมดูลใน /lib/modules/...:

ป้อนคำอธิบายรูปภาพที่นี่

waltinator avatar
it flag
อ่านไฟล์ `/var/crash/` ที่กล่าวถึงในบรรทัดสุดท้ายของรูปภาพของคุณ มันเป็นไฟล์ข้อความ คุณจึงสามารถใช้ `less` ได้
Brad Solomon avatar
pt flag
ไฟล์ไม่มีอยู่ตามที่โฆษณาไว้บนเป้าหมาย ตามที่ระบุไว้ในคำถามของฉัน ฉันเชื่อว่ามันอยู่ในสภาพแวดล้อมของตัวติดตั้ง ซึ่งฉันไม่สามารถเข้าถึงได้
Score:0
ธง pt

สาเหตุที่แท้จริงของปัญหานี้คือ modprobe กำลังมองหาผิดที่เนื่องจากเคอร์เนลที่อัปเดตก่อนที่จะรีบูต

ระหว่างขั้นตอนการติดตั้ง คุณสามารถใช้ CTRL+Z เพื่อเข้าสู่ Bash shell ในฐานะผู้ใช้รูทใน ช่างติดตั้ง. ในสภาพแวดล้อมนี้ /ซีดีรอม คือ ISO ที่ติดตั้ง (iso9660) และ /เป้า เป็นรูทของระบบไฟล์เป้าหมาย นี่เป็นวิธีที่ดีในการแก้ไขจุดบกพร่อง เคอร์ตินเข้าเป้า คำสั่งซึ่งภายในโดยพื้นฐานแล้วก chroot /เป้าหมาย เรียก.

ในกรณีของ modprobe ผลลัพธ์จะแสดง:

modprobe: FATAL: ไม่พบโมดูลซ้อนทับในไดเร็กทอรี /lib/modules/5.4.0-65-generic

ในขณะที่ไดเร็กทอรีนี้มีอยู่ในไฟล์ ช่างติดตั้งบนเป้าหมายที่มีอยู่จริงคือ:

/target/lib/modules/5.4.0-80-generic

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

เพื่อเป็นการแก้ไขสำหรับคำสั่งเฉพาะนี้ ม็อดโพรบ ช่วยให้คุณสามารถตั้งค่าเวอร์ชัน:

curtin -v ในเป้าหมาย --target=/target \
    -- /usr/sbin/modprobe --set-version 5.4.0-80-โอเวอร์เลย์ทั่วไป

กับ --ชุดรุ่น คำสั่งจะทำงานสำเร็จและออกจาก 0

โพสต์คำตอบ

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