संभव लापता frmware / lib / फर्मवेयर / i915


75

मैंने अपने लैपटॉप को 4.8 कर्नेल के लिए अपग्रेड किया है और इस प्रक्रिया के दौरान निम्नलिखित चेतावनी सामने आई।

update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

ये मेरे लिए थोड़ा अजीब लगता है क्योंकि मेरा CPU i7-6700HQ है जो एक रोशनदान है और मेरी समझ यह है कि ये अलग-अलग CPU के लिए हैं? मैंने पूर्व में दिए निर्देशों का पालन ​​किया जैसा कि पिछले दिनों मैंने अपने सीपीयू परिवार के बारे में चेतावनी दी थी।

क्या इन चेतावनियों को मैं सिर्फ अनदेखा करना चाहिए, या क्या मुझे उन सीपीयू परिवारों के लिए guc / dmc ड्राइवर स्थापित करने चाहिए?


अपनी मौजूदा गुठली न निकालें। ताकि अगर आप नवीनतम गुठली के साथ किसी भी समस्या का सामना करते हैं, तो आप पुराने लोगों को वापस कर सकते हैं।
राफेल

3
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह प्रश्न एक असमर्थित कर्नेल के बारे में है।
पायलट 6

वे संदेश विभिन्न सीपीयू के लिए हैं, और आपको स्काइलेक सीपीयू के लिए नहीं मिल रहा है, इसलिए आप उन्हें अनदेखा करना ठीक है।
डग स्माइथीज

@ पायलट 6 मैं पूछ सकता हूं कि यह ऑफ-टॉपिक क्यों है? यह उबंटू 16.04 और 4.8 कर्नेल उबंटू कर्नेल पीपीए से स्थापित है?
मलाची

2
क्योंकि Ubuntu 16.10 लिनक्स कर्नेल 4.8 का उपयोग करता है अब मैं इस प्रश्न को फिर से खोलने के लिए नामित करता हूं। चेतावनी संदेश कई उपयोगकर्ताओं को प्रभावित करते हैं और यह थ्रेड बग रिपोर्ट में संदर्भित किया जाता है: bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1611124
WinEunuuchs2Unix

जवाबों:


115

20 मई, 2019 अपडेट

अपने प्रश्न का उत्तर देने के लिए आपको एक ऐसे प्रोसेसर के लिए ड्राइवरों को अपडेट करने की आवश्यकता नहीं है जिसे आप नहीं चला रहे हैं लेकिन जब आप ऐसा करते हैं तो चेतावनी को गायब होते देखना अच्छा है।

आज मुझे ये चेतावनी मिली:

update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cnl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/icl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915

मैंने ब्लब्स डाउनलोड किया (अगले भाग में वर्णित है) और फिर इस्तेमाल किया:

$ sudo cp ~/Downloads/*.bin /lib/firmware/i915/

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.0.1-050001-generic

अब मेरे स्काई लेक ( skl) के ड्राइवर अप टू डेट हैं और मैं इंटरनेट पर सुझाए गए नवीनतम कर्नेल पैरामीटर आज़मा सकता हूं। भविष्य के प्रोसेसर केबी ( लेकkbl ), तोप झील ( cnl) और आइस लेक ( icl) के लिए चेतावनी संदेश जीवन को कम तनावपूर्ण बना रहे हैं।


26 मई, 2018 अपडेट

6 अगस्त 2018 को मामूली संशोधन।

"बूँद" का नया डाउनलोड स्क्रीन

हाल ही में इंटेल ने एक नया डाउनलोड पेज और नया वेब पेज लेआउट बनाया है:

इंटेल i915 फर्मवेयर ब्लब्स

डाउनलोड फ़ाइलों को अब फर्मवेयर ब्लब्स कहा जाता है जो फर्मवेयर ड्राइवरों के लिए नई बात है । यह B inary L arge OB ject (BLOB) के लिए है।

ड्राइवर प्रोसेसर द्वारा क्रमबद्ध होते हैं:

  • bxt ब्रोक्सटन, 2016 में रद्द, चेरी ट्रेल प्रोसेसर के उत्तराधिकारी
  • kbl कबाइलक, 7 वीं पीढ़ी, उदाहरण के लिए i7-7700
  • skl स्काइलेक, 6 वीं पीढ़ी, जैसे i7-6700

तब ड्राइवरों को उपसमूह द्वारा आयोजित किया जाता है (पूर्ण विवरण यहां ):

  • GUC - GUC विभिन्न ग्राफिक्स समानांतर इंजन पर ग्राफिक्स काम का बोझ शेड्यूलिंग प्रदर्शन करने के लिए बनाया गया है।
  • DMC - DMC अतिरिक्त ग्राफिक्स कम-पावर आइडल स्टेट्स प्रदान करता है।
  • Huc - Huc GPU को सीपीयू से मीडिया कार्यों में से कुछ ऑफलोड करने के लिए बनाया गया है।

ड्राइवर को त्रुटि संदेश मिलाएं

त्रुटि संदेश की तुलना करें जो आप प्राप्त कर रहे हैं update-initramfsया update-grubलापता चालक को खोजने के लिए। आपके उदाहरण में संदेश " /lib/firmware/i915/kbl_guc_ver9_14.bin" था, इसलिए आप kbl_guc_ver9_14.binऊपर दिखाए गए वेब पेज में कबीलेक सीयूसी: नामक गायब हैं । आप नया नहीं चाहते हैं:kbl_guc_ver9_39.bin

डाउनलोड ड्राइवर की जरूरत

पिछले संस्करणों की तरह स्थापना स्क्रिप्ट नहीं है। बस लापता चालक (बूँद) को हाइलाइट करें और उस पर क्लिक करें। यह स्क्रीन दिखाई देती है:

Intel i915 ड्राइवर डाउनलोड। Png

प्रारंभ में आप केवल "हेक्स डंप" देखते हैं लेकिन प्लेन शीर्षक वाले लिंक पर क्लिक करने के बाद एक डाउनलोड विंडो ऊपर के रूप में दिखाई देती है।

"फ़ाइल सहेजें" पर क्लिक करें

सरल के साथ ड्राइवर स्थापित करें sudo cp(कॉपी कमांड)

डाउनलोड करने के बाद, इंस्टॉलेशन एक सरल sudo cp(कॉपी कमांड) है और इसमें कोई जटिल tarकमांड, या ./script_nameइंस्टॉलेशन चरण नहीं हैं।

जल्दी स्थापित करें

cd ~/Downloads
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

महत्वपूर्ण: बदलें kbl_guc_ver9_14.binऔर bxt_guc_ver8_7.binलापता चालक के नाम आप डाउनलोड की के साथ ऊपर।

देखा! नया ड्राइवर लगा है। लापता इंटेल i915 ड्राइवरों के लिए पिछली स्थापना विधियों की तुलना में बहुत सरल!

टीएल; डीआर अन्वेषक स्थापना

मेरे पास पहले से ही ड्राइवर स्थापित था। यह लंबी स्थापना विधि आपको BLOB की नकल करने से पहले और बाद के प्रभावों का अंदाजा देती है :

$ sudo updatedb
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2017-10-26  /lib/firmware/i915/kbl_guc_ver9_14.bin
$ diff /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915/kbl_guc_ver9_14.bin
# Blank line appears here signifying no differences from previous version
$ sudo cp /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin /lib/firmware/i915
$ llocate kbl_guc_ver9_14.bin
ACCESS      OWNER  GROUP  SIZE    MODIFIED    NAME (updatdb last ran: 2018-05-26 12:07:57)
-rw-rw-r--  rick   rick   142656  2018-05-26  /home/rick/Downloads/kbl_guc_ver9_14.bin
-rw-rw-r--  rick   rick   142656  2017-02-24  /home/rick/Downloads/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
-rw-r--r--  root   root   142656  2018-05-26  /lib/firmware/i915/kbl_guc_ver9_14.bin

का प्रयोग करें पता लगाने के स्थान पर नीचे आदेश llocate


14 फरवरी, 2017 - इंटेल ने ड्राइवरों को जारी किया

इस बग रिपोर्ट आज (अनुसार डब्ल्यू: मॉड्यूल i915 के लिए संभव लापता फर्मवेयर /lib/firmware/i915/kbl_guc_ver9_14.bin ) इंटेल आवश्यक जारी किया है Kabylake और Broxton उनके (पर चालकों https://01.org/linuxgraphics/downloads/ फर्मवेयर ) वेब पेज:

लिनक्स ड्राइवरों के लिए इंटेल ग्राफिक्स

Kabylake ( GuC - Ver 9.14 ) और ( DMC - Ver 1.01 ) और Broxton ( GuC - Ver 8.7 ) के लिए लापता ड्राइवर डाउनलोड करें । इन में हैं .tar.gzऔर .tar.bz2स्वरूप।

"टार" प्रारूप में ड्राइवरों को स्थापित करें

यद्यपि आप install.shस्क्रिप्ट चला सकते हैं ये निर्देश सबसे आसान हैं।

डाउनलोड निर्देशिका में बदलें और सत्यापित फ़ाइलें हैं:

:~$ cd Downloads

:~/Downloads$ ll *tar*
-rw-rw-r-- 1 rick rick 69329 Feb 14 21:05 bxtgucver87.tar.gz
-rw-rw-r-- 1 rick rick  4338 Feb 14 21:06 kbldmcver101.tar.bz2
-rw-rw-r-- 1 rick rick 70402 Feb 14 21:06 kblgucver914.tar.gz

संपीड़ित टार फ़ाइलों को निकालें:

:~/Downloads$ tar -zxvf bxtgucver87.tar.gz
firmware/bxt/guc/bxt_guc_ver8_7/
firmware/bxt/guc/bxt_guc_ver8_7/install.sh
firmware/bxt/guc/bxt_guc_ver8_7/ReleaseNotes.txt
firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin

:~/Downloads$ tar -xjvf kbldmcver101.tar.bz2
kbl_dmc_ver1_01/
kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin
kbl_dmc_ver1_01/install.sh
kbl_dmc_ver1_01/ReleaseNotes.txt

:~/Downloads$ tar -zxvf kblgucver914.tar.gz
firmware/kbl/guc/kbl_guc_ver9_14/
firmware/kbl/guc/kbl_guc_ver9_14/install.sh
firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
firmware/kbl/guc/kbl_guc_ver9_14/ReleaseNotes.txt

फ़ाइलों को कॉपी करें और initramfs को अपडेट करें

:~/Downloads$ sudo cp -t /lib/firmware/i915/ firmware/bxt/guc/bxt_guc_ver8_7/bxt_guc_ver8_7.bin kbl_dmc_ver1_01/kbl_dmc_ver1_01.bin firmware/kbl/guc/kbl_guc_ver9_14/kbl_guc_ver9_14.bin
:~/Downloads$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.9-040909-generic

नोटिस त्रुटि (चेतावनी) संदेश चले गए हैं!

काम की फाइलें निकालें

:~/Downloads$ rm -r firmware kbl_dmc_ver1_01 *.tar.*

संदर्भ के लिए ऐतिहासिक (मूल) पोस्ट

मेरे पास कर्नेल के 4.6.3, 4.7.1, 4.7.2, 4.7.3 और 4.7.5 के लिए लापता i915 ड्राइवरों पर दो चेतावनी संदेश हैं। मैंने उन्हें नजरअंदाज कर दिया है और मेरे HD4000 इंटेल इंटीग्रेटेड ग्राफिक्स के साथ चीजें ठीक हुई हैं। मेरी इच्छा है कि यही बात एनवीडिया और नौव्यू के बारे में भी कही जा सकती है।

जैसा कि आपके लिंक में एक उत्तर में कहा गया है कि आप इंटेल की वेबसाइट पर जा सकते हैं सबसे अधिक लिनक्स लिनक्स ग्राफिक्स ड्राइवरों पर: इंटेल-लाइनक्स-ग्राफिक्स-फर्मवर । हालाँकि जब मैंने उस साइट को कुछ हफ़्ते पहले पढ़ा था तो मैं उन सभी संभावित चीज़ों से चिंतित था जो अलग-अलग परिदृश्यों के तहत गलत हो सकती हैं इसलिए मैंने चुना।

क्या आपने 24 सितंबर से 4.8 रिलीज़ उम्मीदवार 6 स्थापित किया था? मेरा मानना ​​है कि उबंटू में यह सबसे ज्यादा चालू है। आपको जवाब देने की जरूरत नहीं है, लेकिन मैं उत्सुक हूं कि आप 4.7.5 के बजाय 4.8 के साथ क्यों गए, यानी चीजों को ठीक करने के लिए आपको क्या अंतर चाहिए।

संपादित करें - 19 अक्टूबर, 2016

अब कर्नेल संस्करण 4.8.1 (असली संस्करण और जारी नहीं उम्मीदवार) का उपयोग करते हुए एक सप्ताह से अधिक समय तक और चीजें अच्छी तरह से काम कर रही हैं। यह हालांकि Ubuntu 16.04 के अंतर्गत है। Ubuntu 16.10 अक्टूबर 13 को जारी किया गया था और यह कर्नेल संस्करण 4.8.0 मुझे विश्वास है कि उपयोग कर रहा है।

इस उत्तर को अपडेट रखने की मेरी योजना नहीं है, लेकिन मैं यह अनुमान लगाना चाहता था कि 4.8 रिलीज उम्मीदवारों को समस्या हो सकती है। असली संस्करण नहीं है।

एडिट - 2 फरवरी, 2017

अब कर्नेल संस्करण 4.9.5 मेनलाइन संस्करण चल रहा है जो इस समय Ubuntu 16.04 ने अपडेट किया है कि यह कर्नेल 4.4.0-59 है। इंटेल ने इसे लिनक्स ड्राइवरों के लिए इंटेल ग्राफिक्स के लिए लिंक बदल दिया है और मैंने ऊपर नया लिंक अपडेट किया है।

sudo update-initramfs -uजब कर्नेल संस्करण> 4.8 (Ubuntu 16.10 और Ubuntu 17.04) द्वारा उत्पन्न चेतावनी संदेशों के बारे में प्रश्न अभी भी बने हुए हैं :

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

जैसा कि बग रिपोर्ट ( Bugs.launchpad.net - linux फर्मवेयर बग ) में कहा गया है कि ड्राइवर बस मौजूद नहीं होते हैं और तब तक नहीं रहेंगे जब तक कि "केबी लेक" नामक एक भविष्य की चिप जारी नहीं हो जाती।

चेतावनी संदेशों को दूर करें

चेतावनी संदेश को दूर करने के लिए मैंने निम्नलिखित कार्य किए:

$ sudo cp assembly/hello /lib/firmware/i915/kbl_dmc_ver1_01.bin
$ sudo cp assembly/hello /lib/firmware/i915/kbl_guc_ver9_14.bin
$ sudo cp assembly/hello /lib/firmware/i915/bxt_guc_ver8_7.bin
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.5-040905-generic

देखा! और कोई चेतावनी संदेश नहीं।

कार्यक्रम "हैलो" एक 504 बाइट असेंबलर प्रोग्राम है जो "हैलो वर्ल्ड!" कहता है। आप त्रुटि संदेशों में दिए गए फर्मवेयर बायनेरी के लिए किसी भी छोटे निष्पादन योग्य को कॉपी कर सकते हैं। जब इंटेल अंततः उन्हें जारी करता है तो सॉफ्टवेयर अपडेटर उन्हें वास्तविक संस्करणों के साथ बदल देगा।

लिनक्स वेबसाइट के लिए इंटेल ग्राफिक्स कैसे नेविगेट करें

यह टिप्पणियों के माध्यम से पूछा गया कि नई इंटेल वेबसाइट ( 01.org - लिनक्स ग्राफिक्स डाउनलोड ) के भीतर कैसे नेविगेट करें जो इस स्क्रीन को प्रस्तुत करता है:

लिनक्स के लिए इंटेल ग्राफिक्स 1

Ubuntu 16.04खोज फ़ील्ड में टाइप करें और Filterबटन पर क्लिक करें।

Ubuntu 16.10 के लिए पहले परिणाम का चयन करें। हमारे मामले में Ubuntu 16.04 दूसरा परिणाम चुनें INTEL GRAPHICS UPDATE TOOL FOR LINUX* OS V2.0.2और यह स्क्रीन दिखाई देती है:

लिनक्स के लिए इंटेल ग्राफिक्स 2

मेरे मामले में मैंने Ubuntu 16.04 64-बिट का चयन किया, जिसने फ़ाइल intel-graphics-update-tool_2.0.2_amd64.debको मेरी ~/Downloadsनिर्देशिका में डाउनलोड किया ।

अगला चरण टर्मिनल खोलना और उपयोग करना है:

cd Downloads
sudo dpkg -i intel*.deb

ध्यान दें: इंटेल पूर्वजों ttf फ़ॉन्ट का उपयोग करता है और यदि आपका सिस्टम आपके सिस्टम में नहीं है तो आपका इंस्टॉलेशन विफल हो जाएगा। इस बिंदु पर आपको उपयोग करने की आवश्यकता है:

sudo apt -f install
sudo apt update
sudo apt upgrade

अब आप Intel Graphics for Linux Updaterटूल को इस स्क्रीन शो के रूप में चला सकते हैं :

लिनक्स के लिए इंटेल ग्राफिक्स 3

Ubuntu के लिए इंटेल हस्ताक्षर जोड़ें

इस दौरान apt-get updateआप इस तरह चेतावनी / त्रुटि संदेश देख सकते हैं:

W: GPG error: https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 56A3DEF863961D39
E: The repository 'https://download.01.org/gfx/ubuntu/16.04/main xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

आपको इंटेल के हस्ताक्षरों को जोड़ने की आवश्यकता होगी:

wget --no-check-certificate https://download.01.org/gfx/RPM-GPG-KEY-ilg-4 -O - | \
sudo apt-key add -

फिर उबंटू में अपडेट करें:

sudo apt update
sudo apt upgrade

1
कुछ समय के लिए चेतावनी दी गई है। मैं उस सटीक संस्करण के बारे में गलत हो सकता हूं जिस पर वे बाहर आए थे। जहाँ तक क्या गलत हो सकता है वेब पेज "अगर ऐसा होता है तो आपको ऐसा करना होगा"। मुझे अभी दौड़ना है लेकिन मैं इसे फिर से समीक्षा कर सकता हूं और यदि आप चाहें तो उत्तर को बाद में अपडेट कर सकते हैं। मैं 4.8.x श्रृंखला "रिलीज के उम्मीदवारों" के रूप में 4.7 के रूप में स्थिर संस्करणों को देखता हूं। नए बग और कर्नेल रेजिमेंट के लिए अतिसंवेदनशील। लेकिन मैं कर्नेल विशेषज्ञ नहीं हूं, सिर्फ एक शौक / उत्साही हूं।
WinEunuuchs2Unix

1
इस दृष्टिकोण (26 मई, 2018 अपडेट) ने मेरे लिए त्रुटिपूर्ण काम किया। इन फ़र्मवेयरों को लिनक्स-फ़र्मवेयर पैकेज में शामिल करने का दावा फिलहाल स्पष्ट रूप से गलत है।
एल्डर गीक

1
@ElderGeek मैं अभी तक वेलैंड के साथ नहीं खेला है, लेकिन जल्द ही यह खोज xrandrचमक और गामा स्थापित करने के बराबर है।
विनयुनुच्स

1
@ WinEunuuchs2Unix आपको यह दिलचस्प लग सकता है । मैंने बहुत सारी चीजें पाईं जो वेलैंड के बारे में उत्साहित होने की उम्मीद के अनुसार काम करने में विफल रहीं। मुझे काम करने के लिए अपने सिस्टम की जरूरत है।
एल्डर गीक

2
@ElderGeek ऐसा प्रतीत होता है कि वेलैंड को अभी भी बहुत काम करने की आवश्यकता है। यहाँ इंटेल i915 कर्नेल पैरामीटर हैं जिनके बारे में मैंने पढ़ा है, लेकिन यह याद नहीं रख सकता कि:i915.enable_rc6=0 i915.enable_psr=0 i915.preliminary_hw_support=1 i915.enable_hd_vgaarb=1 i915.enable_guc_loading=1 i915.enable_guc_submission
WinEunuuchs2Unix

6

आप लापता कर्नेल फर्मवेयर को इंटेल वेबसाइट https://01.org/linuxgraphics/downloads/firmware से डाउनलोड कर सकते हैं

  1. आवश्यक फ़ाइलों को डाउनलोड करें
  2. का उपयोग कर फ़ाइलों का विस्तार करें tar -xvf
  3. ड्राइवरों का उपयोग कर स्थापित करें sudo bash ./install --install

सभी उल्लिखित फ़र्मवारों के लिए दोहराएं और फिर रिबूट करें


2

इंटेल ने साइट को फिर से बदल दिया है, अब git.kernel.org पर पुनः निर्देशित किया जा रहा है।

टर्मिनल विंडो (टर्मिनल, PuTTY, इत्यादि) या स्थानीय मशीन का उपयोग करके अपनी चेतावनी को देखें। फिर प्रत्येक के लिए वेब ब्राउजर का उपयोग करके इंटेल के गिट पेज में लिंक पर क्लिक करें (जो फ़ाइल का एक हेक्स डंप लाता है), कॉपी करें plainडंप के ऊपर बटन से लिंक स्थान , टर्मिनल पर वापस जाएं और इस लिंक को भूल जाएं।

एक बार जब आप फ़ाइलों को प्रत्येक चेतावनी, cpया sudo cpउन्हें करने के लिए इसी मिल गया है /lib/firmware/i915


उबंटू पूछने के लिए आपका स्वागत है! ;-) अतिरिक्त जवाब पोस्ट करने की तुलना में नई जानकारी के साथ मौजूदा उत्तर को संपादित करना बेहतर है ।
फैबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.