Đa số, trải nghiệm VirtualBox của tôi khá dễ chịu. Có một vài vấn đề ở đây đó, đôi khi nghiêm trọng - như vấn đề bridged networking - nhưng tổng thể, nó cung cấp môi trường hữu ích, linh hoạt để test OS và phần mềm nhanh chóng, hiệu quả, thông minh. Network isolation, snapshot, Bob's your uncle.
Rồi, out of the blue, vài ngày trước tôi thử launch một VM, và nó không chạy. Thông báo lỗi chứa: Failed to load R0 module ... for device 'usb-ehci' (VERR_SYMBOL_VALUE_TOO_BIG). Nghe khá загадоリック. Hãy troubleshoot.
Vấn đề chi tiết hơn
Đây là toàn bộ thông báo hiển thị trên màn hình:
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).
Từ những gì ta thấy, có vẻ VirtualBox không thể load một module vào memory. Điều này có vẻ liên quan đến chức năng USB - trong trường hợp này, chức năng USB 2.X/3.X để chính xác hơn. Lỗi dường như là mismatch giữa những gì component chính của VirtualBox mong đợi và những gì module cụ thể này cung cấp (một trong các symbol).
Đơn độc lập, điều này nghe không hữu ích lắm - nhưng nó hữu ích. Như đã xảy ra, VirtualBox cung cấp chức năng mở rộng, cụ thể là hỗ trợ USB 2.0 và USB 3.0, VirtualBox RDP, disk encryption, NVMe và PXE boot cho card Intel qua (Oracle VM) VirtualBox Extension Pack. Mỗi khi có update cho VirtualBox, nên có update cho pack cũng vậy.
Nhưng không có gì ngăn cản bạn upgrade phần mềm VirtualBox riêng biệt, và sau đó không khởi động upgrade cho extension pack. Rất có thể - thậm chí là có khả năng cao - bạn sẽ kết thúc với VirtualBox và pack ở hai phiên bản khác nhau. Tôi đã thấy điều này, và 99% thời gian, nó không dường như gây vấn đề với hoạt động VM. Tuy nhiên, trong trường hợp cụ thể này, mismatch dường như quá lớn để VirtualBox tiếp tục, do đó failure.
Giải pháp
Khi hiểu vấn đề, fix có vẻ hơi tầm thường - upgrade và/hoặc match phiên bản VirtualBox và Extension Pack. Bạn sẽ thấy prompt upgrade khi launch chương trình, hoặc nếu bạn đã dismiss nó, bạn chỉ cần tải pack từ trang chính thức và chạy thủ công. Khi upgrade xong, re-launch VM. Mọi thứ nên chạy smooth bây giờ. Done.
Kết luận
Đây là một tutorial ngắn gọn, đơn giản. Nó giải quyết vấn đề mismatch symbol giữa VirtualBox và module USB có sẵn như một phần của Extension Pack. Nếu hai thứ khác nhau, có thể có vấn đề trong chức năng được yêu cầu, và VM có thể không khởi động. Fix là đơn giản upgrade/match hai component phần mềm - hoặc disable chức năng bị ảnh hưởng, nhưng đó không phải điều chúng ta muốn.
Tôi hy vọng bạn thấy hữu ích. Tôi muốn thông báo lỗi VirtualBox mô tả hơn, hoặc có phương pháp nhanh hơn để lấy và upgrade extension pack. Hiện tại, đọc kỹ log có thể cho con trỏ hữu ích khi lỗi VM xảy ra, nên đừng dismiss chúng một cách mù quáng. Vậy, xong ở đây.
Chúc vui.