GRD2 के माध्यम से डीएसडीटी स्पूफिंग

यह सब क्यों जरूरी है? कारण यह है कि मेरा वर्तमान गीगाबाइट Q1105M लैपटॉप लिनक्स के तहत अस्थिर है। समस्या स्पष्ट रूप से BIOS स्तर पर कहीं है और स्वतःस्फूर्त रूप से स्वतंत्र रूप से कसकर प्रकट होती है। औसतन हर कुछ घंटों में एक बार। और यह निश्चित रूप से ज़्यादा गरम नहीं है और ड्राइवर की विफलता नहीं है। यह केवल BIOS में एक गुठली को अक्षम करके व्यवहार किया जाता है, जो स्पष्ट कारणों के लिए उपयुक्त नहीं है। समस्या के सभी स्रोतों की पूरी खोज के बाद, मैंने आखिरकार खुद को डीएसडीटी वक्र में पाया, जो दूसरे-स्तरीय लैपटॉप निर्माताओं के लिए बहुत विशिष्ट है। वैसे, विशिष्ट लैपटॉप मॉडल पर इंटरनेट पर ऐसी कोई जानकारी नहीं है। संक्षेप में, DSDT BIOS का एक टुकड़ा है जो किसी दिए गए लैपटॉप या मदरबोर्ड जैसे बैकलाइट नियंत्रण या कूलर के लिए विशिष्ट कार्यों के संचालन के लिए जिम्मेदार है और अक्सर विंडोज के साथ काम करने के लिए छोटी गाड़ी और / या उन्मुख होता है। Win7 के तहत भटकाव जैसे हल्के तरीके लोड करते समय काम नहीं करते थे, इसलिए मुझे इसे संपादित करना पड़ा। DSDT में बग्स को ठीक करने से कोई विशेष समस्या नहीं हुई, क्योंकि मैं इस पोस्ट में थोक में इस जानकारी से नहीं निपटूंगा। लेकिन कर्नेल के लिए एक टेबल को खिसकाना अप्रत्याशित रूप से कठिन था। उपयोग की गई प्रणाली आर्क लिनक्स है, तदनुसार उनके मैनुअल पर उन्मुख है। कर्नेल में एक प्रतिस्थापन DSDT डालने के तीन तरीके हैं:
  1. initrd
  2. गिरी को संकलित करें
  3. बूटलोडर के माध्यम से - एक नया तरीका और थोड़ा वर्णित

2.4 गुठली के बाद से पहली विधि का समर्थन नहीं किया गया है, इसलिए यह अच्छा नहीं है। दूसरा वास्तविक है, लेकिन मेरी शर्म की बात है, लेखक ने संशोधित कॉन्फ़िगरेशन के साथ कर्नेल के पुन: संयोजन में महारत हासिल नहीं की। यदि आप चाहते हैं, तो आपको डीएसडीटी से जुड़े और इसे पीकेजीबीयूएलडी को लिखने के लिए अंतर प्राप्त करने की दिशा में खुदाई करने की आवश्यकता है। एक इच्छा होगी - मैं और अधिक विस्तार से बताऊंगा। विधि बेतहाशा बोझिल और असुविधाजनक है और प्रत्येक सिस्टम अपडेट के बाद कर्नेल को फिर से जोड़ने के लिए समय लेती है। तीसरा तरीका सबसे नया और सबसे सुविधाजनक है, लेकिन किसी कारण से आर्क विकी में वर्णित नहीं है। आपको GRUB2 को स्थापित करने और थोड़ा कॉन्फ़िगर करने की आवश्यकता है। यह एक एकल समस्या के बिना मैनुअल के अनुसार सेट किया गया है, GRUB-legacy config स्वचालित रूप से उठाया जाता है। रिबूट, चेक - सब कुछ काम करना चाहिए। GRUB2 को /etc/grub.d निर्देशिका के माध्यम से नहीं बल्कि जंगली तरीके से कॉन्फ़िगर किया गया है। वहां आपको DSDT को जोड़ने के लिए एक विन्यास बनाने की आवश्यकता है:

/etc/grub.d/01_acpi
 #! /bin/sh -e # Uncomment to load custom ACPI table GRUB_CUSTOM_ACPI="/boot/dsdt.aml" # DON'T MODIFY ANYTHING BELOW THIS LINE! libdir=/usr/share . ${libdir}/grub/grub-mkconfig_lib # Load custom ACPI table if [ x${GRUB_CUSTOM_ACPI} != x ] && [ -f ${GRUB_CUSTOM_ACPI} ] \ && is_path_readable_by_grub ${GRUB_CUSTOM_ACPI}; then echo "Found custom ACPI table: ${GRUB_CUSTOM_ACPI}" >&2 prepare_grub_to_access_device `${grub_probe} --target=device ${GRUB_CUSTOM_ACPI}` | sed -e "s/^/ /" cat << EOF acpi (\$root)`make_system_path_relative_to_its_root ${GRUB_CUSTOM_ACPI}` EOF fi 


और उसके बाद
# chmod a+x /etc/grub.d/01_acpi
महत्वपूर्ण स्थान:

यह सब विन्यास के साथ है, ऐसा लगता है। उसके बाद, भागो
# grub-mkconfig -o /boot/grub/grub.cfg
प्रगति का वर्णन करने वाली कई लाइनें होंगी, एक तालिका के बारे में सफलतापूर्वक लिखा जाना चाहिए:
Found custom ACPI table: /boot/dsdt.aml
यदि नहीं, तो कहीं एक त्रुटि है। रिबूट के बाद, सब कुछ ठीक काम करना चाहिए। कैसे करें जांच? गूंगा तरीका सक्रिय DSDT को फिर से जोड़ने की कोशिश करना है। यदि कोई संकलन त्रुटियां नहीं हैं, तो सब कुछ ठीक हो गया।


Source: https://habr.com/ru/post/In165897/


All Articles