चेनलोड दो Grub2 स्थापना


14

यह वास्तव में मुझे कम कर रहा है। मेरे पास Gentoo के साथ Gentoo और Ubuntu दोनों हैं। जेंटू का एक समर्पित /bootविभाजन है, जबकि उबंटू नहीं है। मेरे पास menuentryGentoo में /etc/grub.d/40_customबूट करने के लिए Ubuntu है (और Ubuntu बूट ठीक करता है)।

क्योंकि उबंटू ग्रुब के साथ आता है, मैं अपनी प्रविष्टि को बनाए रखने के बजाय उस पर चेनलोड करना चाहता हूं, जो रूट, कर्नेल, initrd और सामान सेट करता है। यह वही है जो मेरे पास चेनलोडर के लिए है (उबंटू चालू है /dev/sda4और मैंने वहां ग्रब पहले ही स्थापित कर दिया है):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

यह मुझे दे रहा है error: Invalid signatureऔर मुझे कोई समाधान उपलब्ध नहीं मिला। क्या कोई कुछ बता सकता है?

इसी का परिणाम है </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

इसी का परिणाम है fdisk -l/dev/sda1है /bootGentoo की, Gentoo में है /dev/sda2उबंटू में है, /dev/sda4। उबंटू /bootमें /dev/sda4भी है।

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

के साथ कोई त्रुटि नहीं है grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

स्पष्ट रूप से आपने बूटलोडर स्थापित नहीं किया है /dev/sda4। क्या आपके पास एक से अधिक डिस्क हैं? आपकी विभाजन तालिका क्या है? कृपया fdisk -lऔर से संदेशों का आउटपुट पोस्ट करें grub-install /dev/sda4 --no-floppy --force
गिल्स एसओ- बुराई को रोकें '

हां, मैंने इस सवाल को अद्यतन किया
phunehehe

जवाबों:


4

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

मैं यह कोशिश करूँगा, हालांकि यह Ubuntu से GRUB2 का उपयोग नहीं कर रहा है (बस यह कॉन्फ़िगरेशन फ़ाइल है)। आप Gentoo GRUB2 कॉन्फ़िगरेशन फ़ाइल में एक मेनू प्रविष्टि बना सकते हैं जो उबंटू कॉन्फ़िगरेशन फ़ाइल को लोड करता है। ऐसा करने के दो तरीके हैं।

मैं जो भी उपयोग करता हूं वह सामान्य कमांड के साथ होता है , जो आपको सामान्य मोड के लिए लोड करने के लिए एक कॉन्फ़िगर फ़ाइल निर्दिष्ट करने की अनुमति देता है। यदि आप इस मार्ग पर जाते हैं, तो normal_exit नामक एक कमांड है जिसे आप अपने Ubuntu कॉन्फ़िगरेशन में एक कस्टम आइटम के रूप में जोड़ सकते हैं जो आपको अपने Gentoo कॉन्फ़िगरेशन में वापस आने की अनुमति देगा।

अन्य विकल्प configfile कमांड है, जो आपको लोड करने के लिए एक वैकल्पिक कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करने देता है। ऐसा लगता है कि हालांकि इस विकल्प का "बैक आउट" करना कठिन होगा।

इन आदेशों के बारे में अधिक जानकारी यहां पाई जा सकती है


3

बूट अप प्रक्रिया के शुरुआती भाग में हार्ड ड्राइव के पहले सेक्टर से लोडिंग कोड होता है, जिसे मास्टर बूट रिकॉर्ड (MBR) कहा जाता है । आम तौर पर, ग्रब को इस पहले हार्ड ड्राइव सेक्टर में लिखा गया है, कि विभाजन होल्डिंग / बूट के पहले सेक्टर में। हालाँकि, आप सामान्य रूप से लिनक्स इंस्टाल के दौरान इसे बदल सकते हैं लेकिन आधुनिक इंस्टॉलेशन रूटीन में, यह अक्सर छिपा रहता है।

आप कहते हैं कि आपने Grub को / dev / sda4 में संस्थापित किया है, हालाँकि आपका कॉन्फिगरेशन सही है और आपके द्वारा पोस्ट किया गया त्रुटि संदेश बताता है, कि ग्रब उस पार्टीशन में ठीक से स्थापित नहीं हो सकता है जिसे आप चेनलोड करना चाहते हैं। आपको जेंटू में बूट करना चाहिए, फिर उबंटू विभाजन में चुरोट करना चाहिए। सुनिश्चित करें कि / बूट अब उबंटू- / बूट को सही ढंग से इंगित करता है और जेंटू को नहीं! अब ग्रब 2 को उबंटू-विभाजन / देव / sda4 के पहले सेक्टर में स्थापित करें grub-install /dev/sda4 --no-floppy:।

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


अगर मैं उबंटू में बूट करता हूं और ग्रब-इंस्टॉल चलाता हूं तो क्या इससे कोई फर्क पड़ता है? क्योंकि मैंने यही किया है और यह काम नहीं करता है :(
phunehehe

मुझे लगा कि आप उबंटू में बूट नहीं कर सकते क्योंकि चेनलोडिंग काम नहीं करता है? लेकिन नहीं, अगर आप उबंटू में बूट करते हैं या उसमें चुरोट करते हैं तो इससे कोई फर्क नहीं पड़ना चाहिए।
fschmitt

@phunehehe: त्रुटि संदेश का अर्थ है कि ग्रब ने पहले सेक्टर में बूट लोडर हस्ताक्षर नहीं पाया है /dev/sda4(अंतिम दो बाइट्स होने चाहिए 0x55 0xaa)। क्या आप का आउटपुट पोस्ट कर सकते हैं </dev/sda4 head -c 512 | hd?
गिल्स एसओ- बुराई को रोकना '

@ गिल्स: मैंने सवाल का परिणाम जोड़ दिया। क्या यह सही नहीं लगता है?
फन्नेहे

वास्तव में मुझे भागना होगा grub-install /dev/sda4 --no-floppy --force, अन्यथा
ब्लॉकबेलिस्ट्स के

-1

क्या sda4 ग्रब में (HD0,3) नहीं है, या ग्रब 2 में इस तरह की चीज़ बदल गई है?


हाँ, मुझे यकीन है कि / देव / sda4 बन जाएगा (hd0,4) क्योंकि मैं उबंटू बूट करने के लिए उपयोग कर रहा हूं
phunehehe

3
जी हां, ग्रब 0.97 ने हार्डडिस्क और पार्टिशन की गिनती 0. के साथ शुरू कर दी है। ग्रब 2 अभी भी 0 के साथ डिस्क की गिनती शुरू करता है, लेकिन 1. के साथ पार्टिशन की गिनती शुरू करता है। इसलिए ग्रब 0.97 में एचडी / एसडी 4 है और ग्रैब 2 में एचडी .04 है।
fschmitt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.