/ Boot विभाजन वास्तव में किसके लिए है?


40

मैं लिनक्स विभाजन और फ़ाइल सिस्टम ( LPIC 1 प्रमाणन बाइबिल ) पर एक अपेक्षाकृत पुराना पाठ पढ़ रहा हूं । इसे कहते हैं:

लिनक्स बूट लोडर के कुछ संस्करण एक कर्नेल तक नहीं पहुँच सकते जो डिस्क पर पहले 1024 सिलेंडरों के बाहर है। ड्राइव की शुरुआत में / boot विभाजन डालकर आपको कर्नेल को बूट तक पहुँचते समय कोई समस्या नहीं होने का आश्वासन दिया जा सकता है। यह समस्या दोहरी बूटिंग लिनक्स के साथ-साथ पहले ऑपरेटिंग सिस्टम पर एक और ऑपरेटिंग सिस्टम के मामले में सबसे अधिक बार दिखाई देती है।

बूट लोडर के पास " डिस्क पर पहले 1024 सिलेंडरों के बाहर कर्नेल तक पहुंच नहीं " क्यों होगा ?

इसके अलावा, " ड्राइव की शुरुआत में / बूट पार्टीशन डालने " का क्या मतलब है?


यह अब सच नहीं है, तो क्या आप ऐतिहासिक कारण चाहते हैं?
मुरु

हाँ, लेकिन हमारे पास अभी भी Linux विभाजन में बूट निर्देशिका क्यों है?
SRYZDN

6
"वास्तव में सच नहीं" मामला हो सकता है यदि दावे को बहुत शाब्दिक रूप से पढ़ा जाए, लेकिन बहुत सारे आधुनिक डिस्क लेआउट हैं जो अधिकांश बूटलोडर्स नहीं पढ़ सकते हैं। ZFS बहुत कुछ भी पठनीय नहीं है; इसी तरह btrfs-on-LVM। एक सरल ext3 / ext4 RAID1 पर अपनी कर्नेल और initrd रखो और किसी भी संख्या में सिरदर्द से बचा जाता है।
चार्ल्स डफी

मूल रूप से BIOS द्वारा बूट लोडर के लिए हार्डडिस्क से लिनक्स कर्नेल प्राप्त करने के लिए एपीआई केवल 1023 क्षेत्रों के लिए कमरा था , अर्थात ड्राइव की शुरुआत। /bootविभाजन स्पष्ट रूप से यह सुनिश्चित करें कि कर्नेल लोड करने योग्य हो सकता है कि क्षेत्र में होना लागू किया गया था।
थोरबजोरन रावन एंडरसन

जवाबों:


34

यह लिनक्स के बजाय एक बहुत ही पुराने BIOS और बूटलोडर द्वारा लगाई गई सीमा है। BIOS केवल डिस्क के पहले 1024 सिलेंडर तक पहुंचने में सक्षम होगा ( सिलेंडर / हेड / सेक्टर के बारे में अधिक जानकारी के लिए यहां देखें )। यह सीमा बूटलोडर्स तक विस्तारित होगी, जो कि उनके सरल स्वभाव के कारण, उनके स्वयं के डिस्क ड्राइवर नहीं होंगे और डिस्क तक पहुंचने के लिए BIOS सेवाओं का उपयोग करेंगे।

इसका मतलब यह था कि बूटलोडर और कर्नेल (चूंकि इसे लोड करने के लिए बूटलोडर का काम है) दोनों को इस सीमा के साथ सिस्टम पर पहले 1024 सिलेंडर के भीतर रहना होगा। ऐसा करने का एक सरल तरीका यह था /bootकि कर्नेल युक्त एक अलग विभाजन बनाएं और इसे ड्राइव की शुरुआत में डालें (आमतौर पर इसे केवल पहला विभाजन बनाकर)। इसका मतलब यह है कि यह भौतिक रूप से पहले 1024 सिलेंडरों के भीतर रहता है, बशर्ते कि विभाजन बहुत बड़ा नहीं था।

सीमा अब एक मुद्दा नहीं है क्योंकि यह केवल पुराने BIOS पर लागू होता है। इसके अलावा, कई आधुनिक बूटलोडर्स (उदाहरण के लिए GRUB) के पास अपने डिस्क ड्राइवर हैं और इसलिए BIOS सेवाओं पर भरोसा करने की आवश्यकता नहीं है। आधुनिक बूटलोडर्स /bootअन्य प्रयोजनों के लिए उपयोग कर सकते हैं , लेकिन यह अलग विभाजन पर और पहले 1024 सिलेंडर के भीतर दोनों होने की आवश्यकता नहीं है (हालांकि कई मामले हैं जहां /bootएक अलग विभाजन पर होना आवश्यक है )।


5
यह सच है, लेकिन जैसा कि वर्तमान में लिखा गया है, इसका तात्पर्य है कि आधुनिक सिस्टम एक अलग के बिना कर सकते हैं /boot। यह बहुत अक्सर असत्य है - विशेष रूप से LVM और फैंसी आधुनिक फाइल सिस्टम के साथ ब्लॉक-लेयर कार्यक्षमता के साथ जो रूट में बनाया गया है।
चार्ल्स डफी

3
@ दोस्तों, ऐसा मत सोचो, मैं इस सटीक कारण के लिए इटैलिक में अपना " और " डालने के लिए सावधान था ।
ग्रीम

@CharlesDuffy - आधुनिक सिस्टम - यहां तक ​​कि फैंसी fs परतों वाले भी - /bootपारंपरिक अर्थों में बिना आसानी से कर सकते हैं। /bootपरंपरागत रूप से एक बूटलोडर के लिए समर्पित है - लेकिन पिछले कुछ वर्षों में निर्मित अधिकांश कंप्यूटर फर्मवेयर के लिए एक बूटलोडर बेसिन के साथ आते हैं - हालांकि, जो भी कारण के लिए, सामान्य अभ्यास अभी भी एनाक्रोनोस्टिक बूटलोडर जैसे grubऔर दोस्तों को स्थापित करना है और अपनी कार्यक्षमता के पक्ष में बाईपास करना है। जटिलता, मुझे लगता है। फ़र्मवेयर बूटलोडर्स को एक समर्पित विभाजन की आवश्यकता होती है, हालांकि - लेकिन इसका आमतौर पर बहुत कुछ नहीं होता है /boot
mikeserv

1
@ माइकर्स, एह? क्या आप ईएफआई की बात कर रहे हैं? EFI स्पष्ट रूप से FAT12, FAT16 और FAT32 का समर्थन करता है; अगर ZFS जैसी किसी चीज को कर्नेल लोड करने की कोशिश कर रहा है, तो इसे खींचने के लिए एक सरल फाइल सिस्टम की जरूरत है। चाहे इसके पास कुछ भी हो या नहीं /boot, विशुद्ध रूप से विन्यास-विशिष्ट है।
चार्ल्स डफी

1
वास्तव में यह सच नहीं है कि यह अब कोई मुद्दा नहीं है। मैं कभी-कभी इन समस्याओं के साथ काफी नई मशीनों (जैसे 5 साल पुरानी) में आता हूं। दी गई है, BIOS वहाँ फर्मवेयर के बेवकूफ टुकड़े हैं, लेकिन वे अभी भी मौजूद हैं।
रुसलान

23

इतिहास

/bootऐसी फ़ाइलें हैं जो ऑपरेटिंग सिस्टम द्वारा उपयोग नहीं की जाती हैं, लेकिन इसके बूटलोडर द्वारा । आपको बूटलोडर की दोनों फाइलें (जैसे /boot/grub/*ग्रब के लिए) और लिनक्स कर्नेल ( /boot/vmlinuz*) और अक्सर एक संबंधित initrd या initramfs मिलेंगी

विरासत BIOS के साथ एक पीसी पर (जैसा कि हाल के कंप्यूटरों में पाया गया नए यूईएफआई के विपरीत ), ROM में सॉफ्टवेयर बूट डिस्क के पहले 512 बाइट्स को मेमोरी ( बूट सेक्टर ) में लोड करता है । केवल 512 बाइट्स के साथ (जिनमें से सभी में कोड भी नहीं है: इसमें से कुछ में विभाजन तालिका जैसे डेटा शामिल हैं), कोड बहुत कुछ नहीं कर सकता है - वहां एक वास्तविक डिस्क ड्राइवर नहीं हो सकता है। इस तरह के सीमित स्थान पर किया जा सकता है कि अधिक कोड लोड करने के लिए एक BIOS इंटरफ़ेस का उपयोग करें। यह इंटरफ़ेस डिस्क पर Nth सेक्टर को लोड करने के लिए एक कमांड प्रदान करता है - और N का आकार सीमित है, इसलिए केवल डिस्क की शुरुआत ही उस रास्ते तक पहुँच सकती है।

BIOS इंटरफ़ेस तीन दशकों में थोड़ा विकसित हुआ है या इसके आस-पास है, लेकिन इसकी आकार सीमाओं को डिस्क आकार के साथ बनाए रखने के लिए संघर्ष किया गया है, जिससे पुराने BIOS और बूटलोडर्स को 32MB, 512MB, 2GB, 8GB (और संभवतः अन्य सीमाएँ जो मुझे याद नहीं हैं)। बूट लोडर को उन सभी टुकड़ों को लोड करने के लिए BIOS इंटरफ़ेस का उपयोग करने में सक्षम होना चाहिए जो डिस्क ड्राइव तक सीधे पहुंचने के लिए आवश्यक हैं। बूटलोडर्स में आमतौर पर सभी डिस्क कंट्रोलर के लिए ड्राइवर नहीं होते हैं, इसलिए लिनक्स कर्नेल (और initrd / initramfs) को लोड करने के लिए सब कुछ BIOS इंटरफ़ेस का उपयोग करना पड़ता है और इस तरह डिस्क की शुरुआत में फिट होना पड़ता है।

ध्यान दें कि यह BIOS या बूटलोडर की एक सीमा है, लिनक्स की या वितरण की नहीं।

/bootआज अलग कर दो

हाल ही में BIOS और हाल ही में बूटलोडर या यूईएफआई के साथ एक सिस्टम पर, आकार सीमाएं अब प्रासंगिक नहीं हैं: डिस्क आकार को पकड़ने के लिए अब एक लंबा समय है। हालांकि, अन्य उपयोग के मामले हैं जो एक अलग /bootविभाजन को उपयोगी बनाते हैं । यह मुख्य सिस्टम को RAID युक्ति पर रखने की अनुमति देता है जो बूटलोडर समर्थन नहीं करता है, या किसी फ़ाइल सिस्टम पर बूटलोडर समर्थन नहीं करता है। यह मुख्य प्रणाली को एक एन्क्रिप्टेड डिवाइस पर रखने की अनुमति देता है, जिसे लिनक्स डिक्रिप्ट कर सकता है लेकिन बूटलोडर नहीं।

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


22

उल्लेखित BIOS समस्या के साथ एक और कारण यह है कि एक अलग /bootविभाजन /वॉल्यूम के लिए एक फ़ाइल सिस्टम का उपयोग करने की अनुमति देता है जो बूट लोडर को समझ में नहीं आता है (जैसे कि ब्लॉक सूची लोडिंग तक सीमित होने के बिना lilo)।


क्या वर्चुअल मशीन के अंदर लिनक्स को बूट करने पर इसकी विशेष प्रासंगिकता होगी?
टॉम रसेल

1
@TomRussell नहीं, वह पहलू संबंधित नहीं है।
हाक लैजिंग

18

बोर्ड लगाना मुश्किल है

बूटिंग ... अच्छी तरह से ... यह वास्तव में सबसे कठिन हिस्सा है। हर बार जब कंप्यूटर बूट करता है तो यह मूल रूप से खुद को नए सिरे से देखता है। यह अपने विभिन्न हिस्सों के साथ खुद को परिचित करता है, और प्रत्येक के लिए यह इसे प्राप्त करता है लाभ क्षमता। लेकिन इसे अपने बूटस्ट्रैप्स द्वारा खुद को ऊपर खींचना पड़ता है, इसलिए हर बार वर्ग एक से बोलना पड़ता है।

बूट प्रक्रिया को डिजाइन करते समय मशीन को चरणों में लाने के लिए चाल है। आपका बूट तेज़ और विश्वसनीय होना चाहिए, और यह हर बार पूरी तरह से अज्ञात वातावरण में दोनों चीजें होना चाहिए । मैं रियल / प्रोटेक्टेड मोड वार्तालाप (जो यह कहना भी नहीं है कि मैं भी कर सकता था) में वेंचर नहीं करूंगा , लेकिन बूट पर बहुत कुछ हो रहा है। जैसा कि कंप्यूटर अपने विभिन्न घटकों को हर बार स्नातक चरणों में ऐसा करने के लिए आत्मसात करता है। संभवतः इनमें से सबसे महत्वपूर्ण है ऑन-बोर्ड कोड को निष्पादित करने से लेकर डिस्क कोड को निष्पादित करना, या, दूसरे शब्दों में - कर्नेल निष्पादन। यह तब होता है जब फर्मवेयर (ओस्टेंसिक रूप से) ऑपरेटिंग सिस्टम को आत्मसमर्पण करता है।

कई साल पहले ऐसा नहीं था। यह वास्तव में बेसिक इन / आउट था BIOS का उपयोग किया जाता था - नियमित कार्यक्रम स्क्रीन को ड्राइंग करने और डिस्क तक पहुंचने जैसी चीजों के लिए फर्मवेयर को कॉल करेंगे। इन्हें इंटरप्ट कहा जाता था - पुरानी टोपियाँ उन्हें उनके नए डॉट-मैट्रिक्स या यूएसआर के लिए आईआरक्यू को असाइन करने में मिली खुशी के रोमांच के लिए सबसे अच्छी तरह से याद कर सकती हैं।

INT13h

यह रुकावट ( या INTअसेंबली लिंगो में ) 13H फ़ंक्शंस है जो BIOS डिस्क एक्सेस के लिए सेवाओं के रूप में प्रदान करता है। फर्मवेयर से डिस्क पर छलांग लगाने के लिए बूट प्रक्रिया में BIOS सिस्टम के लिए आज भी इनका उपयोग किया जाता है।

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

निष्पादित एमबीआर लगभग निश्चित रूप से आपके सिस्टम कर्नेल नहीं है - 512 बाइट्स (देना या लेना) उस विभाग में बहुत बेकार होगा। यह शायद एक है बूटलोडर विशेष रूप से डिजाइन पर काबू पाने के लिए एक कार्यक्रम - एक BIOS के कई संबोधित कर सीमाओं की - विशेष रूप से है कि यह बिल्कुल भी फाइल सिस्टम के किसी भी प्रकार को नहीं समझता।

जब बूटलोडर वास्तविक कर्नेल में पढ़ता है और इसे मेमोरी में निष्पादित करता है (जैसा कि हम सभी प्रार्थना करते हैं यह हर बार होगा) , यह संभवतः एक INT13Hबाधा कॉल के माध्यम से BIOS से पूछकर ऐसा करेगा । और अगर ऐसा नहीं होता है - कई कट्टरपंथी बूटलोडर्स पारंपरिक अर्थों में फ़ाइल सिस्टम को माउंट करेंगे और कोड को दूसरे तरीके से निष्पादित करेंगे - तो यह बहुत कम संभावना है कि बूटलोडर को एक INT13Hया दो के बिना इतना फैंसी मिल गया है । अक्सर बूटलोडर्स को खुद को या खुद के विभिन्न चरणों को चेनलोड करना चाहिए - क्योंकि पहले से आवंटित 512 बाइट्स उनकी आवश्यकताओं के अनुरूप नहीं होते हैं।

चिकन और ईजीजी

यह सब डिस्क पर चर्चा करने का एक राउंडअबाउट तरीका है, मुझे पता है, लेकिन इस बिंदु से यह स्पष्ट रूप से स्पष्ट होना चाहिए कि प्राथमिक समस्या - कोई इसे चिकन-एंड-एग प्रकार कह सकता है - उस डिस्क तक पहुंच रहा है जिसमें प्रोग्राम निर्देश शामिल हैं के बारे में कैसे पहुँच डिस्क के लिए । इस समस्या की कुंजी फर्मवेयर है - और EFI सिस्टम पर भी बहुत अलग तरीके से जारी है - और, सबसे कमजोर या नहीं, फर्मवेयर बूट श्रृंखला की सबसे महत्वपूर्ण कड़ी है।

आप देखते हैं, एक बार कर्नेल निष्पादित हो जाता है, और हार्डवेयर आरंभ करने और नियंत्रित करने के लिए इसके सभी असंख्य मार्ग, ये सभी समस्याएं गायब हो जाती हैं (या, कम से कम, कुछ हद तक बदल जाती हैं) , क्योंकि आधुनिक ओएस सिस्टम का पूर्ण नियंत्रण लेते हैं। लेकिन जब तक वे सिस्टम की सीमा का विस्तार केवल तब तक करते हैं जब तक फर्मवेयर अनुमति देगा। यह बहुत कुछ कह रहा है - INT13H8086 के बाद से BIOS बहुत नहीं बदला है। कॉल 8086 मूल है। हां, (असंख्य) एक्सटेंशन और निश्चित रूप से हैक हुए हैं, लेकिन नवाचार ...?

बेहतर और बेहतर

BIOS में अधिकांश परिवर्तन सर्वोत्तम रूप से केवल पट्टियाँ हैं। इसकी के विभिन्न और विशिष्ट पहलुओं - यह एक कठिन डिस्क शारीरिक रूप से मैप किया जा सकता था हुआ करता था ज्यामिति जब डेटा इसे करने के लिए जमा हो गया था या यह से लिया गया करने के लिए भेजा गया था। आखिरकार पारंपरिक हार्ड डिस्क एक ऐसे आकार में बढ़ गई जिसने इसे निषिद्ध कर दिया। यहां तक ​​कि सिर्फ सार नक्शा एक BIOS को संभालने के लिए बहुत अधिक जानकारी थी । चूंकि यह केवल रियल मोड में काम कर सकता है, BIOS 1 एमबी प्रति मेमोरी रजिस्टर तक सीमित है। सिलेंडर मैप को उस से बड़ा करें, या उसके किसी भी गुण को बड़े बिट्स से संबोधित कर सकते हैं, और BIOS सचमुच खो गया है - सीमा से बाहर।

यह अवरोध कई बार मिल चुका है और टूट गया है। हर बार नक्शा कुछ नया, चतुर और कम सटीक तरीके से अमूर्त और एन्कोडेड होता है। और इसलिए इन दिनों BIOS के लिए ड्राइव को सटीक रूप से मैप करना वास्तव में असंभव है। लॉजिकल ब्लॉक एड्रेसिंग अब वास्तविक मानक है, हालांकि कुछ सिलेंडर / हेड / सेक्टर (या CHS) अनुवाद अभी भी आवश्यक हैं। मेनबोर्ड फर्मवेयर ने सटीकता / जिम्मेदारी में क्या खो दिया है, इस तरह के विस्तार को समाप्त कर दिया है और अंतराल को भरने के लिए डिस्क फर्मवेयर जिम्मेदारियों में जोड़ा गया है।

यह बिल्ली और चूहे का खेल है जिसे आपके प्रश्न में संदर्भित किया गया है। जब BIOS अपने सरासर आकार के कारण एक निश्चित बिंदु से परे एक डिस्क को समझने में विफल रहता है, तो कोई भी डेटा जिसे आप इसे बूट के लिए प्राप्त करना चाहते हैं - जैसे कि बूटलोडर या कर्नेल - शायद बेहतर था कि उस बिंदु से परे स्थित न हो। यहीं से /bootआया है।

MAYBE ACTUALLY बेहतर

इन दिनों ऐसी चीजें हैं, शुक्र है, BIOS के निधन से अप्रासंगिक हो गया। यह आने में 30 साल था, लेकिन इसे पिछले कुछ वर्षों में बड़े पैमाने पर यूईएफआई (या ईएफआई 2.0) मानक द्वारा बदल दिया गया है । UEFI मिनट एक से एक माउंट प्रदान करता है , यह संरक्षित मोड में आरंभीकृत करता है, यह अपने स्वयं के बूटलोडर को शामिल करता है, यह रिबूट-लगातार फ्लैश-मेमोरी वेरिएबल स्टोरेज प्रदान करता है, यह कुछ umpteen zetabytes या किसी भी डिस्क को संभालने का अनुमान है ... और बहुत कुछ अन्य। यह एकदम सही है, लेकिन यह अपने पूर्ववर्ती पर एक बड़ा सुधार है।

यहां तक ​​कि डिस्क-एन्क्रिप्शन या स्तरित फ़ाइल सिस्टम से जुड़े विशेष बूट लोडर के लिए तर्क तब गिरते हैं जब आप समझते हैं कि इन सभी को वैसे भी ओएस कर्नेल द्वारा नियंत्रित किया जाना चाहिए, और यदि आपको बूट पर माउंट प्रदान किया जाता है, तो आपको हमेशा एक स्पष्ट मिल जाता है- इसे निष्पादित करने के लिए शॉट (विशेष रूप से यह देखते हुए कि लिनक्स कर्नेल, अपने डिफ़ॉल्ट कॉन्फ़िगरेशन में, एक ईएफआई-निष्पादन योग्य है)

और इसलिए एक अलग /bootविभाजन को शायद आपको अधिक चिंता नहीं करनी चाहिए, और यदि आप ईएफआई प्रणाली पर हैं, तो आपको शायद पहले से ही ईएफआई-सिस्टम विभाजन में एक एनालॉग मिल गया है, क्योंकि यह ईएफआई मोड को बूट करने के लिए एक आवश्यकता है।


8

यह है कि एक /bootनिर्देशिका ऐतिहासिक रूप से निर्धारित है और वहां से "तय" फाइलसिस्टम पदानुक्रम मानक में है । इस तरह के मानक होने से प्रोग्राम (और sysadmins) कुछ स्थानों पर कुछ फ़ाइलों की अपेक्षा कर सकते हैं। इस मामले में बूट प्रक्रिया से जुड़ी फाइलें।

/bootपुराने BIOS'es के लिए एक डिस्क के बंटवारे की शुरुआत में एक विभाजन होने से जो उपलब्ध ड्राइव की पूरी श्रृंखला में ब्लॉक / सेक्टरों को अनुक्रमित करने में सक्षम नहीं थे। इसकी वजह से जो जानकारी लोड की जानी चाहिए वह एक ऐसे सेक्टर पर होनी चाहिए जिसे अनुक्रमित किया जा सके, इसलिए एक अलग विभाजन (कम क्षेत्र संख्या के साथ) /bootजिसके लिए BIOS अतिरिक्त डेटा / प्रोग्राम लोड कर सकता है (जो बदले में पूर्ण पते को सक्षम करने में सक्षम था) डिस्क का उपयोग BIOS के बिना)।


6

यह एक अलग / बूट विभाजन के लिए बहुत क्रमबद्ध हो सकता है। मेरी मशीन पर, मेरे पास कई विकृतियां और बैकअप हैं, प्रत्येक अपने स्वयं के विभाजन में, लेकिन वे सभी एक ही / बूट विभाजन को साझा करते हैं, जो कि सभी ओएस के लिए सभी गुठली है। इसके अलावा, सभी डिस्ट्रोस मेरे एक और केवल लिलो.कॉन्फ़ की प्रतिलिपि की ओर इशारा करते हैं जो कि / बूट में भी है, इसलिए मुझे कभी भी यह अनुमान नहीं लगाना चाहिए कि जब मैं कर्नेल जोड़ता हूं, तो डिस्ट्रोस जोड़ें, जो भी हो। यहाँ मेरे lilo.conf से एक टुकड़ा है:

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y5--5-Debian1"
label  = y5:D1:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y8--5-Debian2"
label  = y8:D2:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y11-5-Debian3"
label  = y11:D3:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=w5--5-Debian1"
label  = w5:D1:16.0-4

... यह सिर्फ दो डिस्कों पर मेरा डेबियन बैकअप है। देखें कि गुठली पर नज़र रखना कितना आसान है? (अभी, सभी बैकअप एक ही कर्नेल का उपयोग करके)।


5

यद्यपि आधुनिक प्रणालियों पर, एक फ़ाइल के सेक्टरों को डिस्क पर कहीं भी एक्सेस किया जा सकता है, फिर भी यह बूट बूट सामग्री को अपने स्वयं के बूट पार्टीशन में सीमित करने के लिए समझ में आता है, बस "एक टोकरी में सभी अंडे न डालें" के सिद्धांत से।

मान लीजिए कि मुख्य फाइल सिस्टम इस तरह से भ्रष्ट है कि कुछ लोअर-स्टेज बूटलोडर अगले चरण को ठीक से पढ़ने में सक्षम नहीं है। यदि इसके बजाय बूटलोडर सामग्री अपने स्वयं के विभाजन में हैं, तो कर्नेल ऊपर आ सकता है और ठीक से भ्रष्ट रूट विभाजन के माध्यम से fsck से निपट सकता है। वह स्वयं अपने विभाजन में हो सकता है।

बूट विभाजन आपको "बचाव" के लिए विकल्प दे सकता है, जैसे वैकल्पिक रूट विभाजन को बढ़ाना। इसके अलावा, क्या होगा यदि आप अलग-अलग विभाजन में विभिन्न ऑपरेटिंग सिस्टमों को बूट करते हैं? फिर बूट सामग्री उन प्रणालियों में से किसी एक से संबंधित नहीं है। इसके लिए अपना विभाजन होना वाजिब है। आप किसी भी OS विभाजन को भिन्न OS से बदल सकते हैं, फिर भी शेष OS को बूट करने में सक्षम हो सकते हैं।

इसके अलावा, क्या होगा यदि आप अपने मुख्य विभाजन के लिए एक फाइल सिस्टम का उपयोग करना चाहते हैं जो बूटलोडर को बिल्कुल समझ में नहीं आता है? या, कहें, जिसके लिए बूट-लोडर-साइड समर्थन सिर्फ प्रयोगात्मक है? इस तरह की स्थितियों में, एक बूट-टाइम फ़ाइल का उपयोग तब भी किया जा सकता है यदि कोई सेक्टर मैप है (और बूट लोडर ऐसी चीज का समर्थन करता है: अच्छा पुराना लिनक्स बूट लोडर LILO सेक्टर मैप्स का उपयोग करता है, और इसलिए फाइल सिस्टम को समझने की जरूरत नहीं है संरचना बिल्कुल)। लेकिन क्षेत्र के नक्शे स्वाभाविक रूप से परतदार हैं। यदि फ़ाइल सिस्टम को पुनर्गठित किया जाता है, तो सेक्टर चारों ओर घूमते हैं, और इसलिए सेक्टर मैप गलत हो जाते हैं और उन्हें पुनर्जीवित किया जाना चाहिए, अन्यथा सिस्टम रिबूट नहीं कर सकता है।

अंत में, संगठनात्मक सिद्धांत है कि भले ही आपके पास वास्तविक विभाजन नहीं है, फिर भी यह एक अच्छा विचार है कि सभी बूट सामान कम से कम अंडर हैं /boot, और कहीं और बिखरे हुए नहीं हैं।


5

यह लिनक्स वितरण की सीमा नहीं थी, लेकिन यह पुराने BIOS की सीमा थी। उन दिनों में, यह सुनिश्चित करने के लिए कि लिनक्स बूट हो सकता है, बूट से संबंधित सभी फाइलों को अपने स्वयं के विभाजन में रखा गया था जो कि बूट लोडर को पहले 1024 सिलेंडरों के भीतर गिरने को सुनिश्चित करने के लिए हार्ड ड्राइव पर पहला विभाजन बनाया गया था। एक विभाजन बनाएँ जो 1024 सिलेंडर में जो भी आकार में पाया जाता है उससे छोटा है (हार्ड ड्राइव से हार्ड ड्राइव में भिन्न होता है)। लेकिन अगर आप एक पहला विभाजन बनाते हैं जो इस सीमा से बड़ा है, तो एक मौका है कि बूट लोडर फाइलें 1024 सिलेंडर के बाहर स्थित होंगी, और BIOS उन्हें लोड नहीं कर पाएगा।

आप दो छोटे विभाजन बनाकर भी एक ही प्रभाव प्राप्त कर सकते हैं, दोनों पहले 1024 सिलेंडरों के भीतर झूठ बोलते हैं, और दूसरे पर सभी बूट लोडर फाइलें डालते हैं।


4

इन दिनों बूटपार्ट के लिए एक और कारण हैं:

  • NFS या NBD से बूटिंग
  • एन्क्रिप्टेड रूट विभाजन
  • / बूट साझा ने विभिन्न वितरणों को धोखा दिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.