
Linux सिस्टम पर सुरक्षा कमजोरियों को कम करने और कार्यात्मक समस्याओं के समाधान के लिए प्रोसेसर फ़र्मवेयर को अपडेट करने हेतु आधिकारिक Intel microcode डेटा फ़ाइलें।
इंटेल प्रोसेसर माइक्रोकोड अपडेट (MCU) पैकेज सुरक्षा सलाहकारों (security advisories) और कार्यात्मक मुद्दों, जिसमें एराटा (errata) शामिल है, के लिए अपडेट जारी करने की एक प्रणाली प्रदान करता है। इसके अलावा, MCU SGX एन्क्लेव शुरू करने (उन प्रोसेसरों पर जो SGX सुविधा का समर्थन करते हैं), जटिल व्यवहार (जैसे कि assists) लागू करने, और अधिक के लिए जिम्मेदार हैं। MCU लागू करने का पसंदीदा तरीका सिस्टम BIOS का उपयोग करना है। इंटेल के कुछ प्रोसेसरों के लिए, MCU को ऑपरेटिंग सिस्टम का उपयोग करके रनटाइम पर भी अपडेट किया जा सकता है। यहां साझा किया गया इंटेल माइक्रोकोड पैकेज उन प्रोसेसरों के लिए अपडेट शामिल करता है जो MCU के OS लोडिंग का समर्थन करते हैं।
अपने माइक्रोकोड को अपडेट करने से CPU में कुछ संभावित सुरक्षा कमजोरियों को कम करने में मदद मिल सकती है, साथ ही कुछ कार्यात्मक मुद्दों को भी संबोधित किया जा सकता है जो, उदाहरण के लिए, अप्रत्याशित सिस्टम व्यवहार जैसे हैंग, क्रैश, अप्रत्याशित रिबूट, डेटा त्रुटियाँ आदि उत्पन्न कर सकते हैं। इंटेल प्रोसेसर पर MCU लागू करने के बारे में अधिक जानने के लिए, माइक्रोकोड अपडेट गाइडेंस देखें।
यह पैकेज Linux वितरकों के लिए उनके OS रिलीज़ में शामिल करने हेतु प्रदान किया गया है। इंटेल OS विक्रेता अपडेट तंत्र का उपयोग करके नवीनतम MCU प्राप्त करने की अनुशंसा करता है। एक अच्छा प्रारंभिक बिंदु OS और सॉफ्टवेयर विक्रेता है। विशेषज्ञ उपयोगकर्ता OS विक्रेता तंत्र के बाहर सीधे अपने माइक्रोकोड को अपडेट कर सकते हैं। हालांकि, यह विधि जटिल है और गलत तरीके से किए जाने पर त्रुटियाँ उत्पन्न कर सकती है। ऐसी त्रुटियों में सिस्टम फ्रीज़, बूट करने में असमर्थता, प्रदर्शन प्रभाव, लॉजिकल प्रोसेसर द्वारा अलग-अलग अपडेट लोड करना, और कुछ अपडेट का प्रभावी न होना शामिल हो सकता है, लेकिन यह इन्हीं तक सीमित नहीं है। परिणामस्वरूप, यह विधि केवल विशेषज्ञ उपयोगकर्ताओं द्वारा ही आज़माई जानी चाहिए।
MCU को BIOS से लोड करना सबसे अच्छा होता है। कुछ MCU केवल BIOS से ही लागू किए जाने चाहिए। ऐसे MCU इस पैकेज में कभी शामिल नहीं किए जाते क्योंकि वे OS वितरण के लिए उपयुक्त नहीं होते। एक OEM को माइक्रोकोड अपडेट पैकेज प्राप्त हो सकते हैं जो BIOS में शामिल करने के लिए इस पैकेज में निहित सामग्री का एक सुपरसेट होते हैं।
OS विक्रेता एक ऐसा MCU प्रदान करना चुन सकते हैं जिसे कर्नेल प्रारंभिक लोडिंग (early loading) के लिए उपयोग कर सके। उदाहरण के लिए, Linux कर्नेल बूट अनुक्रम में बहुत प्रारंभ में ही MCU लागू कर सकता है। उन स्थितियों में जहां BIOS अपडेट उपलब्ध नहीं है, प्रारंभिक लोडिंग प्रोसेसर माइक्रोकोड को अपडेट करने का अगला सबसे अच्छा विकल्प है। पावर रीसेट पर माइक्रोकोड स्थितियाँ रीसेट हो जाती हैं, इसलिए बूट प्रक्रिया के दौरान हर बार MCU लोड करना आवश्यक है।
MCU लोड करने के लिए initrd विधि का उपयोग करने की अनुशंसा की जाती है क्योंकि यह विधि अधिकतम कवरेज के लिए सबसे प्रारंभिक समय पर MCU लोड करेगी। जो सिस्टम डाउनटाइम सहन नहीं कर सकते, वे बिना रिबूट के चल रहे सिस्टम को अपडेट करने के लिए लेट-लोड विधि का उपयोग कर सकते हैं।
प्रोसेसर सिग्नेचर एक संख्या है जो इंटेल प्रोसेसर के मॉडल और संस्करण की पहचान करती है। इसे CPUID instruction का उपयोग करके, lscpu कमांड के माध्यम से, या /proc/cpuinfo की सामग्री से प्राप्त किया जा सकता है। इसे आमतौर पर 3 फ़ील्ड के रूप में प्रस्तुत किया जाता है: फैमिली, मॉडल और स्टेपिंग।
उदाहरण के लिए, यदि कोई प्रोसेसर CPUID instruction से "0x000906eb" मान लौटाता है:
संबंधित Linux स्वरूपित फ़ाइल नाम "06-9e-0b" होगा, जहां:
एक प्रोसेसर को कई प्लेटफ़ॉर्म प्रकारों के लिए लागू किया जा सकता है। इंटेल प्रोसेसरों में MSR(17H) में 3-बिट प्लेटफ़ॉर्म ID फ़ील्ड होती है जो अधिकतम 8 प्रकारों के लिए प्लेटफ़ॉर्म प्रकार निर्दिष्ट करती है। किसी निर्दिष्ट प्रोसेसर मॉडल के लिए एक MCU फ़ाइल कई प्लेटफ़ॉर्म का समर्थन कर सकती है। MCU द्वारा समर्थित प्लेटफ़ॉर्म ID एक 8-बिट मास्क है जहां प्रत्येक सेट बिट एक प्लेटफ़ॉर्म प्रकार को इंगित करता है जिसे MCU समर्थन करता है। प्रोसेसर की प्लेटफ़ॉर्म ID को Linux में msr-tools से rdmsr का उपयोग करके पढ़ा जा सकता है।
intel-ucode निर्देशिका में family-model-stepping प्रारूप में नामित बाइनरी MCU फ़ाइलें होती हैं। यह फ़ाइल प्रारूप अधिकांश आधुनिक Linux वितरणों द्वारा समर्थित है। यह आमतौर पर /lib/firmware निर्देशिका में स्थित होती है और नीचे दिए गए लेट-लोड अपडेट निर्देशों का पालन करके माइक्रोकोड रीलोड इंटरफ़ेस के माध्यम से अपडेट की जा सकती है।
प्रारंभिक लोडिंग initrd को अपडेट करने के लिए, प्रारंभिक लोडिंग के लिए MCU फ़ाइलों को पैकेज करने के तरीके के बारे में अपने Linux वितरण से परामर्श करें। कुछ वितरण update-initramfs या dracut का उपयोग करते हैं। नीचे दी गई लेट-लोड प्रक्रिया को आज़माने से पहले यह सुनिश्चित करने के लिए OS विक्रेता की अनुशंसित विधि का उपयोग करें कि MCU फ़ाइल प्रारंभिक लोडिंग के लिए अपडेट की गई है।
intel-ucode पैकेज को सिस्टम में अपडेट करने के लिए:
/sys/devices/system/cpu/microcode/reload की उपस्थिति सुनिश्चित करें$ git clone https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git या$ wget https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/main.zipintel-ucode निर्देशिका को /lib/firmware में कॉपी करें, /lib/firmware/intel-ucode/ में मौजूद फ़ाइलों को अधिलेखित करते हुए$ echo 1 > /sys/devices/system/cpu/microcode/reload$ sudo update-initramfs -u$ sudo reboot$ dmesg | grep microcode या$ cat /proc/cpuinfo | grep microcode | sort | uniqयदि आप MCU लागू करने के लिए OS विक्रेता विधि का उपयोग कर रहे हैं, तो उपरोक्त चरण अपडेट प्रक्रिया के दौरान स्वचालित रूप से किए जा सकते हैं।
intel-ucode-with-caveats निर्देशिका में ऐसे MCU शामिल हैं जिन्हें विशेष हैंडलिंग की आवश्यकता होती है। BDX-ML MCU इस निर्देशिका में प्रदान किया गया है क्योंकि इसे Linux कर्नेल में विशेष कमिट की आवश्यकता होती है, अन्यथा इसे अपडेट करने से अप्रत्याशित सिस्टम व्यवहार हो सकता है। OS विक्रेताओं को यह सुनिश्चित करना चाहिए कि लेट-लोडिंग के लिए BDX-ML MCU को पैकेज करने से पहले लेट लोडर पैच (linux-kernel-patches में प्रदान किए गए) वितरण में शामिल हों।
linux-kernel-patches निर्देशिका में कर्नेल पैच शामिल हैं जो MCU लागू करने से संबंधित विभिन्न मुद्दों को संबोधित करते हैं।
$ printf "%x\n" <number_to_convert_to_hex>$ iucode_tool -l intel-ucode | grep -wF sig (iucode_tool पैकेज आवश्यक है)$ od -t x4 <Family-Model-Stepping> <Family-Model-Stepping> में निर्दिष्ट माइक्रोकोड बाइनरी हेडर के पहले 16 बाइट्स पढ़ेगा। तीसरा ब्लॉक माइक्रोकोड संस्करण है। उदाहरण के लिए:$ od -t x4 06-55-04
0000000 00000001 *02000065* 09052019 00050654
विवरण के लिए license फ़ाइल देखें।
विवरण के लिए security.md फ़ाइल देखें।
विवरण के लिए releasenote.md फ़ाइल देखें।
इंटेल तकनीकों की विशेषताएं और लाभ सिस्टम कॉन्फ़िगरेशन पर निर्भर करते हैं और सक्षम हार्डवेयर, सॉफ़्टवेयर या सेवा सक्रियण की आवश्यकता हो सकती है। प्रदर्शन सिस्टम कॉन्फ़िगरेशन के अनुसार भिन्न होता है। अपने सिस्टम निर्माता या खुदरा विक्रेता से जांचें या www.intel.com पर अधिक जानें।
कोई भी उत्पाद या घटक पूर्ण रूप से सुरक्षित नहीं हो सकता।
यहां प्रदान की गई सभी जानकारी बिना सूचना के बदली जा सकती है। नवीनतम Intel उत्पाद विनिर्देशों और रोडमैप प्राप्त करने के लिए अपने Intel प्रतिनिधि से संपर्क करें।
वर्णित उत्पादों और सेवाओं में एराटा के रूप में ज्ञात दोष या त्रुटियाँ हो सकती हैं जो प्रकाशित विनिर्देशों से विचलन उत्पन्न कर सकती हैं। वर्तमान विशेषता वाले एराटा अनुरोध पर उपलब्ध हैं।
Intel ये सामग्रियाँ बिना किसी प्रत्यक्ष या निहित वारंटी के "जैसी हैं" (as-is) प्रदान करता है।
© Intel Corporation. Intel, Intel लोगो, और अन्य Intel चिह्न Intel Corporation या इसकी सहायक कंपनियों के ट्रेडमार्क हैं।
*अन्य नाम और ब्रांड अन्य लोगों की संपत्ति के रूप में दावा किए जा सकते हैं।
| आरक्षित | विस्तारित फैमिली | विस्तारित मॉडल | आरक्षित | प्रोसेसर प्रकार | फैमिली कोड | मॉडल संख्या | स्टेपिंग ID |
|---|
| 31:28 | 27:20 | 19:16 | 15:14 | 13:12 | 11:8 | 7:4 | 3:0 |
| xxxx | 00000000b | 1001b | xx | 00b | 0110b | 1110b | 1011b |