โดยและใหญ่ ประสบการณ์ VirtualBox ของผม pleasant ปัญหา פה ושם บางครั้ง serious เช่น bridged networking issue แต่โดยรวมให้ useful, flexible environment ทดสอบ OS และ software เร็ว มีประสิทธิภาพ ฉลาด Network isolation, snapshots, Bob's your uncle
กะทันหันไม่กี่วันก่อน พยายาม launch VM ไม่ได้ Error message: Failed to load R0 module ... for device 'usb-ehci' (VERR_SYMBOL_VALUE_TOO_BIG) ค่อนข้าง cryptic ลอง troubleshoot
ปัญหาในรายละเอียด (Problem in more detail)
ข้อความเต็มบนหน้าจอ:
Failed to load R0 module /usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/ linux.amd64/VBoxEhciR0.r0: RTLdrGetBits failed (VERR_SYMBOL_VALUE_TOO_BIG). Failed to load ring-0 module 'VBoxEhciR0.r0' for device 'usb-ehci' (VERR_SYMBOL_VALUE_TOO_BIG).
ดูเหมือน VirtualBox โหลด module เข้า memory ไม่ได้ เกี่ยวกับ USB functionality - กรณีนี้ USB 2.X/3.X error mismatch ระหว่างที่ VirtualBox main component คาดหวัง และ module นี้ provide (หนึ่งใน symbols)
VirtualBox ให้ extended functionality: USB 2.0/3.0, RDP, disk encryption, NVMe, PXE boot Intel cards ผ่าน Oracle VM VirtualBox Extension Pack เวลามี update VirtualBox ควรมี update pack ด้วย
แต่ไม่มีอะไรป้องกัน upgrade VirtualBox แยก และไม่ upgrade extension pack อาจได้ VirtualBox และ pack เวอร์ชันต่างกัน เห็นเอง 99% ไม่ก่อปัญหา VM operations แต่กรณีนี้ mismatch มากเกินไป VirtualBox ไม่ดำเนินต่อได้
วิธีแก้ (Solution)
เข้าใจ issue แล้ว fix trivial - upgrade/match VirtualBox และ Extension Pack versions จะเห็น prompt upgrade ตอน launch หรือ dismiss แล้ว ดาวน์โหลด pack จาก official site รัน manual upgrade เสร็จ re-launch VM ควร smooth แล้ว Done.
(ภาพประกอบ Extension Pack update)
สรุป (Conclusion)
บทช่วยสอนสั้นๆ นี้ address symbol mismatch ระหว่าง VirtualBox และ USB module ใน Extension Pack ถ้าต่างเวอร์ชัน อาจมีปัญหา functionality และ VM ไม่ start Fix: upgrade/match ทั้งสอง components - หรือ disable affected functionality แต่ไม่ใช่สิ่งที่อยาก
หวังว่ามีประโยชน์ อยากให้ VirtualBox error messages descriptive มากขึ้น หรือวิธี upgrade extension packs เร็วขึ้น แต่ตอนนี้ การอ่าน logs อย่างระมัดระวังให้ pointers 有用 เมื่อ VM errors เกิดขึ้น อย่า dismiss ใส่ๆ จบแล้ว
Cheers.