Linux, VirtualBox फ्रीज, अनचेक्ड MSR त्रुटि
मेरे नवीनतम अजीब किस्त में आपका स्वागत है। अर्थात्, आप Linux का उपयोग करते हैं, कहें Ubuntu या Fedora या जो भी। आप किसी प्रकार के वर्चुअलाइजेशन उत्पाद का उपयोग करते हैं। मेरे मामले में, VirtualBox, लेकिन यह मुद्दा हाइपरवाइज़र की एक श्रृंखला पर लागू होता है। आप एक वर्चुअल मशीन शुरू करते हैं, और अब और फिर, यह हकलाता है। रास्ते में, आपका पूरा सिस्टम (होस्ट) अनुत्तरदायी हो जाता है। मैंने इस समस्या को VirtualBox 7.X के बाद से, Kubuntu 22.04 के बाद से देखा है।
मुझे बहुत सारी समस्या निवारण करनी पड़ी, लेकिन मुझे लगता है कि मैंने आखिरकार मूल कारण का पता लगा लिया है। जैसा कि होता है, यह एक और व्यर्थ मुद्दा/बग है, चीजों के संयोजन से उपजा: कर्नेल बग, स्पेक्टर-परिवार शमन, होस्ट-हाइपरवाइज़र टकराव, और फिर कुछ। दूसरे शब्दों में, एक और मुद्दा जो साधारण लोगों को Linux डेस्कटॉप को गंभीर तरीके से उपयोग करने से रोकना चाहिए। लेकिन कम से कम मेरे जैसे मजेदार पात्र हैं जो इसे काम करने की कोशिश करते हैं। तो, यदि आप कृपया, इस ट्यूटोरियल पर एक नज़र डालें। मेरे पीछे।
समस्या का विस्तार
बहुत सरल। आप अपने वांछित वर्चुअलाइजेशन उत्पाद में एक वर्चुअल मशीन शुरू करते हैं। कुछ बिंदु पर, वर्चुअल मशीन अनुत्तरदायी हो जाती है। यह प्रोग्राम आइकन पर क्लिक करने जितना सरल हो सकता है। फिर, आप यह भी देखते हैं कि आपका अपना होस्ट डेस्कटॉप सही ढंग से व्यवहार नहीं कर रहा है। यह अब माउस क्लिक का जवाब नहीं देता, या कुछ प्रोग्राम प्रतिक्रिया नहीं देते जबकि अन्य देते हैं। कभी-कभी "समस्या" स्वयं हल हो जाती है, और कभी-कभी नहीं, और आपको अपनी मशीन को हार्ड-बूट करना होगा। अत्यंत कष्टप्रद।
मैं कुछ महीनों से इस समस्या का सामना कर रहा था। यह एक और कर्नेल समस्या है, निश्चित रूप से, शायद इसी तरह की बेकार फसल जिसने मेरे Titan को कुछ समय के लिए गलत व्यवहार करने पर मजबूर किया, या वह जो अभी भी मेरे Executive को प्रभावित करती है। रुचि रखने वालों के लिए, मैंने इन्हें चौथी और छठी रिपोर्ट से जोड़ा है। दोनों लैपटॉप के लिए, अधिक लेख रहे हैं, इसलिए यदि आप चाहें तो मेरा Linux अनुभाग देखें (छठी और दसवीं रिपोर्ट, कम नहीं)।
मुझे क्यों लगता है कि यह एक कर्नेल समस्या है? खैर, क्योंकि यह अचानक शुरू हुआ जब मैं अभी भी Kubuntu 22.04 और VirtualBox 7.0 का उपयोग कर रहा था। यह Kubuntu 24.04 और VirtualBox 7.1 के साथ जारी है। आप कह सकते हैं कि अपराधी VirtualBox है, लेकिन यह उन कर्नेल बग्स की झड़ी को नहीं समझाएगा जो मैंने उजागर किए हैं।
नामतः, मेरे सिस्टम लॉग में यह मूर्खतापूर्ण त्रुटि है:
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" खोजते हैं, तो आप सैकड़ों थ्रेड्स खोजेंगे, जो openSUSE, Fedora, Rocky, Ubuntu, Proxmox, और फिर कुछ के लिए प्रासंगिक हैं। यह एक कर्नेल समस्या है, और मुद्दे 2019 तक वापस जाते हैं, उनमें से अधिकांश अनसुलझे हैं। वुंडरबार।
चूंकि आपको पर्दे के पीछे के कोड को थोड़ा समझने की आवश्यकता है, संक्षेप में, यह निम्नलिखित पर आता है: कर्नेल में जोड़े गए विभिन्न शमन (उन साइड-चैनल हमलों और ऐसे के लिए) के कारण, आपके कर्नेल शेड्यूलिंग और कोर प्रबंधन और किसी भी सबसिस्टम के बीच एक संघर्ष हो सकता है जो समान चीज करता है, जैसे एक हाइपरवाइज़र, विशेष रूप से यदि आप पैरावर्चुअलाइजेशन और नेस्टेड पेजिंग का उपयोग करते हैं। लंबी कहानी संक्षेप में, शमन थोड़े आक्रामक हो सकते हैं, जिससे सिस्टम फ्रीज या हैंग हो सकते हैं।
साइड नोट पर, ये सभी कर्नेल शमन एंटरप्राइज़ के लिए 100% प्रासंगिक हैं, घरेलू उपयोग के लिए 0% प्रासंगिक। लेकिन Linux डेस्कटॉप एंटरप्राइज़/कॉर्पोरेट कर्नेल दुनिया का एक संयोग है, इसलिए आप, अंतिम उपयोगकर्ता, अपनी होम मशीन पर एंटरप्राइज़ समस्याओं को भुगतना चाहिए।
समाधान
इस मुद्दे की घटनाओं को कम करने के तीन तरीके हैं।
वर्चुअल मशीन को असाइन किए गए CPU कोर की संख्या कम करें
यदि आप 8 जैसा कुछ उपयोग कर रहे हैं, तो 1-2, शायद 4 आज़माएं। यह कुछ हद तक मदद करेगा, लेकिन यह मुद्दे को खत्म नहीं करेगा।
प्रभावित वर्चुअल मशीनों के लिए नेस्टेड पेजिंग अक्षम करें
इससे महत्वपूर्ण प्रदर्शन हानि होगी, लेकिन कम से कम आपकी मशीनें ठीक चलेंगी, और आपका सिस्टम हैंग नहीं होगा। उदाहरण के लिए, VirtualBox में, System > Acceleration पर जाएं, और यहां, उस बॉक्स को अनटिक करें जो कहता है Enable Nested Paging।
सामान्य तौर पर, कई विकल्प हैं जिन्हें आप आज़मा सकते हैं, देखें कि कौन सा क्रमपरिवर्तन सबसे अच्छा काम करता है:
- Processor > Extended Features > Enable Nested VT-x/AMD-V.
- Paravirtualization Interface (Linux डिफ़ॉल्ट KVM है)।
- Hardware Virtualization > Enable Nested Paging.
पैरावर्चुअलाइजेशन (नेस्टेड पेजिंग) अक्षम करें
यह BIOS/UEFI के माध्यम से किया जा सकता है, जो इसे पूरी मशीन पर अक्षम कर देगा, या आप KVM हाइपरवाइज़र के लिए एक कॉन्फ़िगरेशन फ़ाइल बना सकते हैं, जो सभी वर्चुअल मशीनों के लिए नेस्टेड पेजिंग के उपयोग को रोकेगा। /etc/modprobe.d के तहत, अपने प्रोसेसर आर्किटेक्चर के आधार पर kvm-intel.conf या kvm-amd.conf शीर्षक वाली एक फ़ाइल बनाएं। इस फ़ाइल के अंदर, जोड़ें:
options kvm-[amd|intel] nested=0
हाइपरवाइज़र कर्नेल मॉड्यूल को रीलोड करने के बाद (या रीबूट), आपके पास अब MSR-मुक्त अनुभव होगा। हालांकि, मैं इसकी अनुशंसा नहीं करूंगा, क्योंकि यह आपके सभी वर्चुअलाइजेशन वर्कलोड के लिए गति दंड पेश करेगा। यह बेहतर है, और तेज़, प्रत्येक वर्चुअल मशीन के लिए आवश्यकतानुसार नेस्टेड पेज विकल्प को अनटिक करें, या आवश्यकतानुसार विकल्प को सक्षम/अक्षम करें, जब तक कि उम्मीद है कि एक उचित कर्नेल पैच इसे अच्छे के लिए हल नहीं कर देता।
निष्कर्ष
वहां आप जाएं। एक और छोटी समस्या जो Linux डेस्कटॉप में मेरा आत्मविश्वास कम करती है। इस बिंदु पर, संचित सजा हास्यास्पद होती जा रही है। यह बहुत अच्छा है कि Linux इतना मॉड्यूलर और लचीला है, लेकिन मुझे अपने खूनी डेस्कटॉप पर क्लाउड में "दुष्ट" अतिथि किरायेदारों की परवाह क्यों करनी चाहिए? मुझे परवाह नहीं है। और मुझे उम्मीद होगी कि कंपनियां अपने कर्नेल का सभी परिदृश्यों के लिए परीक्षण करेंगी, न कि केवल व्यावसायिक दुनिया (यदि बिल्कुल)। हम सभी जानते हैं कि Linux डेस्कटॉप QA एक मजाक है, लेकिन अगर एक कर्नेल कुछ करता है, तो कम से कम परीक्षण का एक मामूली अंश होना चाहिए।
मैं इस प्रकृति के मुद्दों से बिल्कुल नफरत करता हूं। वे वर्षों तक अनियंत्रित रहते हैं। वे एक शॉटगन ब्लास्ट प्रकार की समस्या हैं जो घरेलू उपयोग के लिए कोई प्रासंगिकता नहीं रखते। मुद्दे एक व्यर्थ रिग्रेशन का प्रतिनिधित्व करते हैं। वे रोजमर्रा के उपयोग को कठिन बनाते हैं। और वे इस बात पर प्रकाश डालते हैं कि डेस्कटॉप स्पेस कितना जटिल है, और कैसे, सार में, यह एक डेस्कटॉप स्पेस नहीं है। सबसे अच्छा, आप एक GUI के साथ एक बास्टर्डाइज़्ड सर्वर का उपयोग कर रहे हैं, और कुछ छोटे भत्ते जिन्हें घरेलू उपयोग कहा जाना चाहिए। वास्तव में, आने वाले हफ्तों में, मैं वास्तव में अपने स्वयं के छोटे डिस्ट्रो को असेंबल करके इसका प्रदर्शन करूंगा। यप। अब, खुरदरापन इस तथ्य से उपजा है कि यह सामान्य लोगों के लिए एक अच्छा आरामदायक उत्पाद नहीं है, जैसा कि होना चाहिए। वैसे भी, अगर आपका सिस्टम वर्चुअलाइजेशन चलाते समय फ्रीज होता है, तो अपने लॉग जांचें और ऊपर सूचीबद्ध समाधान आज़माएं। जब तक समस्या ठीक नहीं हो जाती, जो बहुत अच्छी तरह से कभी नहीं हो सकती। अलविदा।
चीयर्स।