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

Khắc phục treo VirtualBox & lỗi Unchecked MSR trên Linux

Linux, VirtualBox treo, lỗi unchecked MSR

Cập nhật: 28 tháng 11, 2025

Chào mừng đến với kỳ mới nhất của sự kỳ quặc. Cụ thể, bạn dùng Linux, nói Ubuntu hay Fedora hay gì. Bạn dùng sản phẩm ảo hóa nào đó. Trong trường hợp tôi, VirtualBox, nhưng vấn đề áp dụng cho một loạt hypervisor. Bạn khởi động máy ảo, và thỉnh thoảng nó giật mình. Dọc đường, toàn bộ hệ thống (host) của bạn trở nên không phản hồi. Tôi nhận thấy vấn đề này từ VirtualBox 7.X trở đi, trên Kubuntu 22.04 trở đi.

Tốn tôi khá nhiều troubleshooting, nhưng tôi nghĩ cuối cùng đã tìm ra nguyên nhân gốc rễ. Việc này, là một vấn đề/bug vô nghĩa khác, xuất phát từ kết hợp: bug kernel, các biện pháp giảm thiểu họ Spectre, xung đột host-hypervisor, và thêm. Nói cách khác, lại một vấn đề nên ngăn người bình thường dùng Linux desktop một cách nghiêm túc. Nhưng ít nhất có những nhân vật hài hước như tôi cố gắng làm nó chạy. Vậy, nếu bạn muốn, hãy xem hướng dẫn này. Theo tôi.

Vấn đề chi tiết

Rất đơn giản. Bạn khởi động máy ảo trong sản phẩm ảo hóa mong muốn. Tại một thời điểm, máy ảo trở nên không phản hồi. Có thể đơn giản như nhấp vào biểu tượng chương trình. Sau đó, bạn cũng nhận thấy desktop host của mình không hoạt động đúng. Nó không còn phản hồi chuột, hoặc một số chương trình không phản hồi trong khi những cái khác vẫn ổn. Đôi khi "vấn đề" tự giải quyết, đôi khi không, và bạn phải hard-boot máy. Cực kỳ phiền toái.

Tôi đối mặt vấn đề này vài tháng nay. Đây là một vấn đề kernel khác, 当然, có lẽ giống loại vô dụng làm Titan của tôi hành xử sai một thời gian, hoặc cái VẪN ảnh hưởng Executive của tôi. Đối với quan tâm, tôi đã link báo cáo thứ tư và thứ sáu, tương ứng. Đối với cả hai laptop này, có nhiều bài viết hơn, hãy xem phần Linux của tôi, nếu thích (báo cáo thứ sáu và thứ mười, không kém).

Tại sao tôi nghĩ đó là vấn đề kernel? Vì nó bắt đầu đột ngột khi tôi vẫn dùng Kubuntu 22.04 và VirtualBox 7.0. Nó tiếp tục với Kubuntu 24.04 và VirtualBox 7.1. Bạn có thể nói thủ phạm là VirtualBox, nhưng điều đó không giải thích đống bug kernel tôi đã khám phá.

Cụ thể, nhật ký hệ thống của tôi có lỗi ngớ ngẩn này:

kernel: unchecked MSR access error: WRMSR to 0xd10 (tried to write 0x00000000000
0ffff) at rIP: 0xffffffff910c6be4 (native_write_msr+0x4/0x40)
kernel: Call Trace:
kernel: <TASK>
kernel: ? show_stack_regs+0x23/0x40
kernel: ? ex_handler_msr+0x10a/0x180
...

Và nếu bạn tìm "unchecked MSR access error: WRMSR", bạn sẽ phát hiện hàng trăm thread, liên quan đến openSUSE, Fedora, Rocky, Ubuntu, Proxmox, và thêm. Đây là vấn đề kernel đúng rồi, và các vấn đề kéo dài từ 2019, hầu hết chưa giải quyết. Wunderbar.

Vì bạn cần hiểu một chút code bên dưới, tóm lại, nó归结为: do các biện pháp giảm thiểu thêm vào kernel (cho những tấn công side-channel và 그런), có thể có xung đột giữa lập lịch kernel và quản lý core của bạn và bất kỳ subsystem nào làm việc tương tự, như hypervisor, đặc biệt nếu bạn dùng paravirtualization và nested paging. Tóm lại, các biện pháp giảm thiểu có thể hơi hiếu chiến, dẫn đến treo hoặc đứng hệ thống.

Cũng lưu ý bên lề, tất cả các biện pháp giảm thiểu kernel này 100% liên quan cho doanh nghiệp, 0% liên quan cho dùng tại nhà. Nhưng Linux desktop là sự trùng hợp của thế giới kernel doanh nghiệp/doanh nghiệp, nên bạn, người dùng cuối, phải chịu đựng vấn đề doanh nghiệp trên máy nhà.

Các giải pháp thay thế

Có ba cách bạn có thể giảm sự xuất hiện của vấn đề này.

Giảm số nhân CPU gán cho máy ảo

Nếu bạn dùng kiểu 8, thử 1-2, có thể 4. Sẽ giúp một chút, nhưng không loại bỏ vấn đề.

Tắt nested paging cho máy ảo bị ảnh hưởng

Điều này sẽ dẫn đến mất hiệu suất đáng kể, nhưng ít nhất máy của bạn sẽ chạy tốt, và hệ thống sẽ không treo. Ví dụ, trong VirtualBox, vào System > Acceleration, và bỏ tích hộp Enable Nested Paging.

Khắc phục treo VirtualBox & lỗi Unchecked MSR trên Linux

Nói chung, có vài tùy chọn bạn có thể thử, xem hoán vị nào tốt nhất:

  • Processor > Extended Features > Enable Nested VT-x/AMD-V.
  • Paravirtualization Interface (mặc định Linux là KVM).
  • Hardware Virtualization > Enable Nested Paging.

Tắt paravirtualization (nested paging)

Điều này có thể làm qua BIOS/UEFI, sẽ tắt trên toàn máy, hoặc bạn có thể tạo file cấu hình cho hypervisor KVM, sẽ ngăn việc dùng nested paging cho tất cả máy ảo. Dưới /etc/modprobe.d, tạo file tên kvm-intel.conf hoặc kvm-amd.conf, tùy kiến trúc xử lý. Bên trong file, thêm:

options kvm-[amd|intel] nested=0

Sau khi tải lại module kernel hypervisor (hoặc reboot), bạn sẽ có trải nghiệm không MSR. Tuy nhiên, tôi không khuyên bạn làm vậy, vì sẽ gây phạt tốc độ cho tất cả workload ảo hóa. Tốt hơn, và nhanh hơn, là bỏ tích nested paging cho từng máy ảo khi cần, hoặc bật/tắt tùy chọn cho đến khi 희망 kernel patch chính thức giải quyết triệt để.

Kết luận

Đây bạn đã có nó. Một vấn đề nhỏ khác gặm pha niềm tin của tôi vào Linux desktop. Tại thời điểm này, sự trừng phạt tích lũy đang trở nên ngớ ngẩn. Rất hay rằng Linux modular và linh hoạt, nhưng tại sao tôi phải quan tâm đến "khách trọ quái" trong đám mây trên máy desktop máu của tôi? Tôi không quan tâm. Và tôi mong đợi các công ty test kernel của họ cho tất cả kịch bản, không chỉ thế giới kinh doanh (nếu có test). Chúng ta đều biết QA Linux desktop là một đùa, nhưng nếu kernel làm gì đó, nên có ít nhất một chút test.

Tôi ghét tuyệt đối các vấn đề bản chất này. Chúng không được kiểm tra NĂM. Chúng là loại vấn đề "bắn súng ngắn" không liên quan đến dùng tại nhà. Chúng đại diện cho một sự lùi lại vô nghĩa. Chúng làm việc dùng hàng ngày khó khăn. Và chúng làm nổi bật không gian desktop phức tạp đến đâu, và về bản chất, nó không phải không gian desktop. Chúc hay, bạn đang dùng một server bị lai ghép với GUI, và một vài đặc quyền nhỏ nên gọi là dùng tại nhà. Thực tế, trong vài tuần tới, tôi sẽ thực sự chứng minh điều này bằng cách tự xây dựng distro nhỏ của riêng tôi. Ừ. Sự thô sơ xuất phát từ việc nó không phải sản phẩm đẹp, êm ái cho người bình thường, như nó nên là. Dù sao, nếu hệ thống của bạn treo khi chạy ảo hóa, hãy kiểm tra log và thử các giải pháp thay thế ở trên. Cho đến khi vấn đề được sửa, có thể là không bao giờ. Tạm biệt.

Chào.