USB ड्राइव पर GRUB - OSes जोड़ना


9

कुछ पृष्ठभूमि:

  • एक बड़े पैमाने पर विंडोज पृष्ठभूमि से आ रहा है (हालांकि मैं उबंटू, आदि से परिचित हूं) और इस कार्य को पूरा करने के लिए विंडोज 7 मशीन का उपयोग कर रहा हूं
  • USB ड्राइव के MBR (8 GB FAT32 ड्राइव) पर सफलतापूर्वक GRUB स्थापित किया है:
  • ड्राइव पर एक बुनियादी संरचना बनाई है: / बूट / ग्रब, / बूट / आईएमजी, / बूट / कर्नेल

सवाल:

मेरे पास कुछ बुनियादी, शुरुआती प्रश्न हैं, लेकिन जिन लोगों को मुझे Google / StackExchange, आदि के माध्यम से उत्तर खोजने में परेशानी हुई है।

  • मैं समझता हूं कि / बूट / img / [SystemName] फ़ोल्डर एक विशिष्ट सिस्टम के लिए छवि को संग्रहीत करेगा, जो / बूट / कर्नेल निर्देशिका में संग्रहीत विभिन्न (या समान) संस्करणों का उपयोग कर सकता है (कम से कम, यह है कि मैं कैसे हूं 'इसे स्थापित करना चाहते हैं)
  • हालाँकि, इन प्रणालियों में से अधिकांश में बस उनकी निर्देशिकाओं में एक कर्नेल होता है, जिसे "linux" कहा जाता है (संस्करण को नहीं बताते हुए)। मैं यह पता लगा सकता हूं कि इन सभी का उपयोग किस कर्नेल में किया गया है, लेकिन कर्नेल को स्वयं को बूट / कर्नेल में कॉपी करने के लिए bst जगह क्या है?
  • मैं गुठली प्राप्त करने के बाद, मुझे लगता है कि बाकी ज्यादातर डिवाइस को / boot / img / पर कॉपी कर रहा है और मेनू में उचित प्रविष्टि बना रहा है। सही है? मैं सिस्टम सिस्टम के आधार पर ऐसा कर सकता हूं कि एक बार मुझे गुठली मिल जाए।

सम्पूर्ण लक्ष्य:

मैं एक 8GB यूएसबी फ्लैश ड्राइव बनाने का प्रयास कर रहा हूं जो मुझे GRUB बूट मेनू से कई OS बूट करने की अनुमति देगा। OSes को जोड़ने या घटाने के लिए, मैं केवल उपयुक्त फ़ाइलों को / boot / img / [SystemName] और / boot / कर्नेल फ़ोल्डर को उपयुक्त के रूप में कॉपी करना चाहूंगा और फिर menu.lst फ़ाइल को संपादित कर सकता हूं। इसलिए, यह पहला कदम उन गुठली को खोजने के बारे में है, जो इनमें से कई OSes साझा करते हैं, जैसा कि मैं दोहराव को कम करने की उम्मीद कर रहा हूं।


और कर्नेल जोड़ने के बाद आप क्या करना चाहते हैं? क्या आप एक ऐसा कार्यशील ओएस चाहते हैं जिससे आप बूट कर सकें?
फुनेहे

@ धन्यवाद, धन्यवाद! मैंने अपना संपूर्ण लक्ष्य शामिल करने के लिए पोस्ट अपडेट कर दी है।
सीनकेलेन 11

ऐसा लगता है कि आप USB ड्राइव पर विभिन्न वितरणों के लिए LiveCD छवियों को डंप करने की कोशिश कर रहे हैं और फिर उन्हें बूट करने में सक्षम हो सकते हैं। क्या ये सही है?
वोडिन

@Wodin: अनिवार्य रूप से, हाँ। लाइवसीडी (लेकिन लेखन क्षमता के साथ चूंकि यह लेखन योग्य मीडिया पर होगा), उन सभी डिस्ट्रो / टूल के लिए एक एकीकृत बूट लोडर के साथ जो मैं चाहता हूं।
सीनकेलेन

जवाबों:


4

आप जो हासिल करने की कोशिश कर रहे हैं वह बूट तकनीक को बढ़ा रहा है :) हालांकि मुझे लगता है कि यह संभव है, हालांकि मैं पूरी तरह से चलने-फिरने के लिए जानकार नहीं हूं।

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

मैं GRUB4DOS को बूटलोडर के रूप में उपयोग करने की सलाह दूंगा। इस लिंक को देखें कि इसे USB के साथ कैसे उपयोग किया जाए (क्योंकि इसमें find --set root - कमांड है, जो महत्वपूर्ण है अगर आपके पास USB जैसा मोबाइल डिवाइस है)।

फिर आपको यह तय करना होगा कि आप कितने विभाजन का उपयोग करेंगे। मानक "पूर्ण इंस्टॉल" हमेशा एक ही विभाजन में होता है। इसलिए यदि आपके पास 8 जीबी की यूएसबी स्टिक है और 4 जीबी पार्टीशन (जो न्यूनतम इंस्टॉलेशन की अनुमति देता है) लें तो आप डेबियन या फेडोरा जैसे मुख्य डिस्ट्रोस के 2 अलग "फुल इंस्टॉल" तक सीमित रहेंगे।

हालांकि, कुछ छोटे और विशेष लिनक्स वितरण हैं। उदाहरण के लिए "पिल्ला लिनक्स" बहुत छोटा है और इसमें एक विशेष "मितव्ययी स्थापना" मोड है। यह कई स्वादों में आता है (उदाहरण के लिए MacPup है जिसमें Apple को डेस्कटॉप, या Fatdog64 जो 64-बिट लिनक्स है) को लागू करने की कोशिश करता है।

इस "मितव्ययी स्थापना" मोड में यह सिर्फ 1 निर्देशिका का उपयोग करता है और इसे हार्डडिस्क (या यूएसबी) पर मौजूदा लिनक्स या विंडोज के समानांतर में स्थापित किया जा सकता है। मुझे यकीन है कि अन्य वितरण भी हैं जो समान मोड का समर्थन करते हैं।

चूंकि पिल्ला लिनक्स छोटा है (<150 एमबी) और यह मानते हुए कि आप प्रत्येक इंस्टॉलेशन (512 एमबी) के लिए एक छोटी सी बचत करते हैं, तो आप आसानी से यूएसबी स्टिक पर 10 अलग-अलग ऑपरेटिंग सिस्टम की तरह इंस्टॉल कर सकते हैं। यहां तक ​​कि छोटे लिनक्स (स्लिटाज़, टिनिकोर) भी हैं, जिनका आप उपयोग कर सकते हैं।

उदाहरण के लिए, मैं अपने वर्तमान पीसी-इंस्टॉलेशन से menu.lst (GRUB4DOS) फ़ाइल संलग्न करता हूं, पहले 8 प्रविष्टियां hd0,2 (यानी 1 हार्डडिस्क पर तीसरा विभाजन) पर सभी अलग-अलग पिल्ला लिनक्स इंस्टॉलेशन हैं, फिर एक न्यूनतम है एक छोटे से अतिरिक्त विभाजन में डेबियन स्थापना और मूल विंडोज-एक्सपी।

timeout=10
default=0  

  title Linux Buero (on /dev/sda3)
  root (hd0,2)
  kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
  initrd /puppy431-de/initrd.gz

  title Live CD build (on /dev/sda3)
  root (hd0,2)
  kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
  initrd /puppylivecdbuild/initrd.gz

  title sage developement(on /dev/sda3)
  root (hd0,2)
  kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
  initrd /Sage46dev/initrd.gz

  title sage developement test and fun
  root (hd0,2)
  kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
  initrd /Sage-test/initrd.gz

  title Lupq 511
  find --set-root --ignore-floppies /lupq511/initrd.gz
  kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupq511/initrd.gz 

  title Lupu 520 - New kid on the block
  find --set-root --ignore-floppies /lupu-520/initrd.gz
  kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupu-520/initrd.gz 

  title wary beta (on /dev/sda3)
  root (hd0,2)
  kernel /wary/vmlinuz psubdir=wary ro vga=normal
  initrd /wary/initrd.gz

  title spup (on /dev/sda3)
  root (hd0,2)
  kernel /spup/vmlinuz psubdir=spup ro vga=normal
  initrd /spup/initrd.gz

  title Debian (on /dev/sda2)
  find --set-root --ignore-floppies /initrd.img
  kernel /vmlinuz root=/dev/sda2 ro
  initrd /initrd.img

  title Windows NT/2K/XP\nStart Windows if installed on HDD
  fallback 7
  find --set-root --ignore-floppies /ntldr
  chainloader /ntldr

boot

find --set-root --ignore-floppies /lupq511/initrd.gz यदि आप USB का उपयोग करते हैं, तो आपके USB पर मेनू .stst समान दिख सकता है, GRUB4DOS कमांड (सभी ड्राइव्स में इस फ़ाइल के लिए दिखता है) बहुत उपयोगी हो सकता है।

उपरोक्त जानकारी के साथ आपके मूल प्रश्नों पर कुछ टिप्पणियाँ:

Q: * मैं समझता हूं कि / बूट / img / [SystemName] फ़ोल्डर एक विशिष्ट सिस्टम के लिए छवि को संग्रहीत करेगा, जो कि / boot / कर्नेल निर्देशिका (कम से कम) में संग्रहीत लिनक्स कर्नेल के विभिन्न (या समान) संस्करणों का उपयोग कर सकता है। मैं इसे कैसे सेट करना चाहूंगा)

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

Q: * हालांकि, इनमें से अधिकांश सिस्टम में बस उनकी निर्देशिकाओं में एक कर्नेल होता है, जिसे "linux" कहा जाता है (संस्करण को बताते हुए नहीं)। मैं यह पता लगा सकता हूं कि ये सभी कर्नेल कौन से उपयोग करते हैं, लेकिन क्या कर्नेल को खुद को कॉपी / बूट / कर्नेल करने के लिए सबसे अच्छी जगह है?

एक: मुझे लगता है कि गुठली बिल्कुल वहीं जाना चाहिए जहां वितरण उनके पास आम तौर पर होता है। उन्हें एक अलग / बूट / कर्नेल फ़ोल्डर में संग्रहीत करने की आवश्यकता नहीं है, और मैं उन्हें वितरण के बीच साझा करने का प्रयास करने की भी सिफारिश नहीं करूंगा। स्टोरेज स्पेस एक कर्नेल के लिए न्यूनतम है (जैसे 2-3 एमबी)। वास्तव में बहुत सारे संस्करण और उप-संस्करण हैं और कभी-कभी वितरण की गुठली पर लागू विशिष्ट पैच भी होते हैं। एक अलग / अनुपयोगी कर्नेल में प्लगइन करने के लिए एक अनावश्यक प्रयोग है।

प्रश्न: * मुझे गुठली मिलने के बाद, मैं कल्पना करता हूं कि बाकी ज्यादातर डिवाइस को / boot / img / पर कॉपी कर रहे हैं और मेनू में उचित प्रविष्टि बना रहे हैं। सही है? मैं सिस्टम सिस्टम के आधार पर ऐसा कर सकता हूं कि एक बार मुझे गुठली मिल जाए।

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

एक अंतिम विचार। यदि आप अलग-अलग विभाजनों का उपयोग नहीं करना चाहते हैं, तो आप कुछ ऐसा प्रयास कर सकते हैं जैसे "WUBI" अपने स्वयं के विभाजन के लिए पूर्ण इंस्टॉल की मांग करने वाले विकृतियों के लिए इंस्टॉल करता है। इसका मतलब है कि आप USB पर अपने स्वयं के ext2 / ext3 फाइल सिस्टम के साथ बड़ी फाइलें बनाते हैं, फिर उन्हें "ड्राइव" के रूप में माउंट करें और इसमें ओएस स्थापित करें। (मैं इसे WUBI कहता हूं, क्योंकि यह सबसे अच्छा ज्ञात अनुप्रयोग है)।

निम्नलिखित एक "Wubi स्थापित" बूट करने के लिए एक Grub4dos menu.lst प्रविष्टि होना चाहिए।

# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot

से यहाँ

आप देखते हैं, 2 "सेट रूट" कमांड हैं, दूसरे के बाद "root.disk" जिसमें लिनक्स शामिल है, को लूप 0 के रूप में माउंट किया गया है।

मुझे उम्मीद है कि मैं कुछ विचार दे सकता हूं, हालांकि यह पूरी तरह से नहीं है।


क्षमा करें, मुझे वूबी गलत के लिए ग्रब प्रविष्टि का दूसरा लिंक मिला (क्योंकि यह मेरी पहली पोस्ट है मेरा दूसरा लिंक "स्पैम-संरक्षित" था)। सही लिंक है: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil

1

यहाँ दो गाइड हैं:

  • एकता लिनक्स फोरम में एक गाइड
  • और PClos में एक और

मुझे लगता है कि दोनों प्रत्येक कर्नेल के लिए अलग-अलग विभाजन का उपयोग करते हैं।

" /Boot/grub/menu.lst " में प्रविष्टियाँ इस प्रकार हैं:

title Unity-2010 -- With Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010 changes_dev=LABEL=Unity-2010 acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

title Unity-2010 -- No Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010  acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

0

यह वास्तव में इस बात पर निर्भर करता है कि आप वहां किन विकृतियों को डाल रहे हैं। उनमें से कुछ initramfs में कुछ गंदा सामान करते हैं इसलिए यह मुश्किल हो जाता है। कुछ लाइव डिस्ट्रोस एक लेबल के लिए खोज करते हैं, कुछ यूआईडी के लिए खोज करते हैं। आप वह प्रदान नहीं कर सकते।

समाधान आसान नहीं है, आपको अपने लाइव डिस्ट्रो के लिए नए अनुकूलित रामदिस्क का निर्माण करना चाहिए।

मुझे आशा है कि मुझे यह गलत नहीं लगा: D


0

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

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