Score:0

ไม่สามารถบูตจาก initramfs (ไม่สามารถสลับรูทได้ ไดเร็กทอรี sysroot ว่างเปล่า)

ธง ca

โอเค ฉันมีปัญหากับ Fedora 34 โดยเฉพาะอย่างยิ่ง ฉันมีปัญหากับ a ภาพที่สร้างขึ้นเอง นั่นเป็นส่วนหนึ่งของบริการที่เรามอบให้

ปัญหา

ปัญหาเกี่ยวข้องกับ initramfs. เห็นเราใช้อยู่ เริ่มต้น จนถึงตอนนี้ แต่จำนวนของแพ็คเกจและไบนารีได้เพิ่มขึ้นตั้งแต่การอัปเกรดครั้งล่าสุดของเราจาก Fedora 32 เป็น Fedora 34 โดยไม่ต้องเพิ่มแพ็คเกจใหม่ด้วยตนเอง แพ็คเกจฐาน การเปิดตัว และการอ้างอิงได้เพิ่มขึ้นจนถึงจุดที่ initrd มีขนาดใหญ่กว่า 500MB

ขนาดเริ่มต้นนี้ทำให้อิมเมจนี้ไม่เสถียรมาก ตัวอย่างเช่น PXE รุ่นเก่าใช้งานไม่ได้ เนื่องจากอิมเมจนี้ใหญ่เกินไปสำหรับ TFTP และจะค้างในเครือข่ายส่วนใหญ่ อย่างไรก็ตาม ปัญหาที่ใหญ่ที่สุดและสำคัญที่สุดที่เรามีก็คือ GRUB2 ไม่ยอมให้ initrd นี้ทำการบูทอีกต่อไป โดยส่วนใหญ่จะใช้กับแล็ปท็อป HP เมื่อใดก็ตามที่เรากลับไปที่ Fedora 32 ภาพจะดูมีความเสถียรมากขึ้น เราคิดว่าเป็นเพราะ initrd มีขนาดเล็กกว่าที่นี่ อิมเมจเริ่มต้นของ Fedora Workstation (34) ยังทำงานบนระบบที่อิมเมจแบบกำหนดเองของเรากำลังเกิดภาวะเคอร์เนลแพนิค

รูปของเราใช้ก /vmlinuz และ /initrd ไฟล์สำหรับบูตเข้าสู่ RAMDisk โดยใช้ USB (GRUB2) หรือ PXE (iPXE) สิ่งนี้เกิดจากการออกแบบ: แอปพลิเคชันของเราเป็นเว็บเบราว์เซอร์คีออสก์แบบผสานรวมที่ใช้ Chromium ซึ่งทำงานบน Fedora (34) มันควรจะมีความผันผวนและไร้สัญชาติ

Initramfs

ฉันได้รับการตรวจสอบ initramfs เพื่อเป็นการทดแทน เริ่มต้นเนื่องจากมันใหม่กว่ามาก เบากว่ามาก และขนาดของไฟล์นี้อาจไม่ทำให้เกิดข้อบกพร่องใดๆ ใน GRUB2 บางทีนี่อาจช่วยให้เราใช้งาน PXE เดิมเช่น พิกเซลลินุกซ์ และ บริการการปรับใช้ Windows. ฉันคิดว่าฉันสามารถแทนที่การใช้ของ ซีพีโอ + XZ กับ ดราคัต. แต่ติดปัญหาที่คิดไม่ออกจริงๆ...

พาราด็อกซ์

การแทนที่ initrd ด้วย initramfs ใน GRUB2 นั้นไม่ใช่เรื่องยาก ถ้าฉันใช้ชื่อเดียวกันสำหรับทั้งสองไฟล์ (ไม่ใช่พร้อมกัน) มันจะค้นหาชื่อไฟล์ในการกำหนดค่าและค้นหาไฟล์ ง่ายใช่มั้ย? แต่จากนั้นข้อความเคอร์เนลก็ปรากฏขึ้นและไม่สามารถบู๊ตได้เช่น: ไม่สามารถเปลี่ยนรูท: เส้นทางรูทของสวิตช์ที่ระบุ /sysroot ดูเหมือนจะไม่ใช่แผนผังระบบปฏิบัติการ ไฟล์ os-release หายไป

ไม่จำเป็นต้องพูด, ฉันตรวจสอบเนื้อหาของ /sysroot: ว่างเปล่า. ควรมี os-release ไฟล์ใน / ฯลฯ. การอ่าน "Sysroot" มันควรจะเมานต์โครงสร้างไดเร็กทอรี OS ซึ่งอาจเป็นสาเหตุว่าทำไมมันถึงบอกฉันว่ามันไม่มีไฟล์บางไฟล์

ซิสรูท

ฉันหลงทางตรงไหน: โครงสร้างไดเร็กทอรีอยู่ภายใน initramfs ใช่ไหม แต่เพื่อเรียกใช้ initramfs ผ่าน GRUB2 ฉันต้องเมานต์โครงสร้างไดเร็กทอรีกับ Sysroot นั่นหมายความว่าฉันสามารถไปถึงได้เท่านั้น /sysroot จากภายใน initramfs แต่ฉันไม่สามารถเมานต์ initramfs ได้เพราะฉันต้องการไฟล์ OS-release /sysroot. ฉันยังไม่สามารถเมานต์ไดเร็กทอรีภายใน initramfs ได้เนื่องจากเป็นไฟล์รูปภาพ คุณเห็นความขัดแย้งของฉันไหม ฉันควรจะเมานต์อย่างไร /sysrootเมื่อสิ่งนี้ต้องการบางอย่างภายใน initramfs ตัวเอง? ฉันได้ลองแล้ว ราก = พารามิเตอร์เคอร์เนลด้วย a พาร์ทยูอิด หรือ ฉลากแต่ฉันใช้ไม่ได้ UUID เนื่องจากเป็น vFAT มากกว่า UEFI

นี่ฉันพลาดอะไรไปรึเปล่า? ฉันควรจะใช้ initramfs หรือไม่เมื่อใช้ USB RAMDisks ที่สามารถบู๊ตได้ ถ้าไม่ ฉันควรแยก initrd ออกเป็นหลายไฟล์หรือไม่ ฉันจะทำอย่างไร

บันทึก: เรากำลังใช้การบีบอัดสูงสุดที่เป็นไปได้ (XZ ระดับ 9) ฉันเคยลองแยก initrd มาก่อนแล้ว แต่ฉันไม่สามารถทำได้อย่างถูกต้อง

โดยส่วนตัวแล้วฉันไม่ชอบขอความช่วยเหลือ แต่เมื่อผลการค้นหาของ Google ทั้งหมดเป็นสีม่วง ฉันอาจต้องการแนวทางที่ถูกต้อง ระบบจำนวนมากไม่ทำงานหลังจากที่เราอัปเกรดเป็น F:34 และฉันต้องการแก้ไขสิ่งนี้จริงๆ ไม่มีใครรู้วิธีการใช้ Dracut อย่างถูกต้อง? ใครมีประสบการณ์ในการสร้างภาพ initramfs? ของฉันทำไม /sysroot ยังไม่ได้ติดตั้ง?

ความช่วยเหลือเป็นที่ชื่นชมมาก ขอบคุณ

โพสต์คำตอบ

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