क्या विंडोज 8.1 को बिना बूटमैनगर के बूट करना संभव है?


10

मैं अपने लैपटॉप पर विंडोज और लिनक्स दोहरी बूटिंग स्थापित करने का एक आसान तरीका के साथ आने की कोशिश कर रहा हूं, जरूरी नहीं कि उस क्रम में। आम तौर पर हमें जो करना है, वह पहले विंडोज को इंस्टॉल करना है, और फिर लिनक्स को इंस्टॉल करना है और GRUB को विंडोज को संभालने की अनुमति देना है।

तो मैं जो हासिल करने की कोशिश कर रहा हूं, वह है कि पेसकी इंस्टॉलेशन प्रक्रिया (विंडोज़) को बायपास करने का एक तरीका ढूंढना और सीधे मेरी ड्राइव में कॉपी करने के लिए एक छवि का उपयोग करना। यह मुझे अपने बूट मैनेजर (GRUB) को बनाए रखने की अनुमति भी देगा। (ऐसा नहीं है कि मैं इसे बाद में बहाल नहीं कर सकता, लेकिन यह Microsoft की एकाधिकार नीति है, इस मामले में सिस्टम में अन्य बूट प्रबंधकों के अस्तित्व से इनकार करते हुए)।

मैंने पहली बार विंडोज 8.1 की एक कानूनी प्रति प्राप्त की, फिर उसे वर्चुअलबॉक्स का उपयोग करके वर्चुअल मशीन पर स्थापित करने के लिए आगे बढ़ा। फिर, मैंने अपने GPT पर हार्ड ड्राइव में एक NTFS विभाजन बनाया और नए विभाजन के लिए .vdi छवि से विंडोज विभाजन की सामग्री की नकल की।

बेशक, यह अभी तक काम नहीं करता है। मैं नहीं जानता कि बूटमार्ग को कैसे बदला जाए। यह देता है

File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.

क्योंकि यह उस फ़ाइल को दूसरे विभाजन से नहीं खोज सकता है जिसका उपयोग बूटिंग, सिस्टम रिकवरी आदि के लिए किया जाता है।

अब, मैंने पढ़ा है कि bootmgr अंततः Windows को बूट करने के लिए winload.exe निष्पादित करता है। मुझे कोई सुराग नहीं है कि आगे क्या करना है।

मुझे लगता है कि इसे सैद्धांतिक रूप से काम करना चाहिए क्योंकि मेरे पास विंडोज चलाने के लिए आवश्यक सभी फाइलें हैं। मुझे यह भी लगता है कि मुझे ऐसा सोचने वाला अकेला नहीं होना चाहिए, और इसलिए मुझे यहाँ बहुत कुछ याद आ रहा है। शायद यह पहले से ही किया है?

मुझे पता नहीं है कि बूटिंग कैसे काम करता है। जो मैं समझने में कामयाब रहा, वह यह है कि जब आप विंडोज और लिनक्स को डुअल-बूट करते हैं, तो आप विंडोज़ के बूटलोडर को लिनक्स के लिए चेन करते हैं। तो मैं जो हासिल करने की कोशिश कर रहा हूं, वह है कि किसी तरह से विंडोज बूटलोडर से छुटकारा पा लिया जाए।

संपादित करें

मैं बाइनरी फ़ाइलों को देख रहा हूं bootmgrऔर \Boot\BCDbootmgrBCD फ़ाइल पढ़ता है और आपके विकल्पों को सूचीबद्ध करता है, जिनके बीच आप बूट करना चुन सकते हैं।

इसलिए अमल करने जैसी जानकारी winload.exeBCD फ़ाइल में रहती है। अब, मुझे लगता bootmgrहै कि chain.c32मॉड्यूल का उपयोग करके खुद को syslinux द्वारा निष्पादित किया जाता है । मैं जो करने की कोशिश कर रहा हूं वह किसी भी तरह से विंडोज़ बूटलोडर को निष्पादित करना है, यानी winload.exeसीधे syslinux (यदि संभव हो) से, या संशोधित करें bootmgrताकि यह winload.exeखुद को निष्पादित करे (जिसका पथ सीधे bootmgrनिष्पादन योग्य होगा) बिना बीसीडी या कुछ और की तलाश के।

हाइबरनेशन (जिसके लिए एक अलग प्रक्रिया की आवश्यकता होती है) को इस कदम पर कोई चिंता नहीं है।

हमें फर्मवेयर प्रकार बताने के लिए अपना प्रश्न संपादित करें, और (यदि EFI) क्या आपने फर्मवेयर के सेटअप में संगतता समर्थन मॉड्यूल को सक्षम किया है

मेरा फर्मवेयर EFI (CSM सक्षम के साथ) है, और मैं आमतौर पर GRUB का उपयोग करके आर्क लिनक्स में बूट करता हूं। मुझे पता चला है कि विरासत प्रणालियों और EFI पर bootmgrनिष्पादित System32\winload.exeहोता है System32\winload.efi

मुझे इस पर 0.0विचार करना है कि यहां से क्या करना है। पिछले 10 दिनों से मैं बीसीडी में बदलाव करने की कोशिश कर रहा हूं और मुझे लगता है कि मैं सफलता तक पहुंचने वाला हूं। लेकिन यह अप्रासंगिक है, क्योंकि मैं वास्तव में क्या करना चाहता हूं विंडोज बूट मैनेजर को पूरी तरह से बायपास करना है।

यदि आपके पास कोई विचार है कि क्या winload.efiEFI शेल (बस एक अनुमान) से निष्पादित करने का एक तरीका है , या GRUB में कुछ अन्य संशोधन है ताकि यह विंडोज़ को EFI मोड में बिना चेनलोडर के बूट करेगा।

किसी भी सलाह का स्वागत करते हैं।

परिशिष्ट

निम्नलिखित फोरम पोस्ट कुछ उपयोगी जानकारी प्रदान कर सकते हैं:

http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/

1।

Grub4dos अभी एक बूटलोडर (जैसे NTLDR या BOOTMGR) को चेनलोड कर सकता है क्योंकि यह कोड के प्रतिस्थापन के रूप में कार्य कर सकता है जो एक "सामान्य" बूटेक्टर (अर्थात मशीन कोड के 300 बाइट्स जैसा कुछ) में निहित है।

यह कोड बस कुछ पैरामीटर सेट करता है और फिर लोडर को कॉल करता है।

यहां तक ​​कि विभिन्न कोड के साथ समझने और दोहराने के लिए यह (() आसान नहीं है।

BOOTMGR जैसे एक NT सिस्टम लोडर में एक या एक से कम या ज्यादा .exe एक "वास्तविक मोड" ऑपरेटिंग सिस्टम (पूरी तरह से DOS के विपरीत नहीं) और सुविधाएं / उपकरण दोनों सादे पाठ और रजिस्ट्री पित्ती को पार्स करने के लिए है, यह ऐसा कुछ नहीं है जो फिर से हो सकता है- खरोंच से आसानी से लिखा है।

YEARS के बाद से अच्छे लोग @ReactOS FREELDR लिखने का काम कर रहे हैं (जिसका उद्देश्य बहुत सरल NTLDR के लिए एक प्रतिस्थापन है) (और मुझे विश्वास है कि ReactOS प्रोग्रामर में से कुछ वास्तव में अच्छे और अच्छे हैं)।

ऐसा लगता है (लेकिन यह स्पष्ट रूप से प्रलेखित नहीं है) कि वे NTLDR के साथ प्रयोगात्मक रूप से एक सर्वर 2003 बूट करने में कामयाब रहे।

2।

(U) EFI के लिए समर्थन की शुरूआत के साथ, BootMgr BIOS और (U) EFI के बीच अंतर को समाप्त करने में मदद करता है। उदाहरण के लिए, यहाँ दो क्रम हैं:

BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows
64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows

WinLoad को एक निश्चित वातावरण (API सहित) मौजूद होने की उम्मीद है। बूटमार्ग इस बात का ध्यान रखता है, इसलिए [लगभग] वही विनलाड प्रोग्राम पर्यावरण में काम करेगा।

वास्तव में, (U) EFI बूट मापदंडों को संग्रहीत करने और लाने के लिए एक विधि को परिभाषित करता है, इसलिए BootMgr का BCD उसी उद्देश्य को कवर करता है, चाहे BIOS / (U) EFI हो।

लेकिन BIOS और (U) EFI मतभेदों से परे, BootMgr आपको एक "बूट विकल्प" बनाने की सुविधा देता है, जबकि WinLoad एक विशेष ऑपरेटिंग सिस्टम को बूट करता है जो यह जानता है कि बूट कैसे करना है।

WinLoad के मौजूद होने की कितनी उम्मीद है, इस पर निर्भर करते हुए, WinLoad को सीधे लागू करना संभव हो सकता है। माइकल ब्राउन का विंबूट सीधे बूटमार्ग पीई [1] पर आक्रमण करता है, इसलिए यह सीधे विनलाद का आह्वान कर सकता है, सिवाय इसके कि विंलाद शायद एक पर्यावरण का अधिक चाहता है। आप इसे आजमा सकते हैं!

[१] बूटमग्र के साथ भ्रमित न होने के लिए जो GRUB4DOS और Syslinux 'chain.c32 को आमंत्रित कर सकते हैं। उस BootMgr में एक स्टब शामिल है जो जानता है कि एम्बेडेड BootMgr PE को कैसे लागू किया जाए।


1
आपने अभी तक पर्याप्त जानकारी नहीं दी है। उत्तरदाताओं को यह बताने के लिए अपने प्रश्न को संपादित करें कि क्या इस मशीन में ईएफआई फर्मवेयर या पुराने पीसी / एटी-स्टाइल फर्मवेयर हैं। फिलहाल आप EFI विभाजन डिस्क पर MBR बूटस्ट्रैप कार्यक्रमों के बारे में बात कर रहे हैं, जो कि ( जब तक कि कोई मेरे कार्यक्रमों में से एक का उपयोग नहीं कर रहा है या एच। पीटर एन्विन के) बकवास है और संभवत: इस तरह नहीं कि आपकी मशीन बूटस्ट्रैप हो
JdeBP

आपके द्वारा वर्णित नीति Microsoft से बाहर नहीं निकलती है, यह दोहरी बूटिंग सिस्टम से किसी को भी नहीं रोकती है
रामहाउंड

@JdeBP आप सही हैं। कुछ बिंदु पर, मैं वास्तव में दोनों का उपयोग कर रहा था। मैं विधि के साथ पीसी में syslinux का उपयोग कर रहा था। फिर मैंने GRUB को एक EFI पार्टीशन में स्थापित किया। इसलिए मेरा लैपटॉप दोनों का समर्थन करता है, लेकिन मेरे पास हर बार एक ही परिणाम था। मैं इस बीच खुद को सूचित करने की कोशिश करूंगा। दूसरी ओर, क्या आप समझते हैं कि मैं क्या हासिल करने की कोशिश कर रहा हूं? जो मैंने पहले वर्णित किया है उसे भूलकर, शायद आप मुझे सलाह दे सकते हैं कि यह उचित है या नहीं।
ओसोलमाज़

मैं फर्मवेयर प्रकार के लिए नहीं पूछा था। यह एक महत्वपूर्ण डेटम है, जिसे आपको प्रदान करना होगा। इसके बिना, लोग उचित उत्तर भी शुरू नहीं कर सकते। हमें फर्मवेयर प्रकार बताने के लिए अपने प्रश्न को संपादित करें, और (यदि ईएफआई) आपने फर्मवेयर की setupउपयोगिता में संगतता समर्थन मॉड्यूल को सक्षम किया है या नहीं ।
JdeBP

@JdeBP मैंने प्रश्न संपादित किया है।
ऑसोल्मज़

जवाबों:


5

अपने मूल प्रश्न का उत्तर देने के लिए, नहीं। विंडोज को लोड किए बिना नहीं किया जा सकता है क्योंकि यह स्वयं बूटलोडर है (UEFI इंस्टॉल होने की स्थिति में, bootmgfw.efi)। ऐसा इसलिए है क्योंकि विंडोज को उम्मीद है कि बूटमैनगर वहां होगा और विंडलोड.फी को कॉल करेगा। यदि ऐसा नहीं होता है, तो जब तक आप समस्या को ठीक नहीं करेंगे तब तक विंडोज क्रैश हो जाएगा। इसके कई कारण हैं (व्यावहारिक और अज्ञानी)। अधिकतर, यह इसलिए है क्योंकि Microsoft ने सभी चीजों को संभालने के लिए बूटमैनगर (ओएस को लोड करना, पुनर्प्राप्ति वातावरण को लोड करना, छद्म पूर्व-ओएस पर्यावरण, और आदि) को लिखा था। वर्तमान में पवित्रता के किसी भी प्रकार को प्राप्त करने का एकमात्र तरीका ग्रब-एफी का उपयोग करके चेन लोड करना है।


इससे पहले कि मैं इसे उत्तर के रूप में स्वीकार करता हूं, मुझे पूछना चाहिए: क्या यह है कि कार्य को प्राप्त करने के लिए कठिन रूप से कठिन होगा, ज्यादातर इस वजह से कि प्रक्रिया में शामिल किसी भी कार्यक्रम को धोखा देने के लिए निम्न स्तर की हैकिंग की आवश्यकता होती है; इस धोखे के कारण कि विंडोज अभी भी यह सोचता है कि इसे अपने स्वयं के बूटमैनगर के साथ बूट किया गया है, जबकि वास्तव में यह कुछ और था ... और मुझे लगता है कि विंडोज के हर संस्करण के लिए अलग प्रयास की आवश्यकता होगी। लेकिन यह असंभव कार्य को प्रस्तुत नहीं करता है, बस वास्तव में कठिन सही है?
ओसोलमाज़

3
मैं यह नहीं कहूंगा कि यह पूरी तरह से असंभव है (प्रोग्रामिंग में), लेकिन आपको इंजीनियर को उन कॉल को रिवर्स करना होगा जो कि बूट ओएस के लिए bootmgfw.efi करता है। कम लोड वाले हैकिंग की मात्रा, जो एक OS लोडर को रिवर्स इंजीनियर लो लेवल बूट प्रोटोकॉल कॉल करने की आवश्यकता होती है, समय के संबंध में निषेधात्मक रूप से महंगी है। आपको यह मानने में न केवल विंडोज को मूर्ख बनाने की आवश्यकता होगी कि bootmgfw.efi वहां था, लेकिन यह भी कि बीसीडी मौजूद है और यह अपने स्वयं के टूल और इसी तरह से बनाया गया था।
क्रिसआर।

2

आपको UEFI फर्मवेयर में बूट विकल्पों की सूची में विंडोज ईएफआई बूटलोडर को जोड़ने की आवश्यकता है। इस तरह, आप चुन पाएंगे कि क्या:

  1. GRUB2 को लोड किया जाना चाहिए या
  2. विंडोज बूटलोडर को लोड किया जाना चाहिए

अतिरिक्त विकल्प जैसे कि डीवीडी ड्राइव, बाहरी हार्डड्राइव या नेटवर्क बूट भी उस बिंदु पर दिखाई देने चाहिए। यूईएफआई बूटलोडर आमतौर पर \EFI( /boot/efi/) विभाजन पर रहता है । जैसा कि आपने अभी तक विंडोज को ठीक से स्थापित किए बिना विंडोज हार्डड्राइव छवि की नकल की है, आपके वर्तमान मशीन के ईएफआई विभाजन में उचित बूटलोडर नहीं हो सकता है। इस प्रकार यह आवश्यक है

  1. बूटलोडर को EFI पार्टीशन में कॉपी करें
  2. GRUB2 के साथ बूट विकल्प के रूप में विंडोज जोड़ें

तब आपको यह चुनने में सक्षम होना चाहिए कि BIOS में बूट क्रम को बदलकर कौन सा ओएस बूट किया गया है। मेरे लैपटॉप पर, प्रेस F12करने के लिए कौन सा बूटलोडर लोड करने के लिए एक मेनू लाता है।

इन चरणों के लिए, मैं इस ट्यूटोरियलefibootmgr के चरणों का उपयोग और पालन करूंगा :

आपको लिनक्स bootmgfw.efiपर \EFI\Microsoft\Boot\bootmgfw.efiया /boot/efi/Microsoft/Boot/bootmgfw.efiउपयोग करते समय संबंधित फाइल को EFI विभाजन में कॉपी करना होगा :

# mkdir -p /boot/efi/EFI/Microsoft
# cp -r Microsoft /boot/efi/EFI/Microsoft

जहाँ Microsoftआपके विंडोज संस्करण के लिए मूल EFI फ़ाइलों वाला एक फ़ोल्डर है।

तब आपको .efiफ़ाइल का उपयोग करके UEFI बूट प्रविष्टियों में जोड़ना होगा :

# efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\Microsoft\\Boot\\bootmgfw.efi -L "Windows Boot Manager"

जहां निश्चित रूप से आप परिवर्तन करने की जरूरत है /dev/sdaऔर -p 1आपके डिस्क डिवाइस और विभाजन संख्या के लिए सही मान सकते हैं।

अगर आपके पास लेनोवो लैपटॉप है तो इस पर ध्यान दें:

यह भी ध्यान दें कि एक ज्ञात बग के साथ कम से कम एक निर्माता (लेनोवो) जहाज उत्पादों को बूट करने से इंकार करने का कारण बनता है जब तक कि बूट लोडर का नाम "विंडोज बूट मैनेजर" या "रेड हैट एंटरप्राइज लिनक्स" न हो।

अपने पीसी को शुरू करने के बाद कुछ इस तरह दिखाना चाहिए (यदि आप बूट प्रक्रिया के दौरान संबंधित कुंजियों को दबाए रखते हैं):

Windows Boot Manager
ubuntu
USB CD
USB FDD
ATAPI CD
ATA HDD2

(etc.)

और bcdeditविंडोज पर यह पता चलता है:

C:\WINDOWS\system32>bcdedit /enum firmware

Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
                        {bb086763-b111-11e2-bf8e-806e6f6e6963}
                        {8e7fb978-8bc8-11e2-bf2f-806e6f6e6963}
timeout                 0

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
integrityservices       Enable
default                 {current}
resumeobject            {ec215a09-8bc4-11e2-bf2b-0024d7eb75a4}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 2

(...)

Firmware Application (101fffff)
-------------------------------
identifier              {bb086763-b111-11e2-bf8e-806e6f6e6963}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\ubuntu\grubx64.efi
description             ubuntu

1
बहुत बारीकी से समझाया, धन्यवाद। कुछ दिनों पहले, मैं एक ही काम करने में सफल रहा, लेकिन अभी भी विंडोज EFI बूट मैनेजर के लिए एक अलग विभाजन का उपयोग कर रहा है, और GRUB के साथ चेनलोडिंग के माध्यम से। अब मुझे पता चला कि मैं अपने मूल ईपीएस का भी उपयोग कर सकता हूं। इसके अलावा, bcdedit का उपयोग करने के बजाय, मैंने BCD को ठीक करने के लिए hivex का उपयोग किया; मैं लिनक्स में बीसीडी फ़ाइलों में हेरफेर करने में सक्षम होने के लिए मुफ्त साधनों का एक संग्रह लिखने का इरादा रखता हूं। लेकिन मैं जो हासिल करने की कोशिश कर रहा हूं वह कुछ अलग है। यदि bootmgfw.efi किसी तरह winload.efi निष्पादित करता है, तो मैं GRUB से सीधे winload.efi को निष्पादित करने में सक्षम क्यों नहीं होऊंगा?
ओसोलमाज़

ओह मैं समझा। तो आप विंडोज बूट मैनेजर (bootmgfw.efi) को लोड करना छोड़ दें और BCD सिस्टम स्टोर को पढ़कर सीधे विंडोज बूटलोडर (winload.efi) को लोड करें? (परिभाषाएँ यहाँ से जाना ।) यह दिलचस्प है, मैंने कभी किसी को ऐसा करते हुए नहीं सुना। आपकी प्रेरणा क्या है, क्यों सीधे winload.efi को लोड करना आवश्यक है? इसके अलावा, क्या आपके पास \EFI\Boot\Microsoftपरीक्षण के लिए फ़ोल्डर की पूरी प्रतिलिपि है (वहां कुछ फाइलें हैं)?
jmiserez

अगर मैं इसे हासिल कर लेता, तो मुझे बीसीडी पढ़ने की भी जरूरत नहीं होती, मैं सिर्फ विभाजन के लिए GRUB में एक प्रविष्टि जोड़ सकता था। (मैं हाइबरनेशन और सिस्टम रिकवरी को यहां छोड़ रहा हूं) मेरी प्रेरणा यह है कि, बिना किसी चिंता के विंडोज को स्थापित करना बहुत आसान होगा, जिसे आपको बाद में ठीक करना होगा। Sysadmins के लिए उपयोगी, बैच स्थापना और इतने पर (और मेरे लिए ^ ^)। क्यों सीधे winload.efi लोड हो रहा है के लिए: बंद कल्पना विंडोज रजिस्ट्री फ़ाइलों (बाइनरी) के साथ काम करना ग्रैब की तरह सादे पाठ विन्यास फाइलों से निपटने की तुलना में बहुत अधिक थकाऊ है। बीच के आदमी को खत्म करना आसान है।
ओसोलमाज़

1
मैं देख रहा हूं कि आपका क्या मतलब है, हां यह बहुत काम आएगा। मैं सोच रहा था कि अगर 1) कोई भी चर हैं bootmgfw.efi, winload.efi पर गुजरता है जब इसे लॉन्च किया जाता है, और 2) यदि सुरक्षित बूट और किसी प्रकार की प्रमाण पत्र श्रृंखला के साथ कोई समस्या हो सकती है। क्या आपको पता चला है कि inherit {bootloadersettings}बीसीडी स्टोर का वास्तव में क्या मतलब है?
jmiserez

1
3) चूंकि मैंने हाइवेक्स का उपयोग किया है, इसलिए मैं अनुमान लगा सकता हूं कि किस वस्तु से मेल खाती है। हाइव में एक "वैश्विक" सेटिंग ऑब्जेक्ट है, और हर दूसरे ऑब्जेक्ट का एक संदर्भ है। मैं क्या कह सकता हूं, केवल दो वस्तुएं खिड़कियों में बूट करने के लिए पर्याप्त हैं: 1: निरंतर बूट uuid के साथ विंडोज बूट प्रबंधक ऑब्जेक्ट {9dea862c-5cdd-4e70-acc1-f32b344d4795: 2: वह वस्तु जिसमें विभाजन जानकारी और बूटलोडर पथ शामिल है अपने वास्तविक विंडोज रूट के लिए। सबसे कठिन हिस्सा द्विआधारी डेटा संरचना को समझना था जिसने विभाजन को निर्दिष्ट किया था। यह ज्यादातर वोडनी द्वारा किया गया था: bitbucket.org/wodny/libbcd/src
ओसोलमाज़

0

आप किसी भी क्रम में इंस्टॉलेशन कर सकते हैं अर्थात जीएनयू / लिनक्स स्थापित करना और फिर विंडोज या वाइस-वर्स।

अपने सभी ऑपरेटिंग सिस्टम को स्थापित करने के बाद बस निम्नलिखित करें।

  1. यहां से "बूट रिपेयर डिस्क" प्राप्त करें। http://sourceforge.net/projects/boot-repair-cd/

  2. इसका एक लाइव बूट करने योग्य USB पेन ड्राइव बनाएं (pendrivelinux.com पर निर्देश)

  3. या आईएसओ फाइल को सीडी में जलाएं।

  4. इसके माध्यम से बूट करें और स्क्रीन निर्देशों का पालन करें। आपके पास एक पुनर्स्थापित GRUB होगा जिसमें आप सभी स्थापित ऑपरेटिंग सिस्टम होंगे।

शुभकामनाएं।


1
मुझे इस बात की जानकारी है कि मुझे जो चाहिए वह कुछ अलग है। मैं पूछ रहा हूं कि क्या विंडोज को सीधे चेनलोडिंग के बिना बूट किया जा सकता है।
ऑसोल्मज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.