Linux, VirtualBox freeze, unchecked MSR error
อัปเดต: 28 พฤศจิกายน 2025
ยินดีต้อนรับสู่ตอนล่าสุดของความแปลกๆ นั่นคือ คุณใช้ Linux เช่น Ubuntu หรือ Fedora ใช้ผลิตภัณฑ์เสมือนจริง ในกรณีของผมคือ VirtualBox แต่ปัญหานี้ใช้ได้กับ hypervisors หลายตัว คุณเริ่ม VM และบ้างครั้งมันสะดุด ตลอดจนระบบทั้งหมด (host) กลายเป็น unresponsive ผมสังเกตปัญหานี้ตั้งแต่ VirtualBox 7.X ขึ้นไป บน Kubuntu 22.04 ขึ้นไป
ใช้เวลาตรวจสอบมาก แต่ผมคิดว่าพบ root cause แล้ว เกิดจากการรวมกันของหลายอย่าง: kernel bugs, การลดทอน Spectre-family, การชนกันระหว่าง host-hypervisor และอื่นๆ กล่าวคือ อีกปัญหาหนึ่งที่ควรป้องกันคนทั่วไปไม่ให้ใช้ Linux desktop อย่างจริงจัง แต่ยังดีที่มีตัวละครตลกอย่างผมพยายามทำให้มันทำงาน ดังนั้น โปรดดูคู่มือนี้ ตามผมมา
ปัญหาในรายละเอียด
ง่ายมาก คุณเริ่ม VM ในผลิตภัณฑ์เสมือนจริงที่ต้องการ ในบางจุด VM กลายเป็น unresponsive อาจแค่คลิกไอคอนโปรแกรม จากนั้นคุณสังเกตว่า host desktop ของคุณพฤติกรรมไม่ถูกต้อง ไม่ตอบสนองการคลิกเมาส์ หรือโปรแกรมบางตัวไม่ตอบสนอง ในขณะที่บางตัวทำงาน บางครั้ง "ปัญหา" แก้ตัวเอง บางครั้งไม่ และคุณต้อง hard-boot เครื่อง รบกวนมาก
ผมเผชิญปัญหานี้หลายเดือนแล้ว เป็นปัญหา kernel อีกครั้ง โดยเฉพาะพวกที่ทำให้ Titan ของผมพฤติกรรมผิดปกติไปพักหนึ่ง หรืออีกปัญหาที่ยังคงโดน Executive สำหรับผู้สนใจ ผมลิงก์รายงานที่ 4 และ 6 ตามลำดับ สำหรับทั้งสองแล็ปท็อป มีบทความมากกว่านี้ ดูที่ Linux section ของผมได้ (รายงานที่ 6 และ 10)
ทำไมผมคิดว่าเป็นปัญหา kernel? เพราะมันเริ่มทันทีในขณะที่ผมยังใช้ Kubuntu 22.04 และ VirtualBox 7.0 ยังคงต่อเนื่องกับ Kubuntu 24.04 และ VirtualBox 7.1 คุณอาจบอกว่า VirtualBox เป็นผู้กระทำ แต่ไม่สามารถอธิบาย kernel bugs หลายอย่างที่ผมพบได้
ระบบ log ของผมมี error นี้:
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
...
ค้นหา "unchecked MSR access error: WRMSR" จะพบหลายร้อย threads เกี่ยวข้องกับ openSUSE, Fedora, Rocky, Ubuntu, Proxmox และอื่นๆ เป็นปัญหา kernel จริงๆ และ issues ย้อนกลับไปถึง 2019 โดยส่วนใหญ่ unresolved Wunderbar
เนื่องจากคุณต้องเข้าใจโค้ดเบื้องหลังนิดหน่อย ในก้อนผงๆ คือ: เนื่องจาก mitigations ต่างๆ ที่เพิ่มเข้าไปใน kernel (สำหรับ side-channel attacks และอย่างอื่นๆ) มี หรืออาจมี conflict ระหว่าง kernel scheduling และ core management ของคุณ และ subsystem ที่ทำอย่างเดียวกัน เช่น hypervisor โดยเฉพาะหากคุณใช้ paravirtualization และ nested paging สรุปสั้นๆ mitigations อาจ aggressive มากจนทำให้ระบบ freeze หรือ hang
บันทึกเพิ่มเติม: kernel mitigations ทั้งหมดนี้ relevant 100% สำหรับ enterprise, 0% สำหรับ home use แต Linux desktop เป็น coincidence ของ enterprise/corporate kernel world ดังนั้นคุณ end user ต้องทนปัญหา enterprise บนเครื่องบ้าน
วิธีแก้ไขชั่วคราว (Workarounds)
มี 3 วิธีลดความถี่ของปัญหานี้
ลดจำนวน CPU cores ที่มอบให้ VM
หากใช้ 8 cores ลอง 1-2 หรือ 4 จะช่วยบ้าง แต่ไม่ได้ eliminate ปัญหา
ปิด nested paging สำหรับ VM ที่ได้รับผลกระทบ
จะทำให้ performance ตกมาก แต่ VM จะรันได้ดี และระบบจะไม่ hang ตัวอย่างใน VirtualBox ไปที่ System > Acceleration ยกเลิกติ๊ก Enable Nested Paging

โดยรวมมีหลายตัวเลือกที่ลองได้ ดูว่า permutation ไหนดีที่สุด:
- Processor > Extended Features > Enable Nested VT-x/AMD-V.
- Paravirtualization Interface (Linux default คือ KVM).
- Hardware Virtualization > Enable Nested Paging.
ปิด paravirtualization (nested paging)
ทำได้ผ่าน BIOS/UEFI ซึ่งจะปิดบนเครื่องทั้งหมด หรือสร้างไฟล์ config สำหรับ KVM hypervisor ซึ่งจะป้องกันไม่ให้ใช้ nested paging สำหรับ VM ทั้งหมด ภายใต้ /etc/modprobe.d สร้างไฟล์ชื่อ kvm-intel.conf หรือ kvm-amd.conf ตามสถาปัตยกรรมโปรเซสเซอร์ ภายในไฟล์เพิ่ม:
options kvm-[amd|intel] nested=0
หลัง reload hypervisor kernel modules (หรือ reboot) คุณจะได้ประสบการณ์ไม่มี MSR อย่างไรก็ตาม ผมไม่แนะนำให้ทำเพราะจะมี speed penalty สำหรับ virtualization workloads ทั้งหมด ดีกว่าและเร็วกว่าคือ untick nested pages สำหรับแต่ละ VM ตามต้องการ หรือ enable/disable ตามต้องการ จนกว่าจะมี kernel patch ที่แก้ไขอย่างถาวร
ข้อสรุป
นี่คือคำตอบ อีกปัญหาเล็กๆ ที่กัดกร่อนความเชื่อมั่นของผมใน Linux desktop ณ จุดนี้ accumulated punishment กำลังกลายเป็น ridiculous Linux มี modular และ flexible ดี แต่ทำไมผมต้อง care เกี่ยวกับ "rogue" guest tenants ใน cloud บนเครื่องเดสก์ท็อปของผม? ผมไม่สน และผมคาดหวังว่าบริษัทจะทดสอบ kernels สำหรับทุกสถานการณ์ ไม่ใช่แค่ business world (ถ้าทดสอบจริง) เรารู้ว่า Linux desktop QA เป็นเรื่องตลก แต่ถ้า kernel ทำอะไร ควรมีการทดสอบอย่างน้อยนิดหน่อย
ผมเกลียดปัญหาแบบนี้อย่างยิ่ง มันไม่ได้รับการตรวจสอบเป็นปีหลายปี เป็นปัญหาแบบ shotgun blast ที่ไม่เกี่ยวข้องกับ home use มันเป็น regression ที่ไร้ประโยชน์ ทำให้การใช้งานทุกวันยากลำบาก และเน้นย้ำว่า desktop space ซับซ้อนเกินไป และในความเป็นจริง มันไม่ใช่ desktop space ในที่สุด คุณใช้ bastardized server พร้อม GUI และ perks เล็กน้อยที่ควรเรียกว่า home use จริงๆ ในอาทิตย์หน้า ผมจะแสดงให้เห็นโดยการประกอบ distro ของตัวเอง Yup ตอนนี้ความขรุขระมาจากการที่มันไม่ใช่ผลิตภัณฑ์ที่สบายสบายสำหรับคนทั่วไป ไปจนถึงที่ควรเป็น อยู่ดีๆ หากระบบของคุณ freeze ขณะรัน virtualization ตรวจสอบ logs และลอง workarounds ข้างต้น จนกว่าปัญหาจะได้รับการแก้ไข ซึ่งอาจเป็นไม่มีวันก็ได้ แล้วพบกันใหม่
ขอแสดงความนับถือ