क्या GRUB सबसे अच्छा बूटलोडिंग समाधान है? क्या कोई आसान विकल्प है?


26

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

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

तो आज की गुठली के साथ LILO आधुनिक हार्डवेयर पर कैसे काम करता है? GRUB कैसे करता है? अन्य बूटलोडर्स कैसे करते हैं? क्या मुझे किसी पूर्व शर्त को पूरा करना है, या यह केवल कॉन्फ़िगरेशन फ़ाइल लिखने और liloकमांड चलाने के बारे में है जैसा कि मैं पुराने दिनों में इसे याद करता हूं? क्या कर्नेल पैकेज अपडेट (डेबियन / उबंटू) LILO को अपडेट करता है जैसा कि GRUB2 के साथ होता है?


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

मुझे याद है कि LILO का उपयोग 2010 या 2011 के आसपास तत्कालीन कोर 2 डुओ पर किया गया था। मुझे लगता है कि यह अभी भी काम करना चाहिए (यूईएफआई आदि को छोड़कर) .., पीसी आर्किटेक्चर ने इतना नहीं बदला है।
रेनन

@mikeserv, कृपया LILO-EFI युगल के बारे में सबकुछ लिखें। इस विषय से संबंधित कोई भी सूचना का स्वागत है।

मैंने वास्तव में ऐसा कुछ लिखा है जो आपको पहले उपयोगी लग सकता है जो शीघ्र ही uefi / bios के बीच के मतभेदों से निपटता है। बात यह है कि uefi में बूटलोडर शामिल है इसलिए ग्रब / लिलो / कुछ भी बेमानी है। क्या यह अक्सर शामिल नहीं है एक बूट प्रबंधक है - मेनू और सामान के लिए - इसलिए मैं आपको सलाह देता हूं कि आप rodsbooks.com/refind पर जाएं
mikeserv

3
यह अभी भी स्लैकवेयर वाले जहाज हैं। शायद ही कोई छोटा समुदाय हो।
बांद्रामी

जवाबों:


28

ईएलआईएलओ

लिनक्स के लिए EFI बूट लोडर का प्रबंधन करना: ELILO का उपयोग करना

मेरे लिए यह तय करना वास्तव में कठिन है कि कौन सा भाग कॉपी पेस्ट करना है क्योंकि यह सब वास्तव में अच्छा है, इसलिए मैं आपसे केवल इसे पढ़ने के लिए कहूंगा।

रॉड स्मिथ

लेखक और दोनों को बनाए रखता है gdiskऔर rEFInd

लेकिन इससे पहले कि मैं आपको इस पर थोड़ा टिप्पणी करना चाहूँ। ऊपर दिया गया ELILO लिंक UEFI बूटिंग के कई पन्नों में से एक है, जिसे आप रॉड स्मिथ द्वारा लिखित rodsbooks.com पर पाएंगे । वह एक निपुण तकनीकी लेखक हैं, और यदि आपने कभी यूईएफआई बूटिंग के विषय को गुमराह किया है और उनके कुछ भी नहीं पढ़ रहे हैं, तो इसकी संभावना थी क्योंकि आपने शीर्ष कई परिणामों को छोड़ दिया था।

लिनक्स UEFI बूट

मूल रूप से, लिनक्स कर्नेल को फर्मवेयर द्वारा सीधे निष्पादित किया जा सकता है।

ऊपर दिए गए लिंक में उन्होंने लिनक्स कर्नेल के EFI स्टब लोडर का उल्लेख किया है - यह वह है जो आपको उपयोग करना चाहिए, मेरी राय में, क्योंकि यह लिनक्स कर्नेल को फर्मवेयर द्वारा सीधे कॉल करने की अनुमति देता है। भले ही आप कुछ कर रहे हों , फर्मवेयर द्वारा निष्पादित किया जा रहा है - और ऐसा लगता है कि कुछ ऐसा है grub। यदि फर्मवेयर सीधे आपके ओएस कर्नेल को लोड कर सकता है, तो एक बूटलोडर क्या अच्छा है? यूईएफआई फर्मवेयर एक एफएटी स्वरूपित जीपीटी विभाजन को विभाजन तालिका द्वारा जासूसी करता है और वहां एक पथ निष्पादित करता है जिसे उसने जहाज पर फ्लैश मेमोरी मॉड्यूल में यूईएफआई बूट चर के रूप में सहेजा है। तो एक चीज जो आप कर सकते हैं, वह लिनक्स कर्नेल को उस FAT विभाजन पर रखा जाए और उस बूट वेरिएबल में अपना पथ संचित करें। अचानक कर्नेल अपना है बूटलोडर।

bootloaders

UEFI सिस्टम पर, बूटलोडर्स निरर्थक हैं - ELILO शामिल हैं।

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

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

Bootmanagers

हालांकि आसान विन्यास के लिए, कुछ गो-उपयोगी उपयोगी हो सकते हैं।

रॉड स्मिथ का rEFInd क्या करता है, इसे EFI एप्लिकेशन के रूप में लॉन्च किया गया है - यह एक अपेक्षाकृत नई अवधारणा है। यह एक ऐसा प्रोग्राम है जो डिस्क से निष्पादित होता है - और यह फ़र्मवेयर पर लौटता है। क्या rEFInd आपको बूट मेनू प्रबंधित करने की अनुमति देता है और फिर फर्मवेयर को निष्पादित करने के लिए अपने बूट चयन को वापस करता हैयह यूईएफआई फाइलसिस्टम ड्राइवरों के साथ आता है - इसलिए, उदाहरण के लिए, आप कर्नेल के ईएफआई-स्टब लोडर को गैर-एफएटी विभाजन (जैसे कि आपका वर्तमान /boot) पर उपयोग कर सकते हैं यह प्रबंधन के लिए सरल मृत है - अगर ऐसा कुछ आवश्यक है - और यह एक निष्पादन योग्य सिस्टम कर्नेल की सादगी को एक विन्यास योग्य बूटमैनगर की सुविधा में जोड़ता है।

परमाणु अप्रत्यक्ष

कर्नेल को सीमलिंक की आवश्यकता नहीं है - यह कर सकता है mount --bind

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

यह फ़ाइल सिस्टम ड्रायवर लोड करने के लिए कॉन्फ़िगर नहीं किए गए EFI सिस्टम के लिए एक समस्या है (जैसे कि rEFInd पैकेज के साथ प्रदान की जाती है) क्योंकि FAT समग्र रूप से एक बेवकूफ फाइल सिस्टम है, और यह उन्हें समझ में नहीं आता है।

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

मेरा विन्यास

मैंने एक बार इस पर निर्देशों का एक सेट लिखा था और इसे यहाँ पोस्ट किया था , लेकिन ऐसा दिखता है:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

इसलिए मैंने अपने /etc/fstabफ़ोल्डर में इंगित करने के लिए उन दो पंक्तियों को रखा, जिन्हें मैं नए लिनक्स इंस्टॉलेशन में शामिल करने का इरादा रखता /bootहूं और मुझे लगभग पूरी बात की चिंता है। मुझे भी करना है:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

पहले एक के refind-efiमाध्यम से पैकेज को स्थापित करने के अलावा pacman, यह वह सब है जो मुझे चाहिए के रूप में कई अलग-अलग प्रतिष्ठानों / कॉन्फ़िगरेशनों को सेटअप करने के लिए आवश्यक है। ध्यान दें कि ऊपर दिए गए उस स्ट्रिंग के बहुमत में कर्नेल पैरामीटर के रूप में निर्दिष्ट btrfs- विशिष्ट माउंट-विकल्प हैं। एक अधिक विशिष्ट /boot/refind_linux.confसंभवतः ऐसा दिखेगा:

"Menu Entry" "root=/dev/sda2"

और बस इतना ही लगता है।

rodsbooks.com

यदि आप अभी भी ELILO चाहते हैं तो आप ऊपर दिए गए लिंक पर इंस्टॉलेशन निर्देश पा सकते हैं। यदि आप rEFInd चाहते हैं, तो आपको वहां पहले पैराग्राफ में इसके लिंक मिल जाएंगे। मूल रूप से यदि आप कोई यूईएफआई बूट विन्यास करना चाहते हैं, तो पहले rodsbooks.com पढ़ें ।


3

मैं GRUB2 के बजाय LILO का उपयोग करता हूं। सच कहूं तो, यह मेरी पसंद नहीं थी - डेबियन लाइव सीडी इंस्टॉलर में GRUB2 इंस्टॉलेशन विफल हो गया, लेकिन फिर LILO को स्थापित करने का विकल्प सफल रहा। मेरे पास 2 साल पुराना लैपटॉप है जो डेबियन स्टेबल चल रहा है। LILO मेरे लिए त्रुटिपूर्ण काम करता है।


1

लिलो अभी भी है प्रयोग करने योग्य, यहां तक कि UEFI BIOS के साथ। यूईएफआई लिनक्स कर्नेल को सीधे लोड कर सकता है, आमतौर पर। हालांकि यह यूईएफआई पर ही निर्भर करता है।

हालाँकि, यदि आपको बूट चयन स्क्रीन की आवश्यकता है, उदाहरण के लिए यदि आप एक मशीन पर कई OS में बूट कर रहे हैं, तो एक छोटा बूटलोडर काम कर सकता है।

मैं इसके बजाय EXTLINUX का उपयोग करने पर विचार करूंगा । यह SYSLINUX का एक प्रकार है, लेकिन यह इन- extपार्टिशन पार्टीशन में रहता है ।

EXTLINUX की सुंदरता यह है कि जबकि यह अधिक विस्तार योग्य है और इसमें LILO की तुलना में कई अधिक विकल्प हैं, यह बस के रूप में सरल हो सकता है, और सक्रिय रूप से बनाए रखा जाता है।


-1 (डिब / ubuntu) कर्नेल पैकेज EFI को अपडेट नहीं करेगा। (ईएफआई एफएस नहीं पढ़ेगा जो सहानुभूति का समर्थन करता है, इसलिए आप मेरे उत्तर का उपयोग नहीं कर सकते हैं)। EXTLINUX के लिए +1 LILO के नए विकल्प के रूप में। आपका लिंक दिखाता है कि यह कई अन्य फाइल सिस्टम का समर्थन करता है जो एक अच्छा संकेत है। EFI समर्थन हालांकि थोड़ा नया लगता है, जहाँ यह आवश्यक है।
sourcejedi

@sourcejedi - आप गलत हैं। एक ईएफआई प्रणाली जिस पर उचित ईएफआई फाइलसिस्टम ड्राइवर लोड किए जाते हैं, आसानी से सहानुभूति को संभाल सकते हैं।
चाटुकार

किसी कारण से, सीधे syslinux.com से लिंक करना निषिद्ध प्रतीत होता है।
पोलीमोन

मुझे पता है, लेकिन एक फाइलसिस्टम ड्राइवर को लोड करने से मुझे ज्यादातर मामलों में कुछ अस्पष्ट लगा। यहां तक ​​कि ड्राइवर और फिर कर्नेल को लोड करने के लिए आपको ईएफआई स्क्रिप्ट (शब्दावली) के कुछ प्रकार स्थापित करने की आवश्यकता होगी। ओह, और मैं शर्त लगाता हूं कि किसी के पास इन ड्राइवरों के लिए एमएस सुरक्षित बूट हस्ताक्षर नहीं हैं, ताकि एक और कीड़ा: पी।
sourcejedi

@sourcejedi - क्या आप मेरे द्वारा लिखे गए उत्तर को पढ़ेंगे? और हाँ - आपको ड्राइवर को लोड करने के कुछ साधनों की आवश्यकता होगी।
मिकसेर्व जूल 27'14

1

मैं किसी भी समकक्ष याद नहीं है update-grub। हालाँकि एक पुरानी प्रणाली है जो अभी भी डेबियन में समर्थित है। (यह मेरे एआरएम सर्वर पर uboot के लिए उपयोग किया जाता है)।

सबसे हाल ही में गिरी के लिए सहानुभूति है /boot/vmlinuzऔर करने के लिए initrd /boot/initrd.img। यह कर्नेल पैकेज द्वारा अपडेट किया गया है। बूट लोडर को उन बिंदुओं पर इंगित किया गया है और प्रत्येक बूट पर सिमिलिंक को dereferences।

इसलिए आपको ठीक होने का विकल्प नहीं मिल सकता है। किसी भी मामले में यह सबसे व्यापक रूप से परीक्षण किया जाने वाला विकल्प नहीं है, इसलिए :-) के आसपास वर्किंग बूट डिस्क रखना और भी अधिक उचित है।


अद्यतन: यदि आपका लक्ष्य आधुनिक कंप्यूटर पर सचमुच LILO चलाने के अलावा कुछ है, तो संभवतः बेहतर विकल्प हैं, जैसा कि अन्य उत्तर (यों) द्वारा वर्णित है :)।

उपरोक्त केवल LILO के मूल BIOS-आधारित संस्करण के लिए समझ में आता है। आधुनिक हार्डवेयर EFI के शीर्ष पर BIOS संगतता प्रदान करता है, यदि आप एक ही मेनू से सुरक्षित बूट या विंडोज 8 बूट नहीं करना चाहते हैं। आप सैद्धांतिक रूप से ELILO काम कर सकते हैं लेकिन यह सुरक्षित बूट या लोडिंग विंडोज 8 का समर्थन नहीं करता है। ELILO अब सामान्य रूप से कोई मतलब नहीं रखता है, इसलिए मेरा अनुमान है कि इसके पीछे कोई समुदाय नहीं है।


ओह। symlinks in / from /bootकिसी भी समस्या का एक गन्दा समाधान है।
चाटुकार

वेल्ड लिलो मर चुका है (और uboot पदावनत) तो हाँ। आपके मन में क्या समस्या है? लोग अभी तक FAT / बूट के लिए उपयोग नहीं कर रहे हैं ... BootLoaderSpec एक अच्छा प्रोजेक्ट है, लेकिन वास्तव में अभी तक नहीं है ... और इसके लिए अच्छा कारण है (बुराई पेटेंट, FLOSS संगत लाइसेंस केवल EFI इंटरोप के लिए दिया गया है)।
sourcejedi

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