Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Khắc phục Lỗi VirtualBox NS_ERROR_FAILURE (0x80004005) Khi Khởi chạy Session

Gần đây, trên một trong các hệ thống của tôi, VirtualBox ngừng hoạt động. Dù thử khởi chạy virtual machine nào, nó đều ném ra cùng một lỗi. Cửa sổ popup hiển thị: Failed to open a session for the virtual machine [Tên bất kỳ]. Trong hộp chi tiết, nó nói: NS_ERROR_FAILURE (0x80004005).

Lạ. Thông báo này загадочный và chung chung, không đưa ra manh mối ngay lập tức về điều gì có thể sai. Vâng, tôi bắt đầu troubleshooting, và sau một vài thử nghiệm sai, hướng dẫn nhỏ này ra đời. Bây giờ, có khả năng cao nó sẽ không giải quyết TẤT CẢ vấn đề của bạn (với cùng mã lỗi), nhưng bạn có thể nhận được đủ hướng dẫn để tìm ra điều gì trong hệ thống cụ thể của bạn không hoạt động. Theo chân mình nhé.

Vấn đề chi tiết hơn

Vì thông báo popup không cho tôi nhiều thông tin, tôi phải nhìn vào system log. Ở đây, tôi tìm thấy một thông tin hữu ích hơn nhiều. Cụ thể, có vẻ như driver đồ họa VirtualBox VMSVGA đang crash, và lỗi trỏ tới thư viện shared libX11.

Feb  3 12:21:09 kernel: [] VMSVGA FIFO[11413]: segfault at f8 ip 00007fcf4df5ada4 sp 00007fced9329c40 error 4 in libX11.so.6.3.0[7fcf4df40000+133000]

Lúc này, tôi nghĩ chắc chắn có gì đó sai với instance VirtualBox của tôi. Vì vậy, tôi quyết định đi từng bước một, có phương pháp. Trước tiên, rebuild module VirtualBox với vboxconfig. Điều này cũng restart service.

sudo vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.

Tuy nhiên, điều này không giải quyết được vấn đề ngay lập tức. Sau đó, tôi thử suy nghĩ thêm một chút. Thành phần nào khác của VirtualBox có thể bị lỗi, nhưng không nhất thiết được cover bởi quy trình setup vboxconfig. Và tôi nghĩ, VirtualBox Extensions pack?

Tôi nhìn vào những gì tôi cài trên hệ thống bị ảnh hưởng, và nhận thấy VirtualBox và Extensions pack có phiên bản khác nhau. Điều này không tốt, và có thể dẫn đến hành vi bất ngờ, mà rõ ràng đã xảy ra trên hệ thống của tôi. Trong Linux, vấn đề trầm trọng hơn là, khi launch, VirtualBox sẽ check cập nhật cho Extensions pack và cho phép bạn cài đặt nó, trong khi chương trình core dựa vào system update. Nếu hai thứ này không diễn ra theo trình tự, system trước extensions sau, thì bạn có thể rơi vào tình huống virtual machine không chạy được, như trên.

Giải pháp

Fix ở đây là gỡ bỏ pack gây vấn đề, sau đó cài pack mới khớp với phiên bản chương trình VirtualBox, hoặc ngược lại. Cách nào thì cả hai phải khớp nhau. Tôi vào File > Preferences > Extensions, và bấm nút Remove. Nhưng sau đó, tôi gặp cùng lỗi như trước, khi đang thử gỡ pack!

Dọn dẹp bằng command line

Fix cho vấn đề thứ hai là thực hiện cleanup operation trong cửa sổ terminal - bạn cũng có thể dùng lệnh để cài hoặc gỡ extension pack (thậm chí force removal).

VBoxManage extpack cleanup
Successfully performed extension pack cleanup

Bây giờ, tôi quay lại GUI, và có thể gỡ pack. Tốt. Sau đó, tôi tải và cài một pack mới, phiên bản khớp với phiên bản chương trình chính:

Và bây giờ, virtual machine chạy ngon lành như trước!

Kết luận

Theo một nghĩa nào đó, vấn đề trên hoàn toàn do tự làm của mình. Nhưng rồi, nên có cách làm cho toàn bộ quá trình robust hơn. Ví dụ, không cho phép cài extension pack không tương thích. Giữ nhiều hơn một phiên bản (như một loại restore), và dùng nó nếu pack mặc định fail. Cung cấp thông báo chi tiết hơn. Cung cấp extensions qua repo VirtualBox Linux, giống như chương trình chính.

Nếu bạn gặp tình huống tương tự, hãy lưu ý rằng mã lỗi rất có thể bao trùm một loạt vấn đề rộng, và bạn không nhất thiết tìm ra root cause cho vấn đề VirtualBox của mình chỉ bằng cách nhìn nó. Thay vào đó, bạn có thể đọc nửa tá bug report hoặc bài đăng forum với cùng điểm xuất phát nhưng giải pháp/kết quả hoàn toàn khác nhau trong từng trường hợp. Bài viết của tôi không ngoại lệ, nhưng tôi đã theo dõi kỹ thông tin system log, cho phép thu hẹp focus và tìm ra thủ phạm thực sự. Vậy là xong cho hôm nay. Take care.

Chúc vui.